求和中的符号 [sympy]

发布于 2024-12-11 23:48:09 字数 663 浏览 0 评论 0原文

例如,我想解决


<子>(来源:texify.com)

这是我的尝试过:

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.

For example, I'd like to solve


(source: texify.com)

Here's what I tried:

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.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

离线来电— 2024-12-18 23:48:09

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]

您仍然需要忽略复杂的结果。

Python's built-in range() function isn't aware of symbolic evaluation. Try using SymPy's sum() function instead:

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

Note that the lambda expression might be unnecessary, depending on you actually want to achieve:

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

You'll still have to ignore the complex results.

爱*していゐ 2024-12-18 23:48:09

尝试求和函数

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]

Try the summation function

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]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文