2011-10-27 68 views

回答

5

Python的內置range()功能並不知道的象徵性評估。嘗試使用SymPy的sum()函數:

>>> from sympy import sum, var, solve 
>>> x = var('x') 
>>> f = lambda N: sum(n**2, (n, 1, N)) 
>>> n = var("n") 
>>> f(x) 
x/6 + x**2/2 + x**3/3 

注意lambda表達式可能是不必要的,這取決於你真正想實現:

>>> N = var("N") 
>>> solve(sum(n**2, (n, 1, N)) - 55, N) 
[-13/4 - I*359**(1/2)/4, 5, -13/4 + I*359**(1/2)/4] 

你還是要忽略複雜的結果。

+0

'Sum'工作,但'解決(F(X)-55,X)'沒有工作。 – weis26

+0

@ weis26:對不起,我的回答有點不對。 'Sum()'似乎用於數值評估'sympy.sum()'用於符號評估。 –

+0

是的,它非常完美! – weis26

3

嘗試求和函數

In [1]: n = Symbol('n', real=True) 

In [2]: N = Symbol('N', real=True) 

In [3]: summation(n**2, (n, 1, N)) # sum n**2 taking n from 1 to N 
Out[3]: 
3 2  
N N N 
── + ── + ─ 
3 2 6 

In [4]: solve(summation(n**2, (n, 1, N)) - 55, N) 
Out[4]: [5] 
+0

您需要首先從'sympy'導入'Symbol'和'summation'。 或者只使用'import sympy; sympy.Symbol; sympy.summation' – nexayq