来自代洪涛的问题
【在matlab中,对y=1/(1+x^2),-5】
在matlab中,对y=1/(1+x^2),-5
1回答
2020-12-07 01:54
【在matlab中,对y=1/(1+x^2),-5】
在matlab中,对y=1/(1+x^2),-5
functionmain()
clear;clc;closeall
x=linspace(-5,5,11);
y=1./(1+x.^2);x0=[0.30.5];
f=Language(x,y,x0);
functionf=Language(x,y,x0)
%求已知数据点的拉格朗日插值多项式
%已知数据点的x坐标向量:x
%已知数据点的y坐标向量:y
%插值点的x坐标:x0
%求得的拉格朗日插值多项式或在x0处的插值:f
x=[0.00.40.81.21.6];%inputxdata(可替换为自己的数据)
y=[00.4283920.7421010.9103140.970348];%inputydata(可替换为自己的数据)
x0=[0.30.5];%inputx0data(可替换为自己的数据)
symstl;
if(length(x)==length(y))
n=length(x);
else
disp('x和y的维数不相等!');
return;%检错
end
p=sym(0);
for(i=1:n)
l=sym(y(i));
for(k=1:i-1)
l=l*(t-x(k))/(x(i)-x(k));
end;
for(k=i+1:n)
l=l*(t-x(k))/(x(i)-x(k));
end;
p=p+l;
end
simplify(p);%简化多项式
f=subs(p,'t',x0);%计算插值点的函数值
f=vpa(f,6);%将插值多项式的值化成6位精度的小数
end