1、用递推公式计算定积分实验目的:1充分理解不稳定的计算方法会造成误差的积累,在计算过程中会导致误差的迅速增加,从而使结果产生较大的误差。2在选择数值 计算公式来进行近似计算时,应学会选用那些在计算过程中不会导致误差迅速增长的计算公式。3理解不稳定的计算公式造成误差积累的来源及具体过程;4掌握简单的 matlab 语言进行数值计算的方法。实验题目:对 n=0,1,2,20,计算定积分: 10+5实验原理:由于 y(n)= = 10+5 1 1051+5在计算时有两种迭代方法,如下:方法一: y(n)= 5*y(n-1),n=1,2,3,20;1 取 y(0)= = ln6-ln5 0.182322
2、10 1+5方法二:利用递推公式:y(n-1)= - *y(n),n=20,19,1.1 51 5而且,由 = * *1 126 1 6 10201020+5 1 5= 1020 1 105可取:y(20) *( )0.008730.1 2 1 105+ 1 126实验内容:对算法一,程序代码如下:function y,n=funa()syms k n t;t=0.182322;n=0;y=zeros(1,20);y(1)=t;for k=2:20y(k)=1/k-5*y(k-1);n=n+1;endy(1:6)y(7:11)对算法二,程序代码如下:%计算定积分;%n-表示迭代次数;%y 用来
3、存储结果;function y,n=f();syms k y_20;y=zeros(21,1);n=1;y_20=(1/105+1/126)/2;y(21)=y_20;for k=21:-1:2y(k-1)=1/(5*(k-1)-y(k)/5;n=n+1;end实验结果:由于计算过程中,前 11 个数字太小,后 9 个数字比较大,造成前面几个数字只显示 0.0000 的现象,所以先输出前 6 个,再输出 711 个,这样就能全部显示出来了。算法一结果:y,n=funa%先显示一 y(1)y(6)ans = 0.1823 -0.4116 2.3914 -11.7069 58.7346 -293.
4、5063%再显示 y(7)y(11)ans =1.0e+005 *0.0147 -0.0734 0.3669 -1.8346 9.1728y =1.0e+012 *Columns 1 through 11 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000Columns 12 through 20 -0.0000 0.0000 -0.0001 0.0006 -0.0029 0.0143 -0.0717 0.3583 -1.7916n = 19算法二结果: y,b=fy =0.1823
5、0.08840.05800.04310.03430.02850.02430.02120.01880.01690.01540.01410.01300.01200.01120.01050.00990.00930.00890.00830.0087b =21实验分析:从两题的计算结果可以看出来,算法一是不稳定的,而算法二是稳定的。对算法一:由于 y(1)本身具有一定的误差 ,设为 a_1,则由于y(n)=1/n-5y(n-1)=1/n-5(1/(n-1)-5y(n-1)=1/n-5/(n-1)-52/(n-2)-(5n)*y(0)所以经过多次迭代后会使误差增大很多倍。由此可知:在实际应用过程中应尽量避免使用数值不稳定的公式。