1、班级: 机设 11 级 学号: 331102030003 姓名: 张朝辉 成绩:_数值分析实验报告实验 3 数值积分3.1 实验目的通过本实验理解数值积分与微分的基本原理。掌握数值积分中常见的复合求积公式的编程实现。掌握龙贝格算法的基本思路和迭代步骤;培养编程与上机调试能力。3.2 算法描述3.2.1 龙贝格算法基本思路(1)将区间 划分为 等分,分点: ;根据梯形公式ba,nnx0,求出 ,再根据 和 之间的递推公式12nkkn bfxffhTnTnT2求出 ;1022nknfn2(2)设 为加速次数, 为划分区间次数,则由加速公式:m( )求出第 次划分,第 次加速次数的梯形kmkk TT
2、114,km值 ,这样不断地循环,直到求出在满足精度条件下的某个 作为积分值为止。 km kT3.2.2 龙贝格算法计算步骤1.输入 MATLAB 程序functiont=romberg(f,a,b,e) t=zeros(15,4); t(1,1)=(b-a)/2*(f(a)+f(b); for k=2:4 sum=0;for i=1:2(k-2)sum=sum+f(a+(2*i-1)*(b-a)/2(k-1);endt(k,1)=0.5*t(k-1,1)+(b-a)/2(k-1)*sum;for i=2:kt(k,i)=(4(i-1)*t(k,i-1)-t(k-1,i-1)/(4(i-1)-
3、1);endendfor k=5:15 sum=0;for i=1:2(k-2)sum=sum+f(a+(2*i-1)*(b-a)/2(k-1);endt(k,1)=0.5*t(k-1,1)+(b-a)/2(k-1)*sum;for i=2:4t(k,i)=(4(i-1)*t(k,i-1)-t(k-1,i-1)/(4(i-1)-1);end if k6 if abs(t(k,4)-t(k-1,4)=15disp(溢出); end2.输入 f=inline(sin(x)/x,x)f =Inline function:f(x) = sin(x)/x romberg(f,10(-100),1,5*1
4、0(-7)3.运行结果为 0.94608 3.3 实验内容用龙贝格算法计算: 10sinxId3.4 实验步骤3.4.1 代码程序:functiont=romberg(f,a,b,e) t=zeros(15,4); t(1,1)=(b-a)/2*(f(a)+f(b); for k=2:4 sum=0;for i=1:2(k-2)sum=sum+f(a+(2*i-1)*(b-a)/2(k-1);endt(k,1)=0.5*t(k-1,1)+(b-a)/2(k-1)*sum;for i=2:kt(k,i)=(4(i-1)*t(k,i-1)-t(k-1,i-1)/(4(i-1)-1);endendf
5、or k=5:15 sum=0;for i=1:2(k-2)sum=sum+f(a+(2*i-1)*(b-a)/2(k-1);endt(k,1)=0.5*t(k-1,1)+(b-a)/2(k-1)*sum;for i=2:4t(k,i)=(4(i-1)*t(k,i-1)-t(k-1,i-1)/(4(i-1)-1);end if k6 if abs(t(k,4)-t(k-1,4)=15disp(溢出); end 3.4.2 实验结果0.94608 3.5 实验体会本次试验使我认识到了计算机计算能力的强大,通过本次实验对数值积分与微分的基本原理有了深刻理解。基本上掌握数值积分中常见的复合求积公式的编程方法。掌握了龙贝格算法的基本思路和迭代步骤;使自己编程与上机调试能力有了很大提高。