当尝试使用 Sympy 计算函数 f(x) 时,最终输出似乎将 sin(n * pi) 和 cos (n * pi) 保留为符号形式,但不会将它们计算为 0 和 (-1)当 n 定义为正整数时,分别为 ^n。然而,Symbolab 似乎能够执行上述行为。
有没有办法获得与Symbolab类似的Sympy求值表达式?
在 Sympy 中生成行为的最小示例
# Load libraries
import sympy as sp
from sympy import*
from IPython.display import display
init_printing()
# To turn off bugging warnings
import warnings
warnings.filterwarnings('ignore')
x,L,pi = symbols('x, L, pi', real = True, positive = true)
n = symbols('n', positive = True, integer=True)
a_n_x = 2/L
a_n_in = x * cos((n*pi*x)/L)
display(a_n_in)
a_n = a_n_x * integrate(a_n_in, (x,0,2))
display(a_n)
a_n = a_n.subs(L,2)
display(a_n)
最佳答案
问题出在这一行:
x,L,pi = symbols('x, L, pi', real = True, positive = true)
这将 pi
定义为正实数变量,因此它的处理方式就像任何其他正实数变量一样 - 特别是 sin(n * pi)
和cos(n * pi)
无法简化,不能比 sin(n * x)
或 cos(n * x)
更简化。您将其命名为 pi
并不重要。
要修复此问题,请使用 sympy
模块本身中定义的符号 pi
,SymPy 将其理解为常量 π。这已经在 from sympy import *
行中导入,因此您只需不要将其替换为您自己的变量即可。
关于python - 当 n 定义为正整数时,为什么 sympy 不计算 sin(n* pi) = 0 和 cos(n * pi) = (-1)^n ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70227389/