ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:146.12KB ,
资源ID:10069281      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10069281.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(36基于梯形法和辛普生求定积分.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

36基于梯形法和辛普生求定积分.docx

1、36基于梯形法和辛普生求定积分河北工业大学计算机软件技术基础(VC)课程设计报告学院城市学院院班级电信C1136 姓名 王梦迪 学号116108 _成绩 _ _一、题目:基于梯形法和辛普生法求定几分的程序二、设计思路1、总体设计1)分析程序的功能用梯形法和辛普生法求定积分,输入数据,通过调用函数和for循环,计算出他们的定积分。在输出结果中比较,不同的数据,两种方法的精度不同,可通过结果的小数位数,确定哪种方法的精度高。2)系统总体结构:设计程序的组成模块,简述各模块功能。A、对函数进行宏定义,以及调用函数的原型声明。B、编写程序,列出计算公式。C、调用函数用梯形法求定积分:通过函数的调用,利

2、用梯形法的公式求定积分。D、调用函数用辛普生法求定积分:通过函数多次调用,用辛普生法的公式求定积分.2、各功能模块的设计:说明各功能模块的实现方法1) 对源程序的函数源进行声明及宏定义,便于后面的调用。2)主函数部分:编写好主函数程序,里面含有函数调用,成为主调函数;。3)梯形法求定积分:即被调函数部分,利用函数调用及for循环求累加和,计算出此时的函数值并将其反回到主函数中。4)辛普生法求定积分:调用函数求函数值,并利用for循环求累加和。计算出函数的值并返回到主函数中。3、设计中的主要困难及解决方案1)困难1:函数调用比较多,程序冗长,容易出现混乱。解决方案:函数的取名要尽量简单,取名之后

3、按顺序排放。 2)困难2:计算函数时,涉及到多个函数计算以及for循环求累加和。解决方案:清晰地定义多个函数,及宏定义,利用函数调用的知识,每计算一步,要用return返到主函数中。4、你所设计的程序最终完成的功能1) 向程序中输入a,b,n的值后,会分别用梯形法和辛普生法计算出相应的结果。2) 准备的测试数据和运行结果:三、程序清单#include #include #define HIGH1(a,b,n) (b-a)/n /宏定义 double F1(double x,double y,int z); / 函数原型说明double F2(double x,double y,int z);d

4、ouble f1(double u);double f2(double v);double sum1(double c,double d,int e);double sum2(double p,double q,int r);#define HIGH2(a,b,n) (b-a)/(2*n) /宏定义double F3(double x,double y,int z); /函数说明 double F4(double x,double y,int z); double f3(double u); double f4(double v); double sum5(double p,double q,

5、int r); double sum6(double p,double q,int r); double sum3(double c,double d,int e); double sum4(double c,double d,int e); void integralts(double x,double y,int z,double (*f)(double,double ,int);void integralt(double x,double y,int z,double(*f)(double,double,int);void main() /主函数 int n; double a,b; c

6、outabn; couta=anb=bnn=nendl; cout梯形法:endl; coutintesum1=; integralt(a,b,n,F1); /应用函数指针调用函数 coutintesum2=; integralt(a,b,n,F2); /应用函数指针调用函数 cout辛普生法:endl; coutintesum1=; integralts(a,b,n,F3); /应用函数指针调用函数 coutintesum2=; integralts(a,b,n,F4); /应用函数指针调用函数void integralt(double x,double y,int z,double (*f

7、)(double,double,int) / 利用梯形法球定积分 double ff; ff=(*f)(x,y,z); /用函数指针调用F1函数 coutffendl; double F1(double x,double y,int z) double h,Y1; /定义局部变量 h=HIGH1(x,y,z); /调用宏定义 Y1=h/2*(f1(x)+f1(y)+2*sum1(x,y,z); /梯形法公式 return Y1; /返回梯形法得到的1+x*x的定积分的值double F2(double x,double y,int z) double h,Y2; /定义局部变量 h=HIGH1

8、(x,y,z); /调用宏定义 Y2=h/2*(f2(x)+f2(y)+2*sum2(x,y,z); /梯形法公式,调用f2,sum2函数 return Y2; /返回梯形法得到的1+x+x*x+x*x*x 的定积分的值double f1(double u) double y1; /定义变量 y1=u*u+1; return y1; /返回值 double f2(double v) double y2; /定义变量 y2=1+v+v*v+v*v*v; return y2; /返回值double sum1(double c,double d,int e) double h=HIGH1(c,d,e

9、); /调用宏定义 double s1=0; /定义变量 for(int i=1;i=e-1;i+) /for循环 double g=c+i*h; s1+=f1(g); return s1; /返回值double sum2(double p,double q,int r) double h=HIGH1(p,q,r); /引用宏定义 double s2=0; /定义变量 for(int i=1;i=r-1;i+) /for循环 double g=p+i*h; s2+=f2(g); return s2; /返回值 void integralts(double x,double y,int z,do

10、uble (*f)(double,double ,int) /辛普生法 double ff; ff=(*f)(x,y,z); /函数指针 coutffendl;double F3(double x,double y,int z) double h,Y1; /定义变量 h=HIGH2(x,y,z); Y1=h/3*(f3(x)+f3(y)+4*sum5(x,y,z)+2*sum6(x,y,z); /调用f3,sum5,sum6函数 return Y1; /返回值double F4(double x,double y,int z) double h,Y2; h=HIGH2(x,y,z); Y2=h

11、/3*(f4(x)+f4(y)+4*sum3(x,y,z)+2*sum4(x,y,z); return Y2;double f3(double u) double y1=1+u*u; return y1;double f4(double v) double y2=1+v+v*v+v*v*v; return y2;double sum5(double p,double q,int r) double h=HIGH2(p,q,r); double s=0; for(int i=1;i=2*r-1;i+=2) /for循环 double g=p+i*h; s+=f3(g); return s; do

12、uble sum6(double p,double q,int r) double h=HIGH2(p,q,r); double s=0; for(int i=2;i=2*r-2;i+=2) /for循环 double g=p+i*h; s+=f3(g); return s; double sum3(double c,double d,int e) double h=HIGH2(c,d,e); double s=0; for(int i=1;i=2*e-1;i+=2) double g=c+i*h; s+=f4(g); return s; double sum4(double c,double

13、 d,int e) double h=HIGH2(c,d,e); double s=0; for(int i=2;i=2*e-2;i+=2) double g=c+i*h; s+=f4(g); return s;四、对该设计题目有何更完善的方案1、对自己完成程序进行自我评价。复习了函数和函数指针部分的内容,通过运用函数调用,for循环以及累加和运算,经过反复调试,将近一周的时间,终于完成了课程设计,感觉很充实,进一步熟悉了函数的运用,进步很大,同时课设过程中也是遇到很多困难,通过和同学的讨论和向老师的请教,终于完成了课程设计。2、对课题提出更完善的方案改程序,使一次运行中,可以输入多组数据,并进行计算,在输出结果中可以直观的比较出梯形法与辛普生法求定积分的精度问题。五、收获及心得体会1、通过本次课程设计,自己在哪些方面的能力有所提高。熟悉了函数和函数指针的知识,以及for循环和函数累加和的应用。提高了自学能力,通过不断地调试程序,不断的改进,在此过程中,磨砺了自己的毅力,最终程序成功运行,更增强了今后在学习中的自信。2、 收获和心得体会。1)首先要有耐心;2)增强自学能力,不会就问,或查资料;3)锻炼自己的意志,要能坚持,不放弃,要自信。日期: 2012 年06 月28 日

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1