数值积分-(论文)

上传人:F****n 文档编号:99251610 上传时间:2019-09-18 格式:DOC 页数:27 大小:432KB
返回 下载 相关 举报
数值积分-(论文)_第1页
第1页 / 共27页
数值积分-(论文)_第2页
第2页 / 共27页
数值积分-(论文)_第3页
第3页 / 共27页
数值积分-(论文)_第4页
第4页 / 共27页
数值积分-(论文)_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《数值积分-(论文)》由会员分享,可在线阅读,更多相关《数值积分-(论文)(27页珍藏版)》请在金锄头文库上搜索。

1、 数值积分(一)目录第一章 数值积分计算的重述11.1引言11.2问题重述2第二章 复化梯形公式22.1 复化梯形公式的算法描述32.2 复化梯形公式在C语言中的实现32.3 测试结果4第三章 复化simpson公式53.1 复化simpson公式的算法描述53.2 复化simpson公式在C语言中的实现63.3 测试结果7第四章 复化cotes公式84.1 复化cotes公式的算法描述84.2 复化cotes公式在C语言中的实现94.3 测试结果10第五章 Romberg积分法115.1 Romberg积分法的算法描述115.2 Romberg积分法在C中的实现125.3 测试结果13第六章

2、 结果对比分析和体会14参考文献16附录17考虑到公司仍有部分低层及高层人员的补充,因此在选择招聘渠道供应商的附加值时以配送普工现场招聘会和高端人才交流会为佳,另外根据供应商平台实力,若能给公司提供合适的猎头服务也应当纳入甄选范畴。数值积分(一)第一章 数值积分计算的重述1.1引言数值积分是积分计算的重要方法,是数值逼近的重要内容,是函数插值的最直接应用,也是工程技术计算中常常遇到的一个问题。在应用上,人们常要求算出具体数值,因此数值积分就成了数值分析的一个重要内容。在更为复杂的计算问题中,数值积分也常常是一个基本组成部分。在微积分理论中,我们知道了牛顿-莱布尼茨(Newton-Leibniz

3、)公式其中是被积函数的某个原函数。但是随着学习的深入,我们发现一个问题: 对很多实际问题,上述公式却无能为力。这主要是因为:它们或是被积函数没有解析形式的原函数,或是只知道被积函数在一些点上的值,而不知道函数的形式,对此,牛顿莱布尼茨(Newton-Leibniz)公式就无能为力了。此外,即使被积函数存在原函数,但因找原函数很复杂,人们也不愿花费太多的时间在求原函数上,这些都促使人们寻找定积分近似计算方法的研究,特别是有了计算机后,人们希望这种定积分近似计算方法能在计算机上实现,并保证计算结果的精度,具有这种特性的定积分近似计算方法称为数值积分。由定积分知识,定积分只与被积函数和积分区间有关,

4、而在对被积函数做插值逼近时,多项式的次数越高,对被积函数的光滑程度要求也越高,且会出现Runge现象。如时,Newton-Cotes公式就是不稳定的。因而,人们把目标转向积分区间,类似分段插值,把积分区间分割成若干小区间,在每个小区间上使用次数较低的Newton-Cotes公式,然后把每个小区间上的结果加起来作为函数在整个区间上积分的近似,这就是复化的基本思想。本文主要研究的公式有: 复化梯形公式复化Simpson公式复化Cotes公式Romberg积分法。1.2 问题重述本文主要介绍微积分方程的复化解法。通过运用复化梯形公式、复化Simpose公式、复化cotes公式和Romberg积分法这

5、四种积分法方法,解出微分方程的近似解。并进行误差分析和结果比较。当积分区间a,b的长度较大,而节点个数n + 1固定时,直接使用Newton-Cotes公式的余项将会较大,而如果增加节点个数,即n + 1增加时,公式的舍入误差又很难得到控制,为提高公式的精度,又使算法简单易行,往往使用复化方法。即将积分区间a,b分成若干个子区间,然后在每个小区间上使用低阶Newton-Cotes公式,最后将每个小区间上的积分的近似值相加。将定积分的积分区间a b分割为n等份各节点为 ,k=0,1,n 在子区间(k=0,1,1.n-1)上使用Newton Cotes公式将子区间分割为l等份,节点为记为在子区间上

6、作f(x)的l阶Newton-Cotes求积公式由积分的区间可加性,可得复化求积公式第二章 复化梯形公式2.1 复化梯形公式的算法描述复化求积公式当L=1时可得复化梯形公式: = 复化梯形公式=2.2 复化梯形公式在C语言中的实现复化梯形公式运用的程序如下: T0=(a-b)*(f_x(a)+f_x(b)/2;/n=1时的cotes公式即梯形公式for(i=1;i=100;i+) /计算sum_num、xishu、s_point(start point)、d_point sum_num=pow(2,i-1); xishu=double(a-b)/sum_num; s_point=double(

7、b)+double(a-b)/pow(2,i); d_point=double(a-b)/pow(2,i-1); for(j=1;j=sum_num;j+) add_T=add_T+f_x(s_point+(j-1)*d_point); add_T=add_T*xishu; T1=(T0+add_T)/2; err_T=(T1-T0)/3; /output printf(%d %d %10.8f %10.8f,i,pow(2,i),T1,err_T); printf(n); if(err_T=0) err_T=(-1)*err_T; if(err_T=E) break; else T0=T1;

8、 T1=0; add_T=0; err_T=0; 在这个函数中我们将复化梯形公式和积分过程都用计算机语言表示出来。首先我们给出复化梯形公式,进行迭代,直到精确度达到设定要求,算出最后结果。2.3 测试结果用复化梯形有效数字四位求得的结果如下:用复化梯形有效数字七位求得的结果如下:由以上结果可以看出取两个不同的精度相对误差比较小,但计算次数大大的增加,复化梯形公式计算次数多。第三章 复化simpson公式3.1 复化simpson公式的算法描述复化求积公式当L=2时可得复化梯形公式: = 复化simpson公式= 3.2 复化simpson公式在C语言中的实现复化梯形公式运用的程序如下:T0=(

9、a-b)*(f_x(a)+4*f_x(a+b)/2)+f_x(b)/6;/n=2的cotes公式即simpson公式 for(i=1;i=100;i+) /计算sum_num、xishu、s_point(start point)、d_point /long powl (long double x, long double y) sum_num=pow(2,i-1); /the same as T xishu=double(a-b)/sum_num/6; s_point=double(b)+double(a-b)/pow(2,i); d_point=double(a-b)/pow(2,i-1);

10、 sd_point=double(a-b)/sum_num/4; for(j=1;j=sum_num;j+) add_T=add_T+2*f_x(s_point+(j-1)*d_point)-4*f_x(s_point-sd_point+(j-1)*d_point)-4*f_x(s_point+sd_point+(j-1)*d_point); add_T=add_T*xishu; T1=(T0-add_T)/2; err_T=(T1-T0)/15; /output printf(%d %d %10.8f %10.8f,i,pow(2,i),T1,err_T); printf(n); if(er

11、r_T=0) err_T=(-1)*err_T; if(err_T=E) break; else T0=T1; T1=0; add_T=0; err_T=0; 在这个函数中我们将复化simpose公式和积分过程都用计算机语言表示出来。首先我们给出复化simpose公式,进行迭代,直到精确度达到设定要求,算出最后结果。3.3 测试结果用复化simpose迭代取有效数字四位求得的结果如下:用复化simpose迭代取有效数字七位求得的结果如下:由以上结果可以看出两次不同精度要求的计算可以看出不同精度计算计算次数相差较多。精度为四和七间计算次数相差了三次。第四章 复化cotes公式4.1 复化cote

12、s公式的算法描述复化求积公式当L=4时可得复化梯形公式: =复化cotes公式=4.2 复化cotes公式在C语言中的实现复化cotes公式运用的程序如下: T0=(a-b)*(7*f_x(1)+32*f_x(2)+12*f_x(3)+32*f_x(4)+7*f_x(5)/90;/四阶(n=4)cotes公式。 for(i=1;i=100;i+) sum_num=pow(2,i-1); /the same as T xishu=double(a-b)/sum_num/90; s_point=double(b)+double(a-b)/pow(2,i); d_point=double(a-b)/

13、pow(2,i-1); sd_point=double(a-b)/sum_num/8; for(j=1;j=sum_num;j+) add_T=add_T-2*f_x(s_point+(j-1)*d_point)-32*f_x(s_point-sd_point+(j-1)*d_point)+20*f_x(s_point-2*sd_point+(j-1)*d_point)-32*f_x(s_point-3*sd_point+(j-1)*d_point)-32*f_x(s_point+sd_point+(j-1)*d_point)+20*f_x(s_point+2*sd_point+(j-1)*d_point)-32*f_x(s_point+3*sd_point+(j-1)*d_point); add_T=add_T*xishu; T1=(T0-add_T)/2; err_T=(T1-T0)/63; /outpu

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号