数值分析实验报告_第1页
数值分析实验报告_第2页
数值分析实验报告_第3页
数值分析实验报告_第4页
数值分析实验报告_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

华中科技大学数值分析实验报告考生姓名考生学号班级指导老师路志宏2013年4月15日

实验实验目的:复化求积公式计算定积分试验题目:数值计算下列各式右端定积分的近似值。(1);(2);(3);(4);实验要求:(1)若用复化梯形公式、复化Simpson公式和复化Gauss-LegendreI型公式做计算,要求绝对误差限为,分别利用他们的余项对每种算法做出步长的事前估计。(2)分别用复化梯形公式、复化Simpson公式和复化Gauss-LegendreI型公式做计算。(3)将计算结果与精确解做比较,并比较各种算法的计算量。

实验内容:1.公式介绍(1)复化梯形公式: =; 余项:;(2)复化Simpson公式:=;余项:;(3)复化Gauss-LegendreI型公式: ; 余项:;2.步长估计(1); 则可以得到:;; ; 估计步长:;将上述结果分别带入到复化梯形公式、复化Simpson公式和复化Gauss-LegendreI型公式的余项中可以得到: 复化梯形公式:;; 复化Simpson公式:;; 复化Gauss-LegendreI型公式:;;(2); 则可以得到:;; ; 估计步长:;将上述结果分别带入到复化梯形公式、复化Simpson公式和复化Gauss-LegendreI型公式的余项中可以得到: 复化梯形公式:;; 复化Simpson公式:;; 复化Gauss-LegendreI型公式:;;(3); 则可以得到:;; ; 估计步长:;将上述结果分别带入到复化梯形公式、复化Simpson公式和复化Gauss-LegendreI型公式的余项中可以得到: 复化梯形公式:;; 复化Simpson公式:;; 复化Gauss-LegendreI型公式:;;(4); 则可以得到:;; ; 估计步长:;将上述结果分别带入到复化梯形公式、复化Simpson公式和复化Gauss-LegendreI型公式的余项中可以得到: 复化梯形公式:;; 复化Simpson公式:;; 复化Gauss-LegendreI型公式:;;++编程计算结果(1)区间逐次分半求积法:依据“事后误差法”,将区间逐次分半进行计算,并利用前后两次计算结果来判断误差的大小。在逐次二分进行计算时,可以用与来估计误差,这种直接用计算结果来估计误差的方法通常称作误差的事后估计法,若(为计算结果允许的误差),则停止计算,并取作为积分的近似值;否则将区间再次二分后算出,并检验不等式是否满足。由于是区间分半,因此区间等分数必定是2的n次方。结束输出结果选择题号N复化公式函数选择f(x)开始(2)流程图:结束输出结果选择题号N复化公式函数选择f(x)开始(3)计算结果及误差:分别对4题作复化Trapezoid、Simpson、Gauss_Legendre计算,并计算计算值与精确值之间的误差,结果如下表:(1)计算结果表数据类型求积类型(1)计算值区间二分相邻误差绝对误差区间二分等分复化Trapezoid公式-0.20435092^11=2048复化Simpson公式-0.99529082^5=32Gauss_LegendreI公式-0.68783862^5=32(2)计算结果表数据类型求积类型(2)计算值区间二分相邻误差绝对误差区间二分等分复化Trapezoid公式13853362^11=2048复化Simpson公式51224822^3=8Gauss_LegendreI公式55271552^3=8(3)计算结果表数据类型求积类型(3)计算值区间二分相邻误差绝对误差区间二分等分复化Trapezoid公式49690862^11=2048复化Simpson公式45413182^5=32Gauss_LegendreI公式44388812^4=16(4)计算结果表数据类型求积类型(4)计算值区间二分相邻误差绝对误差区间二分等分复化Trapezoid公式19706122^13=8192复化Simpson公式07563762^5=32Gauss_LegendreI公式93175262^5=32由上表中的误差分析可知,利用题目所要求的复化求积公式运算的结果均在绝对误差限内,精度满足要求。由各种算法的步长可知,复化梯形公式、复化Simpson公式和复化Gauss_LegendreI公式在相同精度的情况下,其步长依次减少,相应地,其计算量也依次递减。四、总结由于计算过程使用的“事后误差估计法”,区间分半,因此区间都是划分为2的k次方等分,因此最后实际等分数应该是大于由余项计算得出的区间等分数的某个2的k次方。例如(1),由余项计算法求出的复化梯形公式、Simpson公式、Gauss_LegendreI公式的区间等分数n分别为1792、21、19,而“事后误差估计法”的区间等分数n为相应的2048、32、32,这个结果符合实际情况。这次数值分析试验,加深我对复化求积公式的理解。通过此次数值分析试验,我掌握了利用复化求积公式求解定积分的方法。相信,在未来的科研中,作为数值计算基本工具的复化求积方法,一定会为科研过程中遇到的数值计算问题提供极大的便利。感谢与我共同探讨该问题的几位同学,感谢知识渊博的路老师!5.附C++程序#include<iostream>#include<iomanip>#include<>usingnamespacestd;intN;/*全局变量N,作为题号输入的同时选择对应的f(x)函数*/doublea,b,t,s,g,tol=;doublef(doublex);/************************************菜单函数**************************************/intselect_menu(){ do { //system("cls"); cin>>N; }while(N<0||N>4); returnN;} /*************************************主函数***************************************/intmain(){ doublev1,v2,v3,v4,e; doubleTrapezoid(),Simpson(),Gauss_Legendre(); cout<<setw(40)<<"实验"<<endl<<"请输入题号1-4,将依次以复化梯形、Simpson、Gauss_Legendre公式"<<endl; for(;;) { switch(select_menu())/*switch循环选择题号*/ { case(1):a=2;b=3; v1=log(a)-log(b); cout<<"实验题(1)的精确计算值为:"<<setprecision(15)<<"v="<<v1<<endl; cout<<"复化梯形公式计算机结果:"; Trapezoid(); cout<<"绝对误差:e="<<setprecision(5)<<abs(v1-t)<<"<"<<endl; cout<<"复化Simpson公式计算结果:"; Simpson(); cout<<"绝对误差:e="<<setprecision(5)<<abs(v1-s)<<"<"<<endl; cout<<"复化Gauss_Legendre结果:"; Gauss_Legendre(); cout<<"绝对误差:e="<<setprecision(5)<<abs(v1-g)<<"<"<<endl; system("pause>nul"); break; case(2):a=0;b=1; v2=; cout<<"实验题(2)的精确计算值为:"<<setprecision(15)<<"v="<<v2<<endl; cout<<"复化梯形公式计算机结果:"; Trapezoid(); cout<<"绝对误差:e="<<setprecision(5)<<abs(v2-t)<<"<"<<endl; cout<<"复化Simpson公式计算结果:"; Simpson(); cout<<"绝对误差:e="<<setprecision(5)<<abs(v2-s)<<"<"<<endl; cout<<"复化Gauss_Legendre结果:"; Gauss_Legendre(); cout<<"绝对误差:e="<<setprecision(5)<<abs(v2-g)<<"<"<<endl; system("pause>nul"); break; case(3):a=0;b=1; v3=2/log(3); cout<<"实验题(3)的精确计算值为:"<<setprecision(15)<<"v="<<v3<<endl; cout<<"复化梯形公式计算机结果:"; Trapezoid(); cout<<"绝对误差:e="<<setprecision(5)<<abs(v3-t)<<"<"<<endl; cout<<"复化Simpson公式计算结果:"; Simpson(); cout<<"绝对误差:e="<<setprecision(5)<<abs(v3-s)<<"<"<<endl; cout<<"复化Gauss_Legendre结果:"; Gauss_Legendre(); cout<<"绝对误差:e="<<setprecision(5)<<abs(v3-g)<<"<"<<endl; system("pause>nul"); break; case(4):a=1;b=2; v4=exp(2); cout<<"实验题(4)的精确计算值为:"<<setprecision(15)<<"v="<<v4<<endl; cout<<"复化梯形公式计算机结果:"; Trapezoid(); cout<<"绝对误差:e="<<setprecision(5)<<abs(v4-t)<<"<"<<endl; cout<<"复化Simpson公式计算结果:"; Simpson(); cout<<"绝对误差:e="<<setprecision(5)<<abs(v4-s)<<"<"<<endl; cout<<"复化Gauss_Legendre结果:"; Gauss_Legendre(); cout<<"绝对误差:e="<<setprecision(5)<<abs(v4-g)<<"<"<<endl; system("pause>nul"); break; case(0):cout<<"选择退出"<<endl; exit(0); //break; } } return0;}/*********************************Trapezoid公式************************************/doubleTrapezoid(){ intk=1,i,n; doublet0=0,h,sum; t=(f(a)+f(b))*(b-a)/2; while(abs(t-t0)>=(tol*3))/*事后误差估计,验证前后两次区间分半后的计算值是否小于3*tol,若是,则循环结束*/ { sum=0;n=2;n=n<<(k-1); t0=t;h=(b-a)/n; for(i=1;i<n;i++) { sum+=f(a+i*h); } t=h*(f(a)+f(b))/2+h*sum; k=k+1; } cout<<setprecision(15)<<"t="<<t<<"区间等分:n=2^"<<k-1<<""<<"="<<n<<endl; cout<<setprecision(3)<<"相邻误差:abs(t-t0)="<<abs(t-t0)<<"<"<<endl; returnt;}/*********************************Simpson公式************************************/doubleSimpson(){ intk=1,i,n; doubles0=0,h,sum,sum1; s=(f(a)+4*f((a+b)/2)+f(b))*(b-a)/6; while(abs(s-s0)>=(tol*3))/*事后误差估计,验证前后两次区间分半后的计算值是否小于3*tol,若是,则循环结束*/ { sum=0;n=2;n=n<<(k-1); s0=s;h=(b-a)/n;sum1=f(a+h/2); for(i=1;i<n;i++) { sum+=f(a+i*h); sum1+=f(a+i*h+h/2); } s=h*(f(a)+4*sum1+2*sum+f(b))/6; k=k+1; } cout<<setprecision(15)<<"s="<<s<<"区间等分:n=2^"<<k-1<<""<<"="<<n<<endl; cout<<setprecision(3)<<"相邻误差:abs(s-s0)="<<abs(s-s0)<<"<"<<endl; returns;}/********************************Gauss_Legendre公式***********************************/doubleGauss_Legendre(){ intk=1,i,n; doubleg0=0,h,sum; g=(f((a+b)/2-(b-a)

温馨提示

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

评论

0/150

提交评论