做作业碰到这样一个题目,要求将任意函数展开为各阶Taylor多项式,并将各阶展开式画在同一幅图中 。编写了Matlab函数,因此记录一下
%% 参数x0 在此处展开
%% 参数n 展开精度
%% 参数fun 符号函数
%%输出ret 展开后的泰勒多项式(符号函数)
function ret=Tl(n,x0,fun)
syms x;
f(1)=subs(fun,x0);
ret=f(1);
fplot(f(1),[-10,10]);
axis([-10 10 -10 10]);
hold on;
if n>0
for i=1:1:n
f(i+1)= subs(diff(fun,i),x0)*(x-x0)^(i)/factorial(i);
ret=ret+f(i+1);
fplot(f(i+1),[-10,10]);
end
end
end
运行
在命令行窗口输入:
>> syms x;
>> Tl(5,0,sin(x))
得到结果
ans =
x^5/120 - x^3/6 + x