用途和当前限制#
整合#
可以通过以下步骤使用完整函数进行积分:
将被积函数转换为完整函数。
现在整合函数的完整表示。
将积分转换回表达式。
实例#
>>> from sympy.abc import x, a
>>> from sympy import sin
>>> from sympy.holonomic import expr_to_holonomic
>>> expr_to_holonomic(1/(x**2+a), x).integrate(x).to_expr()
atan(x/sqrt(a))/sqrt(a)
>>> expr_to_holonomic(sin(x)/x).integrate(x).to_expr()
Si(x)
正如您在第一个示例中看到的,我们将函数转换为完整函数,整合结果,然后再转换回符号表达式。
局限性#
1转换为表达式并不总是可能的。完整函数应具有超几何级数 x0
.
2转换为完整序列的实现目前不支持 Frobenius method
当解决方案需要 \(\log\) 条款。当指数方程的至少一对根相差一个整数,并且frobenius方法得到线性相关的级数解时,就会发生这种情况。因为我们在转换为表达式时使用这个,有时 to_expr()
失败。
三。似乎没有一种计算不定积分的方法,所以 integrate()
基本上是计算 \(\int_{{x_0}}^{{x}} f(x)dx\) 如果没有给出限制,在哪里 \(x_0\) 被积函数初始条件的存储点。有时这会在结果中给出一个额外的常数。例如:
>>> expr_to_holonomic(sin(x)).integrate(x).to_expr()
1 - cos(x)
>>> sin(x).integrate(x)
-cos(x)
的不定积分 \(\sin(x)\) 是 \(-\cos(x)\) . 但结果是 \(-\cos(x) + 1\) 哪个是 \(\int_{{0}}^{{x}} sin(x)dx\) . 虽然两者都被认为是正确的但是 \(-\cos(x)\) 更简单。