我正在尝试计算 sympy 中
cos(n*theta)
的定积分。下面是代码片段。
import sympy as sp
theta = sp.symbols('theta')
n = sp.symbols('n', integer=True, nonnegative=True)
integrand = sp.cos(n*theta)
integral = sp.integrate(integrand, (theta, 0, 2*sp.pi))
print(integral)
print(integral.subs(n,0))
脚本的输出是:
Piecewise((0, Ne(n, 0)), (2*pi, True))
2*pi
这里,当
integral
对于任何整数 n
直接为零时,sympy 会错误地将积分计算为分段函数。然后替换 n=0
后,它给出一个非零答案。我希望对于 integral
的任何整数值,n
都为零。怎么办?
问题说:
我希望对于 n 的任何整数值,积分都为零
n = 0
的积分不为零,因此无论您想要其他值,SymPy 返回的结果在数学上都是正确的。
如果您想排除
n = 0
情况,那么您可以将 n
声明为非零或正数而不是非负数:
In [8]: n = symbols('n', integer=True, nonzero=True)
In [9]: integrate(cos(n*theta), (theta, 0, 2*pi))
Out[9]: 0