常见三角函数的sympy定积分无法按预期工作

问题描述 投票:0回答:1

我正在尝试计算 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
都为零。怎么办?

python sympy
1个回答
0
投票

问题说:

我希望对于 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
© www.soinside.com 2019 - 2024. All rights reserved.