在matlab中,对y=1/(1+x^2) ,-5

问题描述:

在matlab中,对y=1/(1+x^2) ,-5

function main()
clear;clc;close all
x=linspace(-5,5,11);
y=1./(1+x.^2) ;x0=[0.3 0.5];
f=Language(x,y,x0);
function f = Language(x,y,x0)
%求已知数据点的拉格朗日插值多项式
%已知数据点的x坐标向量:x
%已知数据点的y坐标向量:y
%插值点的x坐标:x0
%求得的拉格朗日插值多项式或在x0处的插值:f
x=[0.0 0.4 0.8 1.2 1.6];%input x data(可替换为自己的数据)
y=[0 0.428392 0.742101 0.910314 0.970348];%input y data(可替换为自己的数据)
x0=[0.3 0.5];%input x0 data(可替换为自己的数据)
syms t l;
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