欢迎来到天天文库
浏览记录
ID:29720190
大小:106.00 KB
页数:12页
时间:2018-12-22
《复化梯形法复化矩形法变步长梯形变步长辛普森》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、陕西科技大学机械教改班用C++的积分其实积分的思想就是,微分—>求和—>取极限,如果是用纯手工法那就是先对一个函数微分,再求出它的面积,在取极限,因为我们的计算速度和计算量有限,现在有了计算机这个速度很快的机器,我们可以把微分后的每个小的面积加起来,为了满足精度,我们可以加大分区,即使实现不了微分出无限小的极限情况,我们也至少可以用有限次去接近他,下面我分析了四种不同的积分方法,和一个综合通用程序。一.积分的基本思想1、思路:微分—>求和—>取极限。2、Newton—Leibniz公式其中,被积函数的原函数。3、用计算机积分的思路在积分区间内“微分—>求和—>控制精
2、度”。因为计算机求和不可以取极限,也就是不可以无限次的加下去,所以要控制精度。二.现有的理论1、一阶求积公式---梯形公式他只能精确计算被积函数为0、1次多项式时的积分。2、二阶求积分公式——牛顿、科特斯公式他只能精确计算被积函数为0、1、2、3次多项式时的积分。三.四种实现方法1.复化矩形法将积分区间[a,b]等分成n个子区间:则h=(b-a)/n,区间端点值=a+kh............................源程序:#include#includedoublef(doublex)//计算被积函数{double
3、y;y=log(1+x)/(1+x*x);//被积函数returny;}doubleTn(doublea,doubleb,intn)//求Tn{doublet=0.0;doublexk;//区间端点值doublet1,t2;//用来判断精度do{doubleh=(b-a)/n;for(intk=1;k<=n-1;k++)//每一小段的矩形叠加{t1=t;xk=a+k*h;t+=h*f(xk);t2=t;}n++;//如果精度不够就对区间再次细分,直到达到精度要求}while(fabs(t1-t2)<=1e-7);//判断计算精度returnt;}voidmain()
4、{doublea=0.0;//积分下线doubleb=2.0;//积分上限intn=1024;//把区间分为1024段cout<#includedoublef(doublex)//计算被积函数{doubley;y=log(1+x)/(1+x*x);//被积函数returny;}doubleTn(do
5、ublea,doubleb,intn)//求Tn{doublet=0.0;doublexk;//区间端点值doublet1,t2,h=(b-a)/n;//用来判断精度do{h=(b-a)/n;for(intk=1;k<=n-1;k++)//余项叠加,相当于每一个小梯形相加{t1=t;xk=a+k*h;t+=f(xk);t2=t;}n++;//如果精度不够就对区间再次细分,直到达到精度要求}while(fabs(t1-t2)<=1e-7);//判断计算精度t=h*(f(a)+f(b))/2+t*h;//加上初项就是积分结果了returnt;}voidmain(){do
6、ublea=0.0;//积分下线doubleb=2.0;//积分上线intn=1024;//把区间分为1024段cout<7、点的中点处增加一个求积节点,那么变形一下:源程序:#include#includedoublef(doublex)//计算被积函数的值{doubley;y=log(1+x)/(1+x*x);returny;}doublet2ntn(doublea,doubleb){intn=1;doublehn=b-a;//原步长doubletn=0.0;doublet2n=(f(a)+f(b))*hn/2.0;while(fabs(t2n-tn)>1e-7)//判断精度{tn=t2n;t2n=0.0;for(intk=0;k<=n-1;
7、点的中点处增加一个求积节点,那么变形一下:源程序:#include#includedoublef(doublex)//计算被积函数的值{doubley;y=log(1+x)/(1+x*x);returny;}doublet2ntn(doublea,doubleb){intn=1;doublehn=b-a;//原步长doubletn=0.0;doublet2n=(f(a)+f(b))*hn/2.0;while(fabs(t2n-tn)>1e-7)//判断精度{tn=t2n;t2n=0.0;for(intk=0;k<=n-1;
此文档下载收益归作者所有