目前在上《数值分析》课程,出于兴趣就把多项式插值的程序编出来了,但是功能还比较有限。此函数是输入n个点的坐标和对应的函数值,matlab软件会通过牛顿多项式插值的方法生成一个多项式,同时也会输出多项式的函数图像。如有错误,请指正。
函数程序如下:
function N = newtoncz(x,y)
%牛顿插值多项式,输入数量大于1的点,输出函数
num = numel(x);
b = y;
N = zeros(1,num-1);
N = [N,y(1)];
a = [y];
dx = [1];
for i = 1:num-1
y = a;
a = [];
for j = 1:num-i
fy = (y(j+1)-y(j))/(x(j+i)-x(j));
a =[a fy];
end
dx = conv(dx,[1 -x(i)]);
X = [zeros(1,num-i-1) dx];
N = N + a(1)*X;
end
%画图部分
x1 = min(x):0.02:max(x);
y1 = polyval(N,x1);
plot(x,b,'*',x1,y1,'k');
end
以上,为全部函数内容,均为自己编写,因为还是学生,所以可能有编写得不太好的地方。如要使用,在matlab中新建立一个函数然后复制粘贴保存即可调用。