欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    数值分析实验报告(华科书本实验4.1-附C++程序)(共12页).doc

    • 资源ID:14298788       资源大小:354KB        全文页数:12页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数值分析实验报告(华科书本实验4.1-附C++程序)(共12页).doc

    精选优质文档-倾情为你奉上华中科技大学数值分析实验报告考生姓名 考生学号 班 级 指导老师 路志宏 2013年4月15日实验4.1实验目的:复化求积公式计算定积分试验题目:数值计算下列各式右端定积分的近似值。(1);(2);(3);(4);实验要求:(1)若用复化梯形公式、复化Simpson公式和复化Gauss-Legendre I型公式做计算,要求绝对误差限为,分别利用他们的余项对每种算法做出步长的事前估计。(2)分别用复化梯形公式、复化Simpson公式和复化Gauss-Legendre I型公式做计算。(3)将计算结果与精确解做比较,并比较各种算法的计算量。实验内容:1.公式介绍(1)复化梯形公式:=;余项:;(2)复化Simpson公式: =;余项:;(3)复化Gauss-Legendre I型公式:;余项:;2.步长估计(1);则可以得到:;估计步长:;将上述结果分别带入到复化梯形公式、复化Simpson公式和复化Gauss-Legendre I型公式的余项中可以得到:复化梯形公式:;复化Simpson公式:;复化Gauss-Legendre I型公式:;(2);则可以得到:;估计步长:;将上述结果分别带入到复化梯形公式、复化Simpson公式和复化Gauss-Legendre I型公式的余项中可以得到:复化梯形公式:;复化Simpson公式:;复化Gauss-Legendre I型公式:;(3);则可以得到:;估计步长:;将上述结果分别带入到复化梯形公式、复化Simpson公式和复化Gauss-Legendre I型公式的余项中可以得到:复化梯形公式:;复化Simpson公式:;复化Gauss-Legendre I型公式:;(4);则可以得到:;估计步长:;将上述结果分别带入到复化梯形公式、复化Simpson公式和复化Gauss-Legendre I型公式的余项中可以得到:复化梯形公式:;复化Simpson公式:;复化Gauss-Legendre I型公式:;3.C+编程计算结果(1)区间逐次分半求积法:依据“事后误差法”,将区间逐次分半进行计算,并利用前后两次计算结果来判断误差的大小。在逐次二分进行计算时,可以用与来估计误差,这种直接用计算结果来估计误差的方法通常称作误差的事后估计法,若(为计算结果允许的误差),则停止计算,并取作为积分的近似值;否则将区间再次二分后算出,并检验不等式是否满足。 由于是区间分半,因此区间等分数必定是2的n次方。结束输出结果选择题号N复化公式函数选择f(x)开始(2)流程图:(3)计算结果及误差:分别对4题作复化Trapezoid、Simpson、Gauss_Legendre计算,并计算计算值与精确值之间的误差,结果如下表:(1)计算结果表 数据类型求积类型(1)计算值区间二分相邻误差绝对误差区间二分等分复化Trapezoid公式-0.4.18e-0081.3935e-008211=2048复化Simpson公式-0.2.76e-0081.8447e-00925=32Gauss_LegendreI公式-0.1.84e-0081.2298e-00925=32(2)计算结果表 数据类型求积类型(2)计算值区间二分相邻误差绝对误差区间二分等分复化Trapezoid公式3.1.19e-0073.9736e-008211=2048复化Simpson公式3.1.49e-0072.365e-00923=8Gauss_LegendreI公式3.1.06e-0071.6818e-00923=8(3)计算结果表 数据类型求积类型(3)计算值区间二分相邻误差绝对误差区间二分等分复化Trapezoid公式1.1.31e-0074.3655e-008211=2048复化Simpson公式1.1.32e-0088.7812e-01025=32Gauss_LegendreI公式1.1.4e-0079.3656e-00924=16(4)计算结果表 数据类型求积类型(4)计算值区间二分相邻误差绝对误差区间二分等分复化Trapezoid公式7.6.23e-0082.0775e-008213=8192复化Simpson公式7.1.29e-0078.6331e-00925=32Gauss_LegendreI公式7.8.63e-0085.7554e-00925=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<math.h>using namespace std;int N;/*全局变量N,作为题号输入的同时选择对应的f(x)函数*/double a,b,t,s,g,tol=0.5e-7;double f(double x);/*菜单函数*/int select_menu()do/system("cls");cin>>N;while (N<0|N>4);return N;/*主函数*/int main()double v1,v2,v3,v4,e;double Trapezoid(),Simpson(),Gauss_Legendre();cout<<setw(40)<<"实验4.1"<<endl<<"请输入题号1-4,将依次以复化梯形、Simpson、Gauss_Legendre公式"<<endl;for (;)switch(select_menu()/*switch循环选择题号*/case(1):a=2;b=3;v1=log(a)-log(b);cout<<"实验4.1题(1)的精确计算值为 :"<<setprecision(15)<<"v="<<v1<<endl;cout<<" 复化梯形公式计算机结果 :"Trapezoid();cout<<" 绝对误差:e="<<setprecision(5)<<abs(v1-t)<<" < 0.5e-007"<<endl;cout<<" 复化Simpson公式计算结果:"Simpson();cout<<" 绝对误差:e="<<setprecision(5)<<abs(v1-s)<<" < 0.5e-007"<<endl;cout<<" 复化Gauss_Legendre结果 :"Gauss_Legendre();cout<<" 绝对误差:e="<<setprecision(5)<<abs(v1-g)<<" < 0.5e-007"<<endl;system("pause>nul");break;case(2):a=0;b=1;v2=3.979;cout<<"实验4.1题(2)的精确计算值为 :"<<setprecision(15)<<"v="<<v2<<endl;cout<<" 复化梯形公式计算机结果 :"Trapezoid();cout<<" 绝对误差:e="<<setprecision(5)<<abs(v2-t)<<" < 0.5e-007"<<endl;cout<<" 复化Simpson公式计算结果:"Simpson();cout<<" 绝对误差:e="<<setprecision(5)<<abs(v2-s)<<" < 0.5e-007"<<endl;cout<<" 复化Gauss_Legendre结果 :"Gauss_Legendre();cout<<" 绝对误差:e="<<setprecision(5)<<abs(v2-g)<<" < 0.5e-007"<<endl;system("pause>nul");break;case(3):a=0;b=1;v3=2/log(3);cout<<"实验4.1题(3)的精确计算值为 :"<<setprecision(15)<<"v="<<v3<<endl;cout<<" 复化梯形公式计算机结果 :"Trapezoid();cout<<" 绝对误差:e="<<setprecision(5)<<abs(v3-t)<<" < 0.5e-007"<<endl;cout<<" 复化Simpson公式计算结果:"Simpson();cout<<" 绝对误差:e="<<setprecision(5)<<abs(v3-s)<<" < 0.5e-007"<<endl;cout<<" 复化Gauss_Legendre结果 :"Gauss_Legendre();cout<<" 绝对误差:e="<<setprecision(5)<<abs(v3-g)<<" < 0.5e-007"<<endl;system("pause>nul");break;case(4):a=1;b=2;v4=exp(2);cout<<"实验4.1题(4)的精确计算值为 :"<<setprecision(15)<<"v="<<v4<<endl;cout<<" 复化梯形公式计算机结果 :"Trapezoid();cout<<" 绝对误差:e="<<setprecision(5)<<abs(v4-t)<<" < 0.5e-007"<<endl;cout<<" 复化Simpson公式计算结果:"Simpson();cout<<" 绝对误差:e="<<setprecision(5)<<abs(v4-s)<<" < 0.5e-007"<<endl;cout<<" 复化Gauss_Legendre结果 :"Gauss_Legendre();cout<<" 绝对误差:e="<<setprecision(5)<<abs(v4-g)<<" < 0.5e-007"<<endl;system("pause>nul");break;case(0):cout<<"选择退出"<<endl;exit(0);/break;return 0;/*Trapezoid公式*/double Trapezoid()int k=1,i,n;double t0=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)<<" < 1.50e-007"<<endl;return t;/*Simpson公式*/double Simpson()int k=1,i,n;double s0=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)<<" < 1.50e-007"<<endl;return s;/*Gauss_Legendre公式*/double Gauss_Legendre()int k=1,i,n;double g0=0,h,sum;g=(f(a+b)/2-(b-a)/(2*sqrt(3)+f(a+b)/2+(b-a)/(2*sqrt(3)*(b-a)/2;while(abs(g-g0)>=(tol*3)/*事后误差估计,验证前后两次区间分半后的计算值是否小于3*tol,若是,则循环结束*/sum=0;n=2;n=n<<(k-1);g0=g;h=(b-a)/n;for(i=0;i<n;i+)sum+=(f(a+i*h+h/2-h/(2*sqrt(3)+f(a+i*h+h/2+h/(2*sqrt(3);g=h*sum/2;k=k+1;cout<<setprecision(15)<<"g="<<g<<" 区间等分:n=2"<<k-1<<""<<"="<<n<<endl;cout<<setprecision(3)<<" 相邻误差:abs(g-g0)="<<abs(g-g0)<<" < 1.50e-007"<<endl;return g;/*依据题号自动选择对应的f(x)函数*/double f(double x)switch(N)case(1):return(-2.0/(x*x-1);break;case(2):return(4.0/(x*x+1);break;case(3):return(pow(3,x);break;case(4):return(x*(exp(x);break;return 0;专心-专注-专业

    注意事项

    本文(数值分析实验报告(华科书本实验4.1-附C++程序)(共12页).doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开