r - 无循环求和
问题描述
我有以下双重求和: ∑10,i=1 ∑i,j=1 (i^5/(10+j^i))
我对这个练习很迷茫,我尝试了以下代码,但它返回了一个错误,尽管给了我一个数字 - 很确定它不正确。任何帮助都非常有价值!
i <- seq(1, 10, 1)
j <- seq(1, i, 1)
denominators <- 10+j^i
fractions <- (i^5)/denominators
sum(fractions)
或者
i = rep(1:10, each=5)
j = rep(i, 10)
sum(i^5/(10+j^i))
解决方案
做一个内部和的函数:
f <- Vectorize(function(i) {
j <- 1:i
sum(i^5 / (10 + j^i))
})
通过对其进行矢量化,您可以将其应用于数组,它将在其中逐个组件地操作:这就是i的外部总和所说的。因此,值为
sum(f(1:10))
另一种解决方案是浪费 RAM 并且速度稍慢,它利用外积来计算一个矩阵中双和的所有项。您必须提取j
不超过的条款i
:
n <- 10
x <- outer(1:n, 1:n, function(i,j) i^5 / (10 + j^i))
sum(x[!upper.tri(x)])
但是,由于它的紧凑性和简单性,它是一种很好的技术。
推荐阅读
- laravel - Laravel - 从表单生成 PDF,还包括用户的签名
- graphql - GraphiQL - 上传文件
- regex - Python - 每次在字符串中找到模式时如何添加新行?
- c++ - 初始化 C 数组的引用成员不要在 Visual Studio 2015 上编译
- kubernetes - 为数据科学/机器学习任务设置多用户作业调度程序
- javascript - JavaScript 只允许用户点击一次
- awk - 从前 N 个字符中获取唯一值
- ruby-on-rails - Rails 每当 rake 中止!PG::ConnectionBad: fe_sendauth: 未提供密码
- c++ - 不将函数的返回值分配给变量的含义
- .net-core - Dot net core web API url 尝试通过 ajax 调用使用互联网