plot(X,f) P=
x*(11153755408641612500000*x^9 19582893765599948750000*x^7 6457490747185549971250*x^5 452380176499959382000*x^3
+ + -
-
55768777028538456250000*x^8 256281087074564729875000*x^6 1150585140486343857745625*x^4 2327269296084898261641325*x^2
+ + + +
4715634276489610818*x - 1414847701376318005254584)
画图程序: X=0:0.1:1; x1=0:0.0001:1; f1=sin(x1*pi); syms x x0=0:0.001:1; f=sin(pi*X);
O=Nweton_xhazhi(X,f); x=x0; Y=eval(O); plot(x0,Y,'r'); hold on plot(x1,f1);
1.210.80.60.40.20-0.200.10.20.30.40.50.60.70.80.91
由上图可知:红色图形是利用插值多项式画出的,蓝色图像是利用原函数画出的,将两者对比我们可以得出结论:该插值多项式具有收敛性
11:对函数f(x)?1,x?[?5,5],取不同的节点数n,用等距节点作Lagrange1?x2插值,观察Runge现象。
Lagrange插值通用程序:
%X为节点,y为节点对应的函数值,x0为插值节点 function Lagrange(X,y,x0) syms x; [~,n]=size(X); sum=0; for i=1:n
sum=sum+y(i)*L(X,i); end x=x0; p=eval(sum); plot(x0,p,'r-') hold on
plot(X,y,'b-');
function l=L(X,k) syms x; sum1=1; sum2=1; [~,n]=size(X); if (k==1) for i=k+1:n
sum1=sum1*(x-X(i)); sum2=sum2*(X(k)-X(i)); l=sum1/sum2; end else
for i=1:k-1
sum1=sum1*(x-X(i)); sum2=sum2*(X(k)-X(i)); end for i=k+1:n
sum1=sum1*(x-X(i)); sum2=sum2*(X(k)-X(i)); end
l=sum1/sum2; end
取不同的节点数n,用等距节点作Lagrange插值,观察Runge现象:
当n=10;
X=-5:0.1: 5;f=1./(1+X.^2); x0=-5:5:5;Lagrange(X,f,x0) x1=-5:0.0001:5; y1=1./(1+x1.^2); plot(x1,y1)
1.41.210.80.60.40.20-5-4-3-2-1012345
当n=20;
X=-5:0.1:5; f=1./(1+X.^2); x0=-5:0.5:5; Lagrange(X,f,x0) x1=-5:0.0001:5; y1=1./(1+x1.^2); plot(x1,y1)
1.41.210.80.60.40.20-5-4-3-2-1012345
当n=50;
X=-5:0.1:5; f=1./(1+X.^2); x0=-5:0.2:5; Lagrange(X,f,x0) x1=-5:0.0001:5; y1=1./(1+x1.^2); plot(x1,y1)
1.41.210.80.60.40.20-5-4-3-2-1012345
n=100; X=-5:0.1:5; f=1./(1+X.^2); x0=-5:0.1:5;