python - 当 n 定义为正整数时,为什么 sympy 不计算 sin(n* pi) = 0 和 cos(n * pi) = (-1)^n ?

标签 python sympy symbolic-math

当尝试使用 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/

相关文章:

python - Pandas,如果列为空,则用 A 列替换,否则使用 B 列

python - django:我们可以做 loader.get_template ('my_template.txt' )吗?

python - python中大数组的计算

python - Sympy 计算逆拉普拉斯变换

python - 在 Python 2.6 中,如何将列表对象传递给需要参数列表的方法?

python - 如何在 python 中部分加载用 numpy save 保存的数组

python - 对非数字类型的符号操作

python - 在Python中声明多个符号变量

python - 在 sympy 中对符号表达式进行 lambdifying 时覆盖除法运算符

javascript - JS 正则表达式不匹配,即使它与正则表达式测试器一起工作