如何用辛函数求母函数的第n项?

2024-10-04 05:29:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个有理函数:f(x) = P(x)/Q(x)。 例如:

f(x) = (5x + 3)/(1-x^2)

因为f(x)是一个生成函数,它可以写成:

f(x) = a0 + a1*x + a2*x² + ... + a_n*x^n + ... = P(x)/Q(x)

如何使用sympy找到生成函数f(x)(即a_n)的nth项?你知道吗

如果Sympy中没有这样的实现,我也很想知道是否在其他包中实现了这个功能,比如Maxima。你知道吗

谢谢你的帮助。你知道吗


Tags: 函数功能a2a1a0sympynthmaxima
3条回答

你可以取第k个导数,用0代替x,然后除以factorial(k)

>>> f = (5*x + 3) / (1-x**2)
>>> f.diff(x, 20).subs(x, 0)/factorial(20)
3

参考文献here讨论了有理生成函数。寻找一个重复,你可以很快看到模式使用分化:

[f.diff(x,i).subs(x,0)/factorial(i) for i in range(6)]
[3, 5, 3, 5, 3, 5]

最大值:

powerseries((5*x+3)/(1-x^2),x,0);

退货

powerseries_maxima_result

使用part提取生成器:

part(''%,1);
(4-(-1)^i1)x^i1

coeff得到系数:

a(i1) := coeff(''%, x, i1);
[a(0), a(1), a(2)];
[3, 5, 3]

为了得到有理形式母函数a_n的一般公式,可以使用SymPy的^{}。 例如:

from sympy import simplify
from sympy.abc import x, n
from sympy.series.formal import rational_algorithm

f = (5*x + 3)/(1-x**2)
func_n, independent_term, order = rational_algorithm(f, x, n, full=True)
print(f"The general formula for a_n is {func_n}")
for k in range(10):
    print(f"a_{k} = {simplify(func_n.subs(n, k))}")

输出:

The general formula for a_n is (-1)**(-n - 1) + 4
a_0 = 3
a_1 = 5
a_2 = 3
a_3 = 5
a_4 = 3
a_5 = 5
a_6 = 3
a_7 = 5
a_8 = 3
a_9 = 5

相关问题 更多 >