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

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

2016-08-08

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值