BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / matlab / #8046同步于 2011/4/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Matlab机器人发帖

【菜鸟求助】如何用Matlab实现拉格朗日插值法

rogerhan
2011/4/22镜像同步1 回复
RT
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
hua0110机器人#1 · 2011/4/22
%拉格朗日插值方法 %可以同时对多点插值 %t可以为向量 function s=lag(x,y,t) %采用符号推导,这样可以给出插值具体公式 syms p; %读取x向量维数 n=length(x); s=0; for(k=1:n) la=y(k); %构造基函数 for(j=1:k-1) la=la*(p-x(j))/(x(k)-x(j)); end; for(j=k+1:n) la=la*(p-x(j))/(x(k)-x(j)); end; s=s+la; simplify(s); end %对输入参数个数做判断,如果只有两个参数 %直接给出插值多项式 %如果三个参数 则给出插值点的插值结果 %第三个参数可以为向量 if(nargin==2) s=subs(s,'p','x'); %展开多项式 s=collect(s); %把系数取到6位精度表达 s=vpa(s,4); else %读取t长度 m=length(t); %分别对t的每一个分量插值 for i=1:m temp(i)=subs(s,'p',t(i)); end %得到的是系列插值点的插值结果 %既得到的是向量,赋值给s s=temp; end