数值分析实验报告龙贝格积分.doc_第1页
数值分析实验报告龙贝格积分.doc_第2页
数值分析实验报告龙贝格积分.doc_第3页
数值分析实验报告龙贝格积分.doc_第4页
数值分析实验报告龙贝格积分.doc_第5页
免费预览已结束,剩余2页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

南昌航空大学数学与信息科学学院实验报告南昌航空大学数学与信息科学学院实 验 报 告课程名称: 数值分析 实验名称: 数值积分 实验类型: 验证性 综合性 设计性实验室名称: D208 班级学号: 05071113 学生姓名: 杨义 任课教师(教师签名): 成 绩: 实验日期: 2008-5-8 一、实验目的1.进一步熟悉向量矩阵的运算2.掌握龙贝格(Romberg)算法,并能用高级程序语言MATLAB编写实现此算法的程序3.进而加深对龙贝格(Romberg)算法的理解二、实验用仪器设备、器材或软件环境电脑、数值软件MATLAB 6.5、手机三、问题的提出、实验原理、预编程序等1.解决问题的提出:用Romberg积分算法计算下面的积分,使计算结果具有八位有效数字 =2.实验原理:龙贝格(Romberg)算法思想:(1) 将区间a,b划分为等分, 分点为:;根据梯形公式,求出,再根据和 之间的递推公式求出;(2) 设为加速次数,为划分区间次数,则由加速公式:,求出第次划分,第次加速次数的梯形值,这样不断地循环,直到求出在满足精度条件下的某个作为积分值为止。3.预编程序:实现龙贝格(Romberg)算法的Matlab程序:%*创建者:我不是地球人*%*创建日期:2008-5-8*%*此函数用来实现龙贝格(Rombeg)积分*%function Romberg_int_value,Tmk=YangYi_Romberg_QiuJ_1_1(intergration_fun,a,b,eeps)%input_intergration_fun为被积函数;%input_a为积分下限,b为积分上限;%input_eeps为控制精度%output_Rombeg_int_value为积分值%output_Tmk为积分表format longh=b-a;%h为初始步长Tmk(1,1)=h*(feval(intergration_fun,a)+feval(intergration_fun,b)/2;Tmk(2,1)=Tmk(1,1)/2+h*feval(intergration_fun,(b+a)/2)/2;k=2;break_go=0;%break_go为跳出循环的标志while(abs(Tmk(k,1)-Tmk(k-1,1)eeps) for i=2:k Tmk(k,i)=4(i-1)/(4(i-1)-1)*Tmk(k,i-1)-Tmk(k-1,i-1)/(4(i-1)-1);%求积分表Tmk对角线下方的递推公式 if abs(Tmk(k,i)-Tmk(k,i-1)=eeps break_go=1; break; end end if break_go=1 break; else sum_x_midle=0; for i=1:2(k-1)%每次划分区间a,b时需插入的中点的个数为前一次划分的区间的段数(k-1) x_midle=a+(h/(2k)*(2*i-1);%每次划分区间a,b时需插入的中点 sum_x_midle=sum_x_midle+feval(intergration_fun,x_midle); end Tmk(k+1,1)=Tmk(k,1)/2+(h/(2k)*sum_x_midle;%第k次划分时的梯形值Tmk(k+1,1)和第k-1次划分时的梯形值Tmk(k,1)间的递推公式 if abs(Tmk(k+1,1)-Tmk(k,k)=eeps break_go=2; break; else k=k+1; end end endif break_go=1 fprintf(积分值为:Tmk(%d,%d)n,k,i) Romberg_int_value=Tmk(k,i);else if break_go=2 fprintf(积分值为:Tmk(%d,1)n,k+1) Romberg_int_value=Tmk(k+1,1); else fprintf(积分值为:Tmk(%d,1)n,k) Romberg_int_value=Tmk(k,1); endend%*创建者:我不是地球人*%*创建日期:2008-5-8*%四、实验过程中需要记录的实验数据表格积分下线积分上线控制精度040.000000001五、实验步骤、程序调试方法1.实验步骤(1)在上机前编写程序之前,认真看书,把龙贝格(Romberg)算法理解透彻(2)上机前先编写龙贝格(Romberg)算法程序的初稿(3)上机运行,不断测试和调试,若语法没错,那就可能是逻辑错误,那就得修改程序的结构(4)当确定程序无错后,通过改变控制精度eeps来达到问题提出中8位的有效数字的要求2.程序调试方法(1)根据运行时的错误提示调试(2)认真检查程序内部逻辑结构,以判断程序可能的出错位置(3)也可以利用Matlab工具箱中已有的函数帮助调试六、实验数据处理及结果分析1.在编辑窗口建立文件f.m如下:function fy=f(x) fy=13*(x-x3)*exp(-1.5*x);2.在命令窗口输入如下命令:a=0;b=4;eeps = 0.000000001;Romberg_int_value,Tmk=YangYi_Romberg_QiuJ_1_1(f,a,b,eeps)运行结果:积分值为:Tmk(7,6)Romberg_int_value = -7.40022156040567Tmk =-3.86685339559952 0 0 0 0 0-9.70020936318653 -11.64466135238221 0 0 0 0 -8.31611160152487 -7.85474568097098 -7.60208463621023 0 0 0 -7.64060981143519 -7.41544254807197 -7.38615567254537 -7.38272822867767 0 0 -7.46064664732691 -7.40065892595749 -7.39967335114985 -7.39988791747691 -7.39995521037416 0 -7.41534082382738 -7.40023888266086 -7.40021087977442 -7.40021941197481 -7.40022071195323 -7.40022097148557 -7.40400206452101 -7.40022247808555 -7.40022138444719 -7.40022155118803 -7.40022155957710 -7.40022156040567由以上数据可看出当控制精度eeps = 0.000000001时已经达到问题提出中8位有效数字的要求!3.在命令窗口中输入如下命令:syms xint_value=int(13*(x-x3)*exp(-1.5*x),0,4)运行结果:int_value =-7.4002215608086722983248575596314将由此结果和自定义函数YangYi_Romberg_QiuJ_1_1(f,a,b,eeps)运行的结果吻和得很好,说明该函数的正确性!七、 实验中存在的问题及解决方案主要问题是怎样快速地选择较为精确的积分值,对此,在程序中采用增加比较次数的办法。八、心得体会1. 要写程序,必须先把算法看懂!2. 调试程序要有细心,耐心,静心

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论