关于无穷大的函数的级数展开 - 如何将级数的 return 系数作为 Matlab 数组?

Series expansion of a function about infinity - how to return coefficients of series as a Matlab array?

此问题与 相关。再次假设以下代码:

syms x
f = 1/(x^2+4*x+9)

现在 taylor 允许函数 f 展开无限:

ts = taylor(f,x,inf,'Order',100)

但是下面的代码

c = coeffs(ts)

产生错误,因为该级数不包含 x 的正幂(它包含 x 的负幂)。

在这种情况下,应该使用什么代码?

taylor 的输出不是多元多项式,因此 coeffs 在这种情况下不起作用。您可以尝试的一件事是使用 collect(使用 simplify 可能会得到相同或相似的结果):

syms x
f = 1/(x^2 + 4*x + 9);
ts = series(f,x,Inf,'Order',5) % 4-th order Puiseux series of f about 0
c = collect(ts)

哪个returns

ts =

1/x^2 - 4/x^3 + 7/x^4 + 8/x^5 - 95/x^6


c =

(x^4 - 4*x^3 + 7*x^2 + 8*x - 95)/x^6

然后你可以使用numdencts中提取分子和分母:

[n,d] = numden(ts)

其中returns以下多项式:

n =

x^4 - 4*x^3 + 7*x^2 + 8*x - 95


d =

x^6

coeffs 然后可以用在分子上。您可能会发现 other functions listed here 也很有帮助。

由于围绕无穷大的泰勒展开可能是通过替换 y = 1/x 执行的,并围绕 0 展开,我会明确地进行该替换以使幂为正,以便在 coeffs 上使用:

syms x y
f      = 1/(x^2+4x+9);
ts     = taylor(f,x,inf,'Order',100);
[c,ty] = coeffs(subs(ts,x,1/y),y);
tx     = subs(ty,y,1/x);