Python 求和符号[符号]

Python 求和符号[符号],python,sympy,Python,Sympy,例如,我想解决 (来源:) 以下是我尝试过的: from sympy import var, solve x = var('x') f = lambda N: sum( n**2 for n in range(1,N+1) ) f(x) # output: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin&g

例如,我想解决


(来源:)

以下是我尝试过的:

from sympy import var, solve
x = var('x')
f = lambda N: sum( n**2 for n in range(1,N+1) )
f(x)

# output:
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 1, in <lambda>
TypeError: range() integer end argument expected, got Add.
从sympy导入变量,求解
x=var('x')
f=λN:总和(N**2表示范围(1,N+1)内的N)
f(x)
#输出:
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“”,第1行,在
TypeError:应为range()整数结束参数,已获得Add。

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]

您仍然必须忽略复杂的结果。

尝试求和函数

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]

@对不起,我的回答有点错
Sum()
似乎是用于数值计算的
sympy.Sum()
是用于符号计算的。这只是事后的想法。有没有一种方法可以将求和函数
f(N)=∑N²
用于数值计算[如f(3)]和求解方程[如f(N)=55]?我必须定义两个函数吗?一个使用
sum
,另一个使用
sympy.sum
?我在前面的评论中提到的两个函数是
sympy.sum()
sympy.sum()
。不要将它们与内置函数
sum()
混淆。要对符号和进行数值计算,请使用symphy表达式的
subs()
方法,例如
sum(n**2,(n,1,n)).subs(n,5)
。这正是我要寻找的。如果有人无意中发现,在Symphy中,
sum
已重命名为
summation
,以避免与Python内置代码冲突。您需要首先从
symphy
导入
Symbol
summation
。或者只使用
importsympy;象征符号;同向求和