定义函数:
function yhat = myfun(x,y,xhat)
n = length(y);
h = x(2)-x(1);%等距节点的步长
t = (xhat-x(1))/h;%预测点与初值点相距的步长
c = y(:);
z = zeros(n);
z(:,1) = x';z(:,2) = y';%初始化差分表
for j = 2:n
for i = n:-1:j
c(i) = c(i)-c(i-1);
z(i-j+1,j+1) = c(i);
end
end
y1 = ones(1,n);
r = ones(n,n);
for i = 0:n-1
y1(i+1) = c(i+1)/factorial(i);
end
for i =1:n-1
r(i+1,1:i) = (t-i+1):t ;
b = prod(r,2);
end
yhat = y1*b;
disp("差分表:");disp(z);
fprintf("N_%d(%f) = %f\n",n-1,xhat,yhat);
调用:
x = [20 21 22 23];
y = [1.30103 1.32222 1.34242 1.36173];
xhat = 21.4;
yhat= myfun(x,y,xhat);