%Taylor多项式逼近函数
%fun表示被逼近的函数f(x);n是Taylor多项式的次数
%x0表示f(x)在该点做Taylor展开;x1表示在该点求函数f(x)的近似值
function TaylorExp(fun,x0,n,x1)
syms x;
p=0;
for i=0:n
if i<=1
m=1;
else
m=m*i;
end
p=p+((x-x0)^i)*subs(diff(fun,i),x0)/m;
end
if i==n
if nargin==4
disp('给定点处的函数值的近似值是')
p0=subs(p,'x',x1), %计算给定点的函数值的近似值,并输出
else
disp('所求Taylor多项式是')
p=collect(p); %将插值多项式展开
p=vpa(p,6), %将插值多项式的系数化成保留6位有效数字的小数,并输出
end
end
end
命令行输入
>> syms x;
>> fun=sin(x);
>> TaylorExp(fun,0,5)
%结果为Taylor多项式
%p =0.00833333*x^5 - 0.166667*x^3 + x
%接上
>>TaylorExp(fun,0,5,1.5)
%给定点处的函数值的近似值是p0 =1281/1280