'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?
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 |