1、数值求积一、 实验目的1. 掌握基本数学运算,学会利用梯形法则、Simpson法则等求积方法,包括了解这些公式得到的结果的精度和误差2. 熟练运用fortran来解决实际问题3. 比较梯形法则和Simpson法则的精度二、 实验问题写一个程序,用梯形法则和Simpson法则求积分并且考察它对不同h值的精度三、 实验方法1. 梯形法则梯形法则是采用梯形来估计曲线下方面积,这等同将被积函数近似为直线函数,被积的部分近似为梯形,要求得较准确的数值,可以将要求积的区间分成多个小区间。2. Simpson法则用过三点f-1,f0,f1的抛物线逼近f(x),对f(x)作泰勒展开3. 变量代换令,则积分形式
2、作以下变换四、实验程序1. 梯形法则program tx1 implicit none integer : i real(8): h,d,s,f,result1 real(8):sum1,p,n,l,exact,diff1 !准备基本的变量 n=10000000.0 h=1.0/n !取n值,确定格子间隔h p=h s=3/(p*3-3*p*2+3*p)*(1.0/3.0) !将习题的积分进行变量替换,并得到f(h) l=s sum1=0 f=2*h*s !得到从0到h的积分,2hf(h) s=0 i=0 exact=2*3.1415926586/1.7320508 !得到标准值 do i=2
3、,n-1 p=i*h s=3/(p*3-3*p*2+3*p)*(1.0/3.0) sum1=sum1+2*s !对除了首尾两项的函数值部分,迭代求和 end do p=1 s=3/(p*3-3*p*2+3*p)*(1.0/3.0) sum1=sum1+s+l !加上首尾两项系数为1的函数值 result1=sum1*h/2+f !得到从h到1的积分值,再加上从0到h的积分 diff1=result1-exact !算误差 write(*,*) result1,diff1 end program2. Simpson法则program Simpson implicit none integer :
4、 i real(8): h,d,s,f,result1 real(8):sum1,p,n,l,g,exact,diff1 !准备基本的变量 n=10000000.0 h=1.0/n !取n值,确定格子间隔hp=h s=3/(p*3-3*p*2+3*p)*(1.0/3.0) !将习题的积分进行变量替换,并得到f(h)sum1=0 f=2*h*s !得到从0到h的积分2hf(h)result1=0 l=s sum1=0 s=0 i=0 g=(1.0-h)/n !重新划分h到1区间的h值,即是g exact=2*3.1415926586/1.7320508 !得到标准值 do i=1,n-1 if(
5、mod(i,2)=0) then p=i*g+h s=3/(p*3-3*p*2+3*p)*(1.0/3.0) sum1=sum1+2*s else if(mod(i,2)=1) then p=i*g+h s=3/(p*3-3*p*2+3*p)*(1.0/3.0) sum1=sum1+4*s !对除了首尾两项的函数值部分,根据奇偶乘上对应的系数,再迭代求和end if end do p=1 s=3/(p*3-3*p*2+3*p)*(1.0/3.0) sum1=sum1+s+l !得到从h到1的积分值,再加上从0到h的积分 result1=sum1*h/3+f !得到从h到1的积分值,再加上从0到
6、h的积分 diff1=result1-exact !算误差 write(*,*) result1,diff1 end program四、实验结果nh梯形法则Simpson法则梯形法则误差Simpson法则误差1001*10(-2)3.678879658971443.711760089978825.128065*10(-2)8.4161089*10(-2)10001*10(-3)3.638562631418953.641665374582281.0963631*10(-2)1.4066373*10(-2)100001*10(-4)3.62995904203103.63021398691592.3
7、60041*10(-3)2.6149859*10(-3)1000001*10(-5)3.62810722461293.62812039440575.082236*10(-4)5.2139347*10(-4)10000001*10(-6)3.62770830075783.62770695298621.092998*10(-4)1.0795205*10(-4)100000001*10(-7)3.62762235603453.62762164694332.335510*10(-5)2.2640125*10(-5)1000000001*10(-8)3.62760383918103.6276036451
8、5794.838879*10(-6)4.6442271*10(-6)五、实验结果分析利用梯形法则和Simpson法则,皆可以得到与标准值近似的值。对于误差的分析,我们可以看到在n值较小,h值较大时,梯形法则的误差较小;当n值较大,h值较小的时候,Simpson法则的误差较小。若我们所需要的值特别精确时,无疑应选择Simpson,此时的n值应尽可能地大,h尽可能小。六、 实验结论讨论对于在h值较大时,Simpson法则所得误差较梯形法则大的原因,笔者认为有两点。第一种可能是在x从0至h处的积分由于取的是近似的2hf(h),或许会有影响。但考虑到两种算法都是如此,其对误差的影响程度应是相同的。第二种可能是在x趋于h处时,由于h很小,趋于0,这使得函数值较大,且计算机的计算本身便有误差。而在梯形法则和Simpson法则的计算过程中,在最终得到的结果里,f(x)的系数在Simpson的算法里大于在梯形法则的算法(4/31),这导致此时Simpson的误差略大。而随着h值的减小,该点所导致的误差在整个计算过程中的影响逐渐降低,逐渐体现出了Simpson的精度要更高。