欢迎来到天天文库
浏览记录
ID:23633465
大小:98.50 KB
页数:6页
时间:2018-11-09
《matlab复化梯形法及龙贝格法计算定积分》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、WORD格式可编辑姓名:樊元君学号:2012200902日期:2012.11.061.实验目的:掌握复化梯形法与龙贝格法计算定积分。2.实验内容:分别写出变步长梯形法与龙贝格法计算定积分的算法,编写程序上机调试出结果,要求所编程序适用于任何类型的定积分,即能解决这一类问题,而不是某一个问题。实验中以下列数据验证程序的正确性。求。专业技术资料整理WORD格式可编辑3.程序流程图:●变步长梯形法流程图:专业技术资料整理WORD格式可编辑●龙贝格法流程图:4.源程序:●变步长梯形法:function[y]=BTX(a,b,e)a=input('a='
2、);b=input('b=');e=input('e=');h=(b-a);t1=((f(a)+f(b))*h)/2;t2=0;%准备初值%专业技术资料整理WORD格式可编辑whileabs(t2-t1)>e%while语句控制计算精度以及控制计算时长ift2~=0%按照变步长梯形法h=h/2;%递推公式求二分后积分值t1=t2;ends=0;x=a+h/2;whilex3、数%ifx~=0y=sin(x)/x;elsey=1;endend●龙贝格法程序:function[y]=LB(a,b,e)formatlonga=input('a=');b=input('b=');e=input('e=');h=(b-a);t1=((f(a)+f(b))*h)/2;k=1;s=0;s1=0;s2=0;c2=0;c1=0;r1=0;r2=0;%准备初值%whilek==14、5、k==26、7、k==38、9、k>=4s=0;x=a+h/2;whilex10、+(t2-t1)/3;ifk==1专业技术资料整理WORD格式可编辑k=k+1;h=h/2;t1=t2;s1=s2;continueendc2=s2+(s2-s1)/15;ifk==2c1=c2;k=k+1;h=h/2;t1=t2;s1=s2;continueendr2=c2+(c2-c1)/63;ifk==3r1=r2;c1=c2;k=k+1;h=h/2;t1=t2;s1=s2;continueendifabs(r2-r1)11、ddisp('插值结果=');disp(r2);endfunction[y]=f(x)%被积分函数%ifx~=0y=sin(x)/x;elsey=1;endend5.运行结果:专业技术资料整理WORD格式可编辑6.实验小结:(1)刚开始没注意到积分中,被积函数在x=0点函数值为1,而编程中函数定义f(x)=sin(x)/x,当x=0时,程序只能得到结果0/0=NaN(无穷大),导致后面积分计算算法完全失去意义,后来采取if和else以特殊情况对待x=0,才解决问题;(2)龙贝格法是对变步长梯形法的升华,在对复合梯形法理解透彻,并且编程合理,再去12、解决龙贝格法编程,容易很多;(3)充分理解两个算法的内涵和推理过程,对于编程正确性有很大帮助,刚开始由于对变步长梯形法理解不到位,一处循环采用if语句(本应采用while)导致计算结果不受约束条件约束的错误;(4)由于龙贝格法至少要算4个T值后才有R值,但由于龙贝格法收敛快,导致第一个R值就已经达到相当位数的有效数字,而导致检验数据中的约束条件根本起不到应有的精度约束效果。专业技术资料整理
3、数%ifx~=0y=sin(x)/x;elsey=1;endend●龙贝格法程序:function[y]=LB(a,b,e)formatlonga=input('a=');b=input('b=');e=input('e=');h=(b-a);t1=((f(a)+f(b))*h)/2;k=1;s=0;s1=0;s2=0;c2=0;c1=0;r1=0;r2=0;%准备初值%whilek==1
4、
5、k==2
6、
7、k==3
8、
9、k>=4s=0;x=a+h/2;whilex10、+(t2-t1)/3;ifk==1专业技术资料整理WORD格式可编辑k=k+1;h=h/2;t1=t2;s1=s2;continueendc2=s2+(s2-s1)/15;ifk==2c1=c2;k=k+1;h=h/2;t1=t2;s1=s2;continueendr2=c2+(c2-c1)/63;ifk==3r1=r2;c1=c2;k=k+1;h=h/2;t1=t2;s1=s2;continueendifabs(r2-r1)11、ddisp('插值结果=');disp(r2);endfunction[y]=f(x)%被积分函数%ifx~=0y=sin(x)/x;elsey=1;endend5.运行结果:专业技术资料整理WORD格式可编辑6.实验小结:(1)刚开始没注意到积分中,被积函数在x=0点函数值为1,而编程中函数定义f(x)=sin(x)/x,当x=0时,程序只能得到结果0/0=NaN(无穷大),导致后面积分计算算法完全失去意义,后来采取if和else以特殊情况对待x=0,才解决问题;(2)龙贝格法是对变步长梯形法的升华,在对复合梯形法理解透彻,并且编程合理,再去12、解决龙贝格法编程,容易很多;(3)充分理解两个算法的内涵和推理过程,对于编程正确性有很大帮助,刚开始由于对变步长梯形法理解不到位,一处循环采用if语句(本应采用while)导致计算结果不受约束条件约束的错误;(4)由于龙贝格法至少要算4个T值后才有R值,但由于龙贝格法收敛快,导致第一个R值就已经达到相当位数的有效数字,而导致检验数据中的约束条件根本起不到应有的精度约束效果。专业技术资料整理
10、+(t2-t1)/3;ifk==1专业技术资料整理WORD格式可编辑k=k+1;h=h/2;t1=t2;s1=s2;continueendc2=s2+(s2-s1)/15;ifk==2c1=c2;k=k+1;h=h/2;t1=t2;s1=s2;continueendr2=c2+(c2-c1)/63;ifk==3r1=r2;c1=c2;k=k+1;h=h/2;t1=t2;s1=s2;continueendifabs(r2-r1)11、ddisp('插值结果=');disp(r2);endfunction[y]=f(x)%被积分函数%ifx~=0y=sin(x)/x;elsey=1;endend5.运行结果:专业技术资料整理WORD格式可编辑6.实验小结:(1)刚开始没注意到积分中,被积函数在x=0点函数值为1,而编程中函数定义f(x)=sin(x)/x,当x=0时,程序只能得到结果0/0=NaN(无穷大),导致后面积分计算算法完全失去意义,后来采取if和else以特殊情况对待x=0,才解决问题;(2)龙贝格法是对变步长梯形法的升华,在对复合梯形法理解透彻,并且编程合理,再去12、解决龙贝格法编程,容易很多;(3)充分理解两个算法的内涵和推理过程,对于编程正确性有很大帮助,刚开始由于对变步长梯形法理解不到位,一处循环采用if语句(本应采用while)导致计算结果不受约束条件约束的错误;(4)由于龙贝格法至少要算4个T值后才有R值,但由于龙贝格法收敛快,导致第一个R值就已经达到相当位数的有效数字,而导致检验数据中的约束条件根本起不到应有的精度约束效果。专业技术资料整理
11、ddisp('插值结果=');disp(r2);endfunction[y]=f(x)%被积分函数%ifx~=0y=sin(x)/x;elsey=1;endend5.运行结果:专业技术资料整理WORD格式可编辑6.实验小结:(1)刚开始没注意到积分中,被积函数在x=0点函数值为1,而编程中函数定义f(x)=sin(x)/x,当x=0时,程序只能得到结果0/0=NaN(无穷大),导致后面积分计算算法完全失去意义,后来采取if和else以特殊情况对待x=0,才解决问题;(2)龙贝格法是对变步长梯形法的升华,在对复合梯形法理解透彻,并且编程合理,再去
12、解决龙贝格法编程,容易很多;(3)充分理解两个算法的内涵和推理过程,对于编程正确性有很大帮助,刚开始由于对变步长梯形法理解不到位,一处循环采用if语句(本应采用while)导致计算结果不受约束条件约束的错误;(4)由于龙贝格法至少要算4个T值后才有R值,但由于龙贝格法收敛快,导致第一个R值就已经达到相当位数的有效数字,而导致检验数据中的约束条件根本起不到应有的精度约束效果。专业技术资料整理
此文档下载收益归作者所有