《数值分析实验报告(共5页).doc》由会员分享,可在线阅读,更多相关《数值分析实验报告(共5页).doc(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上实验报告一、实验名称 复合梯形求积公式、复合辛普森求积公式、龙贝格求积公式及自适应辛普森积分。二、实验目的及要求 1.掌握复合梯形求积计算积分、复合辛普森求积计算积分、龙贝格求积计算积分和自适应辛普森积分的基本思路和步骤. 2. 培养Matlab编程与上机调试能力.三、实验环境 计算机,MATLAB软件4、 实验内容 1.用不同数值方法计算积分。(1) 取不同的步长h。分别用复合梯形及复合辛普森求积计算积分,给出误差中关于h的函数,并与积分精确指比较两个公式的精度,是否存在一个最小的h,使得精度不能再被改善。(2) 用龙贝格求积计算完成问题(1)。(3)用自适应辛普森
2、积分,使其精度达到10-4。 五、算法描述及实验步骤1. 复合梯形公式将区间a,b划分为n等份,分点xk=a+ah,h=(b-a)/h,k=0,1,.,n,在每个子区间xk,xk+1(k=0,1,.,n-1)上采用梯形公式(1.1),得 (1.1) (1.2) (1.3)其中Tn称为复合梯形公式,Rn为复合梯形公式的余项。2. 复合辛普森求积公式将区间a,b划分为n等份,在每个子区间xk,xk+1(k=0,1,.,n-1)上采用辛普森公式(1.4),得 (1.4) (1.5) (1.6)其中Sn称为复合辛普森求积公式,Rn为复合辛普森求积公式的余项。3. 龙贝格算法统一的公式: (1.7)经过
3、m(m=1,2.)次加速后,余项便取下列形式: (1.8)上述处理方法通常称为理查森外推加速法。设以表示二分k次后求得的梯形值,且以表示序列的m次加速值,则依递推公式(1.7)可得 (1.9)公式(1.9)也称为龙贝格求积算法,计算过程如下:(1) 取k=0,h=b-a,求。令(k记区间a,b的二分次数)。(2) 求梯形值T0(b-a)/2k),即按递推公式(1.10)计算。 (1.10)(3) 求加速值,按公式(1.9)逐个求出T值。(4) 若(预先给定的精度),则终止计算,并取;否则令转(2)继续计算。4. 自适应积分方法设给定精度要求,计算积分的近似值。先取步长h=b-a,应用辛普森公式
4、有 (1.11)表区间a,b对分,步长h2=h/2=(b-a)/2,在每个小区间上用辛普森公式,得 (1.12)上式即为 (1.13)将(1.12)与(1.13)比较得 (1.14)则期望得到 (1.15)此时可取S2(a,b)作为的近视,则可达到给定的误差精度。如果不行,则细分区间,进行计算。六、调试过程及实验结果取不同的步长,得到的不同结果如下表:方法步长数n8163264复合梯形-0.12-0.54-0.21-0.57复合辛普森-0.15-0.43-0.12-0.61龙贝格公式-0.30-0.1-0.4-0.31自适应辛普森-0.62-0.57-0.233-0.58七、总结通过本次学习M
5、atlab,掌握了复合梯形求积公式、复合辛普森求积公式、龙贝格求积公式及自适应辛普森积分的程序和算法,为以后处理数据提供一种更加简便,准确的方法。八、附录(源程序清单)1.复合梯形function s=fuhetixing(f,a,b,n)%f为被积分函数%a,b是积分上下限%n是子区间个数%s是积分值h=(b-a)/n;s=0;for k=1:(n-1) x=a+h*k; s=s+feval(f,x);endformat longs=h*(feval(f,a)+feval(f,b)/2+h*s;2.复合辛普森function S=Comsimpson(f,a,b,n)%f为被积分函数%a,b
6、是积分上下限%n是子区间个数%s是积分值h=(b-a)/(2*n);s1=0;s2=0;for k=1:n x=a+h*(2*k-1); s1=s1+feval(f,x);end for k=1:(n-1) x=a+h*2*k; s2=s2+feval(f,x); end format long S=h*(feval(f,a)+feval(f,b)+4*s1+2*s2)/3;3.龙贝格function T,quad,err,h=Romberg(f,a,b,n,delta)%f为被积分函数%a,b是积分上下限%n+1是T数表的列数%T表示T数表%quad是所求积分值%delta是设定的允许误差限 m=1;h=b-a;err=1;J=0;T=zeros(n,n);%定义T表初始值T(1,1)=h*(feval(f,a)+feval(f,b)/2;while (errdelta)&(J=err) %循环直到totol为止 j=j+1; e=(abs(simpson(x,y,2j)-simpson(x,y,1)/10;%精度测试式 ends=s+simpson(x,y,2j);end专心-专注-专业