关于无穷大的函数的级数展开 - 如何将级数的 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
然后你可以使用numden
从c
或ts
中提取分子和分母:
[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);
此问题与
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
然后你可以使用numden
从c
或ts
中提取分子和分母:
[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);