用matlab写的等距插值代码改写
等距插值
保存名为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的代码
高分求答案 快!!! 速度。。。