用 Python 中的 ΣΣ(二西格玛)解释公式

Interpreting formulas with ΣΣ (two sigma) in Python

考虑等于两个西格玛 (ΣΣ) 的函数 f(x,y),其中 i 范围从 1 到 10 和(第一个西格玛)和 j 范围为数量 {ix^2 + jy^3)

的 1 到 10(第二个西格玛)

我相信第一个 sigma 是一个内循环,第二个 sigma 是一个外循环,但我无法将其重写为 Python。

如何将其转换为 Python?

我不是数学家,但据我所知,这可以转化为

def f(x, y):
    return sum(
        sum(
            i * x ** 2 + j * y ** 3
            for j in range(1, 11)
        )
        for i in range(1, 11)
    )

或者写成for循环,

def f(x, y):
    value = 0
    for i in range(1, 11):
        for j in range(1, 11):
            value += i * x ** 2 + j * y ** 3
    return value

第一个答案的方法都有效。通常“pythonic”方法是在使用 sum 之前定义列表理解,所以另一种方法是:

def f(x, y):
    return sum([(i * x ** 2 + j * y ** 3) for i in range(1,11) for j in range(1, 11)]);

不用求和就可以重写数学公式,得到这个简单的函数:

def f(x, y):
    return 550 * (x * x  + y * y * y)

这是它的推导方式:

=1..10=1..10² + ³

= 10∑=1..10² + 10∑=1。 .10³

= 10²∑=1..10 + 10³∑=1.. 10

使用triangular number formula

= 10²(10⋅11)/2 + 10³(10⋅11)/2

= 550(² + ³)