积分问题-数值分析上机实验报告.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
积分问题-数值分析上机实验报告

数值分析上机报告 姓 名: 学 号: 专 业: 学 院: 授课教师:胡 杰 昆明理工大学 2012.01.01 《数值分析》实验报告 ——数值积分问题 一、问题的提出 在微积分中,积分值是通过原函数的解析式求得的,即依据人们所熟知的微积分基本定理,对于积分:,只要找到被积函数f(x)的原函数F (x),便有下列牛顿——莱布尼茨(Newton-Leibniz)公式:。然而有的原函数寻找往往比较困难,许多积分函数甚至找不到用初等函数表示的原函数。为此研究数值积分问题是非常必要的。数值积分的至今普遍应用主要有五种:梯形公式、Simpson公式及其两种算法的复化公式、高斯求积公式。本实验只要选用复合Simpson公式及高斯求积公式对特定某个积分,例如:,D={0x1,0y1}进行数值计算,比较分析两种算法的结果,理解数值积分法的意义,明确数值积分精度和步长之间的关系等。 二、目的和意义 深刻理解数值积分的意义: 在微积分中,积分值是通过原函数的解析式求得的,然而原函数的寻找往往比较困难,许多积分函数甚至找不到用初等函数表示的原函数;另外,当是由测量或者数值计算给出的一张数据表时,牛顿—莱布尼茨公式也不能直接运用,为此研究数值积分问题是非常必要的。 明确数值积分的精度与步长的关系: 复化的求积方法对提高精度是行之有效的,但是在使用求积之前必须给出合适的步长,并且高斯求积公式具有比复化求积公式更高的精度,步长取得太大精度难以保证,步长太小则会导致计算量的增加。 根据定积分的计算方法,可以考虑二重积分的计算问题: 在微积分中,二重积分的计算是用化为累次积分的方法进行的。 计算二重数值积分也同样采用累次积分的计算过程。利用二重积分的复化梯形公式设计如下: a,b,c,d为常数,f在D上连续。将它变为化累次积分 做等距节点,x轴,y轴分别有: 先计算,将x作为常数,有 再将y作为常数,在x方向,计算上式的每一项的积分 系数,在积分区域的四个角点为1/4,4个边界为1/2,内部节点为1。 三、计算公式 关于复化辛普森(Simpson)公式及高斯求积公式在以下给出。 复化辛普森(Simpson)公式 为了便于编程可写成 2)高斯求积公式 四、结构程序设计 /复化Simpson算法 #include stdio.h #include math.h double SIMP1(double,double,int); double FUTX(double,double,int); double Func(double); void main() { double a1,b1,x; int n1; a1=0.0; b1=1.0; n1=20;//可设定具体的分段数n=10或者20 printf(%.10f\n,SIMP1(a1,b1,n1)); printf(%.10f\n,FUTX(a1,b1,n1)); // printf(\ntime=%f\n,Atime/60); } double Func(double x) { return(log(1+x)/(1+x*x)); } double SIMP1(double a1,double b1,int n1) { int i; double h,s; h=(b1-a1)/(2*n1); s=0.5*(Func(a1)-Func(b1)); for(i=1;i=n1;i++) s+=2*Func(a1+(2*i-1)*h)+Func(a1+2*i*h); return((b1-a1)*s/(3*n1)); } double FUTX(double a1,double b1,int n1) { int i; double t,h; h=(b1-a1)/n1; t=Func(a1)+Func(b1); for (i=1;i=n1;i++) t+=2*Func(a1+i*h); return((t*h/2)); } //高斯求积公式 #include stdio.h #include malloc.h #include math.h double ROMBG(double,double,double,double,double,double); double Func(double); void main() { double a,b,eps,al,ma,mi; // int n1; a=0.0; b=1.0; eps=1e-5; al=10; ma=10; mi=3;

文档评论(0)

haihang2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档