软件技术基础(VC)课程设 计报告-基于梯形法和辛普生法求定几分的程序.doc_第1页
软件技术基础(VC)课程设 计报告-基于梯形法和辛普生法求定几分的程序.doc_第2页
软件技术基础(VC)课程设 计报告-基于梯形法和辛普生法求定几分的程序.doc_第3页
软件技术基础(VC)课程设 计报告-基于梯形法和辛普生法求定几分的程序.doc_第4页
软件技术基础(VC)课程设 计报告-基于梯形法和辛普生法求定几分的程序.doc_第5页
已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论