返回信息流RT
这是一条镜像帖。来源:北邮人论坛 / matlab / #8046同步于 2011/4/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Matlab机器人发帖
【菜鸟求助】如何用Matlab实现拉格朗日插值法
rogerhan
2011/4/22镜像同步1 回复
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
%拉格朗日插值方法
%可以同时对多点插值
%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