复化梯形公式求积分.doc
精品文档,仅供学习与交流,如有侵权请联系网站删除武 汉 工 程 大 学 计算机科学与工程学院计算方法实验报告实验项目复化梯形公式求积分实验类别综合实验实验目的及要求实验目的:学会用复化梯形公式求函数的积分,并应用该算法于实际问题。实验要求:要求能随意输入被积函数,进行算法设计,打印出误差限例题:求被积函数在0<x<1上的积分公式:复化梯形公式: 设 , (i=0,1,n-1) 误差限:成 绩 评 定 表类 别评 分 标 准分值得分合 计上机表现积极出勤、遵守纪律主动完成设计任务30分程序代码比较规范、基本正确功能达到实验要求30分实验报告及时递交、填写规范内容完整、体现收获40分说明: 评阅教师: 日 期: 年 月 日实 验 内 容设计分析复化数值积分:将区间a,bn等分,取等距节点由定积分的区间可加性,有在每一个小区间上利用梯形积分公式有一般记称做n+1点复化梯形积分公式。数学公式:算法描述:Step1:输入a,b和正整数n;Step2:置h=(b-a)/n;Step3:F=f(a)+f(b);l=0;Step4:对j=1,2,n循环执行5;Step5:置x=a+jh; l+=f(x);Step6:置T=h(F+2l)/2Step7:输出T;程序源代码:#include<iostream>#include<math.h>using namespace std;double f(double x)/求函数的值;return1/(1+pow(sin(x),2.0); void EchelonIntegral(int n)/梯形积分double y=0;double h=(1.0-0.0)/n;for(int i=0;i<=n;i+)double a=0.0+i*h,b=0.0+(i+1)*h;y=y+h*(f(a)+f(b)/2.0;cout<<"对应所求的梯形求积分为"<<y<<endl;double En=0.0;double mid=(0.0+1.0)/2.0;double x=mid,p=2*sin(2*x)*sin(2*x)*(1+sin(x)*sin(x)-2*cos(2*x)*pow(1+sin(x)*sin(x),2);double f2d=p/pow(1+sin(x)*sin(x),2);for(i=0;i<n;i+)En=En+pow(h,3)/12.0*f2d;cout<<"误差为"<<En<<endl;/*void ParabolicIntegral(int n)/抛物线积分double y=0;double t=(1.0-0.0)/n;for(int i=0;i<n;i+)double a=0.0+i*t,b=0.0+(i+1)*t;y=y+t*(f(a)+f(b)+4*f(a+b)/2.0)/6.0;cout<<"对应所求的抛物线求积分为"<<y<<endl;*/void main()cout<<"*用梯形积分公式求积分1/(1+pow(sin(x),2)的值*"<<endl;cout<<"请输入把0到1的范围几等分?"<<"t"int m1;cin>>m1;EchelonIntegral(m1);cout<<endl;char answer1;cout<<"是否要继续求该算法?(y/n)"<<"t"cin>>answer1;while(answer1='y')cout<<"请输入把0到1的范围几等分?"<<"t"cin>>m1;EchelonIntegral(m1);/3.直线求积分;cout<<endl;cout<<"是否要继续求该算法?(y/n)"<<"t"cin>>answer1;cout<<endl;测试用例实验总结 复化数值积分就是为了减少数值积分的误差,可以把积分区间分成若干小区间,在每个小区间上采取低阶数值积分公式,然后把这些小区间上的数值积分结果加起来作为函数在整个区间上的近似,类似于分段差值。 在此次实验中,我学会了怎样以专业的知识,从专业的角度来考虑所遇见的问题或者与专业相关的问题,并以自己的看法,给予实现。同时,在此次实验中,也有一些不近人意的地方,也需要我不断改进和练习。比如误差怎样取值,保证其最小。【精品文档】第 6 页