【发布时间】:2017-04-03 12:21:19
【问题描述】:
假设我有一个函数,比如说f(x)。
对于给定的 x 限制,我如何编写此函数的乘积或总和。
例如f 的乘积为x=1 直到x=5
f(1)*f(2)*f(3)*f(4)*f(5)
另外,我需要计算总和/双倍总和。
考虑f(x,y) 和 x 从 1 到 3 和 y 从 0 到 x-1 的总和。
如果用mathematica编写,它会是这样的:
Sum[f[x, y], {x, 1, 3}, {y, 0, x - 1}]
输出将是这个
f[1, 0] + f[2, 0] + f[2, 1] + f[3, 0] + f[3, 1] + f[3, 2]
为简单起见,未定义f。
编辑:按要求提供示例:
f <- function (x,y) {
x + 2*y
}
计算 x 从 1 到 3 和 y 从 0 到 x-1 的总和。 (这等于 22 btw)
【问题讨论】:
-
请展示一个可重现的例子
-
请定义
f。如果f是矢量化的,你可以简单地做sum(f(1:5))。如果不是,您可以对其进行矢量化或使用 for 循环。 -
@Vandenman 为了简单起见,我们说
f <- function(x) { x+x^2} -
那个函数是矢量化的,所以你可以做
f <- function(x) x + x^2; sum(f(1:5))。 -
好的,但是 product 或 double sum 怎么样,其中一个变量是基于另一个变量定义的,如我的问题所示。让我们考虑一下:
f <- function (x,y) { x + 2*y }我需要计算 x 从 1 到 3 和 y 从 0 到 x-1 的总和。 (这等于 22 btw)