用matlab写的等距插值代码改写

janelyrin 2009-10-05 04:03:32

等距插值


保存名为newpoly.m的M文件.

function f = Newtonback(X,Y,X0)
syms t;

if(length(X) == length(Y))
n = length(X);
c(1:n) = 0.0;
else
disp('X和Y的维数不相等!');
return;
end

f = Y(n);
Y1 = 0;

xx =linspace(X(1),X(n),(X(2)-X(1)));
if(xx ~= X)
disp('节点之间不是等距的!');
return;

end

for(i=1:n-1)
for(j=i+1:n)
Y1(j) = Y(j)-Y(j-1);
end
c(i) = Y1(n);
l = t;
for(k=1:i-1)
l = l*(t+k);
end;

f = f + c(i)*l/factorial(i);
simplify(f);
Y = Y1;

if(i==n-1)
if(nargin == 3)
f = subs(f,'t',(X0-X(n))/(X(2)-X(1)));
else
f = collect(f);
f = vpa(f, 6);
end
end
end



将上面的 代码转化为求6个节点的插值问题 就是把代码改写下不需要未知节点X0的代码


高分求答案 快!!! 速度。。。
...全文
156 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧