资源描述
编写程序构造区间上的以等分结点为插值结点的Newton插值公式,假设结点数为(包括两个端点),给定相应的函数值,插值区间和等分的份数,该程序能快速计算出相应的插值公式。以,为例计算其对应的插值公式,分别取不同的值并画出原函数的图像以及插值函数的图像,观察当增大时的逼近效果.
解:Matlab计算程序为:
clear
clc
f=input('请输入函数表达式:f(x)=','s');
%测试公式为:1/(1+25*x^2)
a=input('请输入区间左端值a:');
%-1
b=input('请输入区间右端值b:');
%1
n=input('请输入区间结点数(包括两个端点)n:');
%取不同n值比较
for i=1:n
x(i)=a+(b-a)/(n-1)*(i-1);
y(i,1)=eval(subs(f,'x','x(i)'));
end
for j=1:n-1
for k=j:n-1
temp=y(k+1,j)-y(k,j);
y(k+1,j+1)=temp/(x(k+1)-x(k+1-j));
end
c(j)=y(j,j);
c(j+1)=y(j+1,j+1);
end
p=c(1);
q=1;
syms X
for i=2:n
q=q*(X-x(i-1));
p=p+c(i)*q;
end
p=simple(p)
for i=1:301
t(i)=a+(b-a)/300*(i-1);
Nn(i)=eval(subs(p,'X','t(i)'));
end
for i=1:301
h(i)=a+(b-a)/300*(i-1);
yy(i)=eval(subs(f,'x','h(i)'));
end
plot(h,yy,'r')
hold on
plot(t,Nn,'b')
hold on
grid on
legend('ÔʼÇúÏßf(x)','²åÖµÇúÏßN(x)')
title('Å£¶Ù²åÖµ')
xlabel('x')
ylabel('f(x)')
当n=5时,Newton插值公式为:
p =(1250*X^4)/377 - (3225*X^2)/754 + 1
Matlab绘制的拟合图像为:
由上图可见,n取较小值时,拟合误差较大
当n=10时,Newton插值公式为:
p = (9094987740384*X^9 + 5272349642029869237892763424*X^8 - 16938813146112*X^7 - 10950865478705002051580730624*X^6 + 10150693091136*X^5 + 7491941821973715378406714008*X^4 + 1915628554944*X^3 - 2014100801013926045821422321*X^2 + 322192441744*X + 210052147079480949741593257)/243810615467456022706126848
Matlab绘制的拟合图像为:
由上图可见,随着n的增加,曲线拟合情况变好,且曲线两端拟合情况不如中间好。
当n=15时,Newton插值公式为:
p =-(886144712452400143429998262468608*X^14 - 215210091376623616*X^13 - 2567287824076382325356649416884224*X^12 + 351363414492446720*X^11 + 2856715604724742318918376846921728*X^10 - 124384721505571072*X^9 - 1557570733005289908575362785327872*X^8 + 250622679002678528*X^7 + 442823737113677610968911987842944*X^6 - 45553876737267808*X^5 - 65683899076401881002269596823496*X^4 - 9367027174733137*X^3 + 5085926865218992168091551893616*X^2 - 357025210182313*X - 236625997883333173618553311618)/236625997883333132703043158016
Matlab绘制的拟合图像为:
由图可见,随着n的增加,曲线中部的拟合情况更好,曲线在两端出现了严重的龙格现象,在(-0.5,0.5)区间内,曲线拟合情况最好
当n=20时,Newton插值公式为:
p =
-(63091697858638300062632225206272000*X^19 + 2374413278149671534934697712425184802508149981184*X^18 - 233036380708180230561163827474169856*X^17 - 8842814924308988434758093795575036385866874978304*X^16 + 350490414383474291117787759376072704*X^15 + 13577245591875304861693369543392784485746920259584*X^14 - 279615375477559682182077154276278272*X^13 - 11193422709788459567474162293005231928783338979328*X^12 + 135199141479468540752143239747409920*X^11 + 5418724026550657821855798963625114991858503623680*X^10 - 39800512689784644819739734827479552*X^9 - 1588341903846823612670522910137112930615063446016*X^8 + 6108762937766528070269435178249736*X^7 + 282597402119571697616731016707722670895597485248*X^6 - 375900768299031394484544770592548*X^5 - 30312533601791212134629580468196716494074564648*X^4 + 29463092871819230746035628155207*X^3 + 2000031883420094127298041287435989908093249245*X^2 - 285093476768159225941195384299*X - 91816471300153856284326939814131723991381301)/92493407215603961126243040917041525446148096
Matlab绘制的拟合图像为:
由上图可见,随着n的增加,曲线中部的拟合情况更好,但两侧曲线龙格现象更加明显。
当n=40时,Matlab绘制的拟合图像为:
由图可见,当n增加时,龙格现象不断加深。当n增大到一定程度,由于两端龙格现象过于严重,导致曲线中部拟合情况不明显。
(注:专业文档是经验性极强的领域,无法思考和涵盖全面,素材和资料部分来自网络,供参考。可复制、编制,期待你的好评与关注)
展开阅读全文