Sympy 不会计算这个积分
Sympy will not compute this integral
我正在尝试 运行 sympy 中的以下示例
import sympy as sp
from sympy.parsing.sympy_parser import parse_expr
n, L, x = sp.symbols('n L x')
sp.integrate(sp.cos(sp.pi*x/L)**2, (x, -L/2, L/2))
由于某种原因,它实际上并没有解决这个积分问题。它只是打印出原始积分。
>>> sp.integrate(sp.cos(sp.pi*x/L)**2, (x, -L/2, L/2))
L
-
2
/
|
| 2/pi*x\
| cos |----| dx
| \ L /
|
/
-L
---
2
这似乎有点烦人,但 sympy 没有评估积分,因为它对 L
了解不够。具体来说,它为 L=0
的可能性敞开了大门,这将对您的被积函数造成严重破坏。为了克服这个问题,我们只需要通知 sympy L
不为零。最简单的方法是在实例化期间将参数传递给 symbols
:
import sympy as sp
n, x = sp.symbols('n x')
L = sp.symbols('L', nonzero=True)
sp.integrate(sp.cos(sp.pi*x/L)**2, (x, -L/2, L/2))
#>>> L/2
我正在尝试 运行 sympy 中的以下示例
import sympy as sp
from sympy.parsing.sympy_parser import parse_expr
n, L, x = sp.symbols('n L x')
sp.integrate(sp.cos(sp.pi*x/L)**2, (x, -L/2, L/2))
由于某种原因,它实际上并没有解决这个积分问题。它只是打印出原始积分。
>>> sp.integrate(sp.cos(sp.pi*x/L)**2, (x, -L/2, L/2))
L
-
2
/
|
| 2/pi*x\
| cos |----| dx
| \ L /
|
/
-L
---
2
这似乎有点烦人,但 sympy 没有评估积分,因为它对 L
了解不够。具体来说,它为 L=0
的可能性敞开了大门,这将对您的被积函数造成严重破坏。为了克服这个问题,我们只需要通知 sympy L
不为零。最简单的方法是在实例化期间将参数传递给 symbols
:
import sympy as sp
n, x = sp.symbols('n x')
L = sp.symbols('L', nonzero=True)
sp.integrate(sp.cos(sp.pi*x/L)**2, (x, -L/2, L/2))
#>>> L/2