数值分析实验题(-华科).doc
精品文档,仅供学习与交流,如有侵权请联系网站删除数值分析实验作业专业: 姓名: 学号: 【精品文档】第 12 页实验2.1 多项式插值的振荡现象问题提出:考虑在一个固定的区间上用插值逼近一个函数,显然Lagrange插值中使用的节点越多,插值多项式的次数就越高,我们自然关心插值多项的次数增加时,Ln(x)是否也更加靠近逼近的函数,Runge给出的例子是极著名并富有启发性的,设区间-1,1上函数实验内容:考虑区间-1,1的一个等距离划分,分点为则拉格朗日插值多项式为其中,i=0,1,2,n是n次Lagrange插值函数。实验要求: (1)选择不断增大的分点数目n=2,3,画出原函数f(x)及插值多项式函数Ln(x)在-1,1上的图像,比较并分析实验结果。 (2)选择其他的函数,例如定义在区间-5,5上的函数,重复上述的实验看其结果如何。解:以下的f(x)、h(x)、g(x)的为插值点用“*”表示,朗格朗日拟合曲线用连续曲线表示。通过三个函数的拉格朗日拟合可以看到,随着插值点的增加,产生Rung现象。(1) f(x)(2) h(x)(3) g(x)实验3.1 最小二乘法拟合编制以函数为基的多项式最小二乘拟合程序,并用于对表中的数据作三次多项式最小二乘拟合。-1.0-0.50.00.51.01.52.0-4.447-0.4520.5510.048-0.4470.5494.552取权数,求拟合曲线中的参数,平方误差,并作离散数据的拟合函数的图形。解:三次多项式的拟合曲线为: 此题中权函数,即W=(1,1,1,1,1,1,1) 利用法方程求解这个方程组,就可以得到系数a。解之得: 故拟合的函数为:,平方误差为:2.176191667187105e-05拟合的函数图像如下:实验5.1 常微分方程性态和R-K法稳定性试验试验目的:考察下面的微分方程右端项中函数y前面的参数对方程性态的影响(它可使方程为好条件的或坏条件的)和研究计算步长对R-K法计算稳定性的影响。实验题目:常微分方程初值问题其中,。其精确解为实验要求: (1)对于参数,分别去四个不同的数值:一个大的正值,一个小的正值,一个绝对值小的负值和一个绝对值大的负值。取步长,分别用经典R-K法计算,将四组计算结果画在同一张图上,进行比较并说明相应初值问题的性态。(2)对于参数为一个绝对值不大的负值和两个计算步,一个计算步使参数在经典R-K法的稳定域内,另一个步长在经典的R-K法的稳定域外。分别用经典R-K法计算并比较计算结果。取全域等距的10个点上的计算值,列表说明。解:对于4阶R-K法 绝对稳定区为:这里,所以绝对稳定区为:(1)对于,绝对稳定区:a21-1-2h0.010.010.010.01(2)对于,稳定区a-20-20h0.010.15xy(精确解)数值解y1(a=-20,h=0.01)y1-y数值解y2(a=-20,h=0.15)y1-y0.150.1997870.1997892.35E-061.5250001.3252130.300.3024790.3024792.34E-072.1906251.8881460.450.4501230.4501231.75E-083.0496092.5994860.600.6000060.6000061.16E-094.1744633.5744570.750.7500000.7500007.23E-115.6648864.9148860.900.9000000.9000004.32E-127.6579696.757969可见h=0.01时,数值解稳定h=0.15时,数值解不稳定。程序源代码function testCharpt2_1%对数值分析实验题第2章第1题进行分析promps='输入f为选择f(x);输入h为选择h(x);输入g为选择g(x)'result=inputdlg(promps,'请选择实验函数');chooseFunction=char(result);switch chooseFunction case 'f' f=inline('1./(1+25*x.2)'); a=-1; b=1; nameFuc='f(x)' case 'h' f=inline('x./(1+x.4)'); a=-5; b=5 nameFuc='h(x)' case 'g' f=inline('atan(x)'); a=-5; b=5 nameFuc='g(x)'end% promps2='n='% nNumble=inputdlg(promps2,'请输入分点数n');nNumble=2:11for i=1:length(nNumble) x=linspace(a,b,nNumble(i)+1); y=feval(f,x); xx=a:0.1:b; yy=lagrange(x,y,xx) figure fplot(f,a,b,'*') hold on plot(xx,yy,'LineWidth',2) xlabel('x') ylabel('y') legend(nameFuc,'lagrange(x)') nameTitle='多项式求值的振荡现象',' n=',num2str(nNumble(i) title(nameTitle,'FontSize',14); grid onendfunction yy=lagrange(x,y,xx)%s实现拉格朗日插值%输入参数x,y分别为已知插值点的自变量和因变量%输入参数xx为拟合点的自变量值%输出参数yy为对应自变量xx的拟合值xLength=length(x);xxLength=length(xx);for i1=1:xxLength yy(i1)=0; for i2=1:xLength p=1; for i3=1:xLength if(i2=i3) p=p*(xx(i1)-x(i3)/(x(i2)-x(i3); end end yy(i1)=yy(i1)+p*y(i2); endendfunction testCharpt3_1()%对数值分析实验题第3章第1题进行分析%输入参数:自变量x,因变量y%输入参数:多项式拟合次数nclcclearformat longx=-1.0,-0.5,0.0,0.5,1.0,1.5,2.0y=-4.447,-0.452,0.551,0.048,-0.447,0.549,4.552n=3A=;for i=1:length(x) A=A;1 x(i) x(i)2 x(i)3end A2=A'*A;a=inv(A2)*A'*y'%多项式的系数% a=roundn(a,-6)yy=a(1)+a(2)*x+a(3)*x.2+a(4)*x.3;r=(y-yy)*(y-yy)' %平方误差clfhold on plot(x,y,'or');x2=-1:0.01:2;y2=a(1)+a(2)*x2+a(3)*x2.2+a(4)*x2.3;plot(x2,y2,'LineWidth',2);legend('离散值','拟合曲线')xlabel('x');ylabel('y');title('3次多项式拟合,平方误差=',num2str(r),'FontSize',14);grid onfunction testCharpt5_1%对数值分析实验题第3章第1题进行分析%输入参数:参数a,步长h%精确解和数值解图形对比%第1问输入a=2 1 -1 -2% 输入a的取值h=0.01 0.01 0.01 0.01%输入h的取值%第2问输入% a=-20 -20% 输入a的取值% h=0.01 0.15%输入h的取值func=inline('1+(y-x).*a');%定义函数for i=1:length(a) x=0:h(i):1;%求解区间 y=x; N=length(x); y(1)=1; for n=1:N-1 k1=func(a(i),x(n),y(n); k2=func(a(i),x(n)+h(i)/2,y(n)+k1*h(i)/2); k3=func(a(i),x(n)+h(i)/2,y(n)+k2*h(i)/2); k4=func(a(i),x(n)+h(i),y(n)+k3*h(i) ; y(n+1)=y(n)+h(i)*(k1+2*k2+2*k3+k4)/6;%数值解 end y0=exp(a(i)*x)+x;%精确解% figure()%如果叠绘图去掉此句命令 plot(x,y0) hold on plot(x,y,'*') legend('精确解','数值解') xlabel('x'); ylabel('y'); title('微分方程数值解,a=',num2str(a(i),',h=',num2str(h(i),'FontSize',14); grid onend