matlab 拉格朗日插值问题function f=Language(x,y,x0)%求已知数据点的拉格朗日差值多项式%已知数据点的x坐标向量:x%已知数据点的y坐标向量:y%插值点的x坐标:x0%求得的拉格朗日插值多项式:f%x0处的插

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/14 10:54:41
matlab 拉格朗日插值问题function f=Language(x,y,x0)%求已知数据点的拉格朗日差值多项式%已知数据点的x坐标向量:x%已知数据点的y坐标向量:y%插值点的x坐标:x0%求得的拉格朗日插值多项式:f%x0处的插
xVAsF+T+6N>S:-^rȁU"$Vxb\l';qcǝ;vb vgؕ!`CO^{zB*ˉ$"5AzD[8ѫ{;bVY%UA"/,eKcp9Έ!nHI≗Ձyѫr*6~ol 1!r!ovԈ8|֧Xw2"UޚOffn\#:Y71PHYݬ zpTZ.!ӗDF%G`yͱT wc-ȚCIK3aorovue h^FiʷD!^3U ژՀRDSH{JWiƻ)SҶYϻ.A%Yr$W4]x1^TeYXups5pw|IS:]b:vmtc{n~?̛e'tu޾I/귋o& u/[;{M}WwakD!APϪmF!ʑO:'|d5*Rnrr[-<#>Z`z{6IdeUjbN( -

matlab 拉格朗日插值问题function f=Language(x,y,x0)%求已知数据点的拉格朗日差值多项式%已知数据点的x坐标向量:x%已知数据点的y坐标向量:y%插值点的x坐标:x0%求得的拉格朗日插值多项式:f%x0处的插
matlab 拉格朗日插值问题
function f=Language(x,y,x0)
%求已知数据点的拉格朗日差值多项式
%已知数据点的x坐标向量:x
%已知数据点的y坐标向量:y
%插值点的x坐标:x0
%求得的拉格朗日插值多项式:f
%x0处的插值:f0
syms t;
if(length(x)==length(y))
n=length(x);
else
disp('x和y的维数不相等!');
return;
end
f=0.0;
for(i=1:n)
l=y(i);
for(j=1:i-1)
l=l*(t-x(j))/(x(i)-x(j));
end;
for(j=i+l:n)
l=l*(t-x(j))/(x(i)-x(j));
end;
f=f+l;
simplify(f);
end
f0=subs(f,'t',x0);
看不出错误,运行时总出现Error in ==> D:\MATLAB安装软件\toolbox\symbolic\@sym\minus.m
On line 26 ==> X = X(ones(size(A)));
Error in ==> D:\MATLAB安装软件\work\Language.m
On line 22 ==> l=l*(t-x(j))/(x(i)-x(j));
请高手指教一下
发错了,换一个,还是那个问题````
function f = Language(x,y,x0)
syms t;
if(length(x) == length(y))
n = length(x);
else
disp('x和y的维数不相等!');
return;
end %检错
f = 0.0;
for(i = 1:n)
l = y(i);
for(j = 1:i-1)
l = l*(t-x(j))/(x(i)-x(j));
end;
for(j = i+1:n)
l = l*(t-x(j))/(x(i)-x(j)); %计算拉格朗日基函数
end;
f = f + l; %计算拉格朗日插值函数
simplify(f); %化简
if(i==n)
if(nargin == 3)
f = subs(f,'t',x0); %计算插值点的函数值
else
f = collect(f); %将插值多项式展开
f = vpa(f,6); %将插值多项式的系数化成6位精度的小数
end
end
end

matlab 拉格朗日插值问题function f=Language(x,y,x0)%求已知数据点的拉格朗日差值多项式%已知数据点的x坐标向量:x%已知数据点的y坐标向量:y%插值点的x坐标:x0%求得的拉格朗日插值多项式:f%x0处的插
function f=Language(x,y,x0)
%求已知数据点的拉格朗日差值多项式
%已知数据点的x坐标向量:x
%已知数据点的y坐标向量:y
%插值点的x坐标:x0
%求得的拉格朗日插值多项式:f
%x0处的插值:f0
syms t;
if(length(x)==length(y))
n=length(x);
else
disp('x和y的维数不相等!');
return;
end
f=0.0;
for(i=1:n)
l=y(i);
for(j=1:i-1)
l=l*(t-x(j))/(x(i)-x(j));
end;
for(j=i+1:n)%你这个地方写成i+l了
l=l*(t-x(j))/(x(i)-x(j));
end;
f=f+l;
simplify(f);
end
f0=subs(f,'t',x0);
_________________________
你的补充程序没问题啊,我用下面语句试验运行正常,结果无误啊
A=Language(1:5,sin(1:5),1:.1:5);
plot(1:5,sin(1:5),'o',1:.1:5,A)