多项式插值,Lagrange,Neville,Newton | 您所在的位置:网站首页 › lagrange插值多项式例题 › 多项式插值,Lagrange,Neville,Newton |
理论公式 Lagrange插值公式为:,其中。 可以从的结构看出,则. Neville插值公式为:,其中,实质就是从两个n-1阶的插值多项式构造出一个n阶的插值多项式。 Newton插值公式为其中为k阶差商, 代码部分 例题 x=[-0.89,-0.5,0.04,0.57,0.92]; y=[0.4529,0.7788,0.9984,0.7266,0.429]; clear;clc;close all; % Neville插值公式 x=[-0.89,-0.5,0.04,0.57,0.92]; y=[0.4529,0.7788,0.9984,0.7266,0.429]; n=length(x); x1=linspace(-1,1,20); y1=[]; for l=1:20 h=y; for i=1:n-1 for j=1:n-i h(j)=((x(j+i)-x1(l))*h(j)+(x1(l)-x(j))*h(j+1))/(x(j)-x(i+j)); end end y1=[y1 h(1)]; end plot(x1,y1,'--ks'); hold on; plot(x,y,'sb'); clear;clc;close all; % Lagrange插值公式 x=[-0.89,-0.5,0.04,0.57,0.92]; y=[0.4529,0.7788,0.9984,0.7266,0.429]; n=length(x); x1=linspace(-1,1,20); y1=zeros(1,20); for k=1:20 h=0; for i=1:n za=1; for j=1:n if i~=j za=za*(x1(k)-x(j))/(x(i)-x(j)); end end za=za*y(i); h=h+za; end y1(k)=h; end plot(x1,y1,'--k'); hold on; plot(x,y,'bs'); clear;clc;close all; pause(1) % Newton插值公式 x=[-0.89,-0.5,0.04,0.57,0.92]; y=[0.4529,0.7788,0.9984,0.7266,0.429]; n=length(x); x1=linspace(-1,1,20); h=y y1=[] for i=1:n-1 for j=1:n-i h(j)=(h(j)-h(j+1))/(x(j)-x(i+j)); end y1=[y1 h(1)]; end y2=zeros(1,5); for k=1:20 ko=y(1); for i=1:4 ji=1; for j=1:i ji=ji*(x1(k)-x(j)) end ko=ko+ji*y1(i) end y2(k)=ko end plot(x1,y2,'--ks'); hold on; plot(x,y,'sb');此代码是直接计算,也可以通过设置函数变量来进行计算,这里不再展示 |
CopyRight 2018-2019 实验室设备网 版权所有 |