此问题与this one相关联。再次假设以下代码:
syms x
f = 1/(x^2+4*x+9)
现在taylor
允许函数f
展开无限远:
ts = taylor(f,x,inf,'Order',100)
但是以下代码
c = coeffs(ts)
产生错误,因为该系列不包含x
的正幂(它包含x
的负幂。)
在这种情况下,应该使用什么代码?
答案 0 :(得分:3)
由于围绕无穷大的泰勒展开可能是使用替换y = 1/x
并在0
附近展开的,因此我会明确地进行替换,以便在coeffs
上使用正数:< / p>
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);
答案 1 :(得分:2)
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)
返回
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)
返回以下多项式:
n =
x^4 - 4*x^3 + 7*x^2 + 8*x - 95
d =
x^6
然后可以在分子上使用 coeffs
。您可能会发现other functions listed here也很有帮助。