这个MATLAB中实现拉格朗日插值的程序有什么问题
这个是拉格朗日插值的程序:
function f=Language(x,y,x0)
syms t;
if(length(x)==length(y))
n=length(x);
else
disp('vx!=vy');
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;
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);
else
f=collect(f);
f=vpa(f,6);
end
end
end
存为M文件后,我尝试调用,如下:
x=[0.40 0.50 0.60 0.70 0.80 0.90];
y=[-0.916291 -0.693147 -0.510826 -0.356675 -0.223144 -0.153265];
f=Language(x,y)
结果显示:
??? Function 'simplify' is not defined for values of class 'double'.
Error in ==> Language at 22
simplify(f);
这是怎么回事?我的MATLAB的版本是7.0.0。那个拉格朗日插值的程序该怎么变才能正确呢?求指点!
答案:这个是MATLAB版本问题,7.0没有收录simplify和double函数,而7.9有,所以出现问题,谢谢!
其他:simplify这个函数不化简简单的数字!
我的QQ联系方式,散坝而要龄要伞流午,请用普通话念出
上一个:matlab 色块识别及应用的程序 20分悬赏 有高手会的 发到tangjerrya@163.com
下一个:matlab程序出不了图,直接白板什么情况