昆明理工大学数值分析上机报告4..docVIP

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
昆明理工大学数值分析上机报告4.

数值分析实验报告 姓 名: 学 号:2006231006 专 业:材料学 学 院:云南省新材料制备与加工重点实验室 授课教师: 昆明理工大学研究生院 2006.12.18 《数值分析》实验报告 ——数值积分问题 问题的提出 在微积分中,积分值是通过原函数的解析式求得的,然而原函数的寻找往往比较困难,许多积分函数甚至找不到用初等函数表示的原函数。为此研究数值积分问题是非常必要的。数值积分的至今普遍应用主要有三种:梯形公式、Simpson公式及其复化形式、Romberg算法。本实验只要选用复合梯形公式、复合Simpson公式及Romberg算法对特定某个积分,例如:进行数值计算,比较分析两种算法的结果,理解数值积分法的意义,明确数值积分精度和步长之间的关系等。 目的和意义 深刻理解数值积分的意义: 在微积分中,积分值是通过原函数的解析式求得的,然而原函数的寻找往往比较困难,许多积分函数甚至找不到用初等函数表示的原函数;另外,当是由测量或者数值计算给出的一张数据表时,牛—莱公式也不能直接运用,为此研究数值积分问题是非常必要的。 明确数值积分的精度与步长的关系: 复化的求积方法对提高精度是行之有效的,但是在使用求积之前必须给出合适的步长,步长取得太大精度难以保证,步长太小则会导致计算量的增加。 根据定积分的计算方法,可以考虑二重积分的计算问题: 在微积分中,二重积分的计算是用化为累次积分的方法进行的。 计算二重数值积分也同样采用累次积分的计算过程。利用二重积分的复化梯形公式设计如下: a,b,c,d为常数,f在D上连续。将它变为化累次积分 做等距节点,x轴,y轴分别有: 先计算,将x作为常数,有 再将y作为常数,在x方向,计算上式的每一项的积分 系数,在积分区域的四个角点为1/4,4个边界为1/2,内部节点为1。 计算公式 关于复化梯形、复化Simpson公式及Romberg公式在以下给出。 公式 复化梯形公式 复化Simpson公式 为了便于编程可写成 3)Romberg公式 Romberg积分法是通过用余项公式对梯形法则的误差与步长、Simpson公式误差与步长等进行比较,逐步研究推导而得出。本程序用Romberg数值积分公式计算定积分的近似值,使相邻两次的近似值的绝对值或者相对误差小于给定的误差限,Romberg公式: 结构程序设计 //复化梯形和复化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;

文档评论(0)

sdgr + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档