资源描述:
《matlab 拉格朗日插值法》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、matlab拉格朗日插值法functionf=Language(x,y,x0)%求已知数据点的拉格朗日插值多项式%已知数据点的x坐标向量:x%已知数据点的y坐标向量:y%插值点的x坐标:x0%求得的拉格朗日插值多项式或在x0处的插值:fsymst;if(length(x)==length(y))n=length(x);elsedisp('x和y的维数不相等!');return;%检错endf=0.0;for(i=1:n)l=y(i);for(j=1:i-1)l=l*(t-x(j))/(x(i)-x(j));end
2、;for(j=i+1:n)l=l*(t-x(j))/(x(i)-x(j));end;f=f+1;simplify(f);if(i==n)if(nargin==3)f=subs(f,'t',x0);%计算插值点的函数值elsef=collect(f);f=vpa(f,6);%将插值多项式的系数化成6位精度的小数endendend在matlab中输入x=[18316668707270;]y=[23335251434046];f=Language(x,y)plot(x,y)x=18316668707270出现错误???
3、Function'collect'isnotdefinedforvaluesofclass'double'.Errorin==>Languageat32f=collect(f);怎么解决,谢谢了,急!!!问题补充:还是不行,???Errorusing==>sym.mapleatoffset12,`)`unexpectedErrorin==>sym.collectat34r=maple('collect',s,x);Errorin==>Languageat32f=collect(f);最佳答案functionf=L
4、anguage(x,y,x0)%求已知数据点的拉格朗日插值多项式%已知数据点的x坐标向量:x%已知数据点的y坐标向量:y%插值点的x坐标:x0%求得的拉格朗日插值多项式或在x0处的插值:fsymst;if(length(x)==length(y))n=length(x);elsedisp('x和y的维数不相等!');return;%检错endf=0.0;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%改为f=sym(0);for(i=1:n)l=y(i);%%%%%%%%%%%%%%%%%%%%%%%%
5、%%%%%%%%改为l=sym(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+1;simplify(f);if(i==n)if(nargin==3)f=subs(f,'t',x0);%计算插值点的函数值elsef=collect(f);f=vpa(f,6);%将插值多项式的系数化成6位精度的小数endendend---------------------------------
6、----------------------下面的这个应该可以:functionf=Language(x,y,x0)%求已知数据点的拉格朗日插值多项式%已知数据点的x坐标向量:x%已知数据点的y坐标向量:y%插值点的x坐标:x0%求得的拉格朗日插值多项式或在x0处的插值:fsymstl;if(length(x)==length(y))n=length(x);elsedisp('x和y的维数不相等!');return;%检错endh=sym(0);for(i=1:n)l=sym(y(i));for(j=1:i-1)
7、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;h=h+l;endsimplify(h);if(nargin==3)f=subs(h,'t',x0);%计算插值点的函数值elsef=collect(h);f=vpa(f,6);%将插值多项式的系数化成6位精度的小数end