




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
编号:36河北工业大学计算机软件技术基础(VC)课程设计报告学院城市学院院班级电信C1136 姓名 王梦迪 学号116108 _成绩 _ _一、题目:基于梯形法和辛普生法求定几分的程序二、设计思路1、总体设计1)分析程序的功能用梯形法和辛普生法求定积分,输入数据,通过调用函数和for循环,计算出他们的定积分。在输出结果中比较,不同的数据,两种方法的精度不同,可通过结果的小数位数,确定哪种方法的精度高。2)系统总体结构:设计程序的组成模块,简述各模块功能。A、对函数进行宏定义,以及调用函数的原型声明。B、编写程序,列出计算公式。C、调用函数用梯形法求定积分:通过函数的调用,利用梯形法的公式求定积分。D、调用函数用辛普生法求定积分:通过函数多次调用,用辛普生法的公式求定积分.2、各功能模块的设计:说明各功能模块的实现方法1) 对源程序的函数源进行声明及宏定义,便于后面的调用。2)主函数部分:编写好主函数程序,里面含有函数调用,成为主调函数;。3)梯形法求定积分:即被调函数部分,利用函数调用及for循环求累加和,计算出此时的函数值并将其反回到主函数中。4)辛普生法求定积分:调用函数求函数值,并利用for循环求累加和。计算出函数的值并返回到主函数中。3、设计中的主要困难及解决方案1)困难1:函数调用比较多,程序冗长,容易出现混乱。解决方案:函数的取名要尽量简单,取名之后按顺序排放。 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);double 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,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; coutabn; 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)(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(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); /调用宏定义 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,double (*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/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; double 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 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、通
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山东水利职业学院《中药鉴定学实验二》2023-2024学年第一学期期末试卷
- 厦门华天涉外职业技术学院《学术研究及论文发表》2023-2024学年第二学期期末试卷
- 四川水利职业技术学院《平法识图与钢筋算量》2023-2024学年第二学期期末试卷
- 江西陶瓷工艺美术职业技术学院《内燃机构造与原理》2023-2024学年第一学期期末试卷
- 湄洲湾职业技术学院《数学分析V》2023-2024学年第一学期期末试卷
- 江西传媒职业学院《工程结构荷载与可靠度》2023-2024学年第二学期期末试卷
- 湖南财经工业职业技术学院《有限元法与应用》2023-2024学年第二学期期末试卷
- 土方工程回填合同
- 建筑工程木工分包合同
- 房产土地使用权买卖合同
- 甘肃省卫生健康委公务员考试招聘112人往年题考
- 2024年茂名市茂南区村后备干部招聘笔试真题
- 2025年云南省中考模拟英语试题(原卷版+解析版)
- 急救知识课件
- 成都设计咨询集团有限公司2025年社会公开招聘(19人)笔试参考题库附带答案详解
- 2025年中考历史试题图解及答案
- 河南农商银行系统招聘真题2024
- 精神科安全健康教育
- 《浓酱白酒企业四川郎酒企业存货管理问题研究(论文9300字)》
- 生产流水线电气控制系统设计毕业
- 《螺杆泵培训资料》课件
评论
0/150
提交评论