'Interpreting formulas with ΣΣ (two sigma) in Python

Consider the function f(x,y) that equals two sigma (ΣΣ) where i ranges from 1 to 10 and (first sigma) and j ranges from 1 to 10 (second sigma) of the quantity {ix^2 + jy^3)

I believe the first sigma would be an inner loop and the second sigma an outer loop, but I am having trouble rewriting this into Python.

How can I convert this into Python?

Please click to see the mathematical expression. I cannot embed



Solution 1:[1]

I'm no mathematician, but as far as I could tell, that would translate to

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)
    )

or written out as for loops,

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

Solution 2:[2]

The mathematical formula can be rewritten without summation, leading to this simple function:

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

Here is how it is derived:

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

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

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

Using triangular number formula:

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

      = 550(?² + ?³)

Solution 3:[3]

The first answer's approaches all work. Often the "pythonic" approach is to define a list comprehension before using sum so another approach would be:

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

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 AKX
Solution 2
Solution 3 Souperman