56求定积分.docx

上传人:b****5 文档编号:8519086 上传时间:2023-01-31 格式:DOCX 页数:7 大小:22.26KB
下载 相关 举报
56求定积分.docx_第1页
第1页 / 共7页
56求定积分.docx_第2页
第2页 / 共7页
56求定积分.docx_第3页
第3页 / 共7页
56求定积分.docx_第4页
第4页 / 共7页
56求定积分.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

56求定积分.docx

《56求定积分.docx》由会员分享,可在线阅读,更多相关《56求定积分.docx(7页珍藏版)》请在冰豆网上搜索。

56求定积分.docx

56求定积分

沈阳航空工业学院

课程设计

学号200704033056

班级7403302班

姓名史耀军

指导教师王晓岩

2009年3月5日

沈阳航空工业学院

课程设计任务书

系:

航空宇航工程学院专业:

飞行器设计与工程班级:

7403302

学号:

200704033056题目:

求定积分

一、课程设计时间

2008~09第2学期第1周,共计1周,20学时。

二、课程设计内容

用C语言编写软件完成以下任务:

用“累计梯形面积”法求定积分的值。

三、课程设计要求

程序质量:

✧贯彻结构化的程序设计思想。

✧用户界面友好,功能明确,操作方便。

✧用户界面中的菜单至少应包括“输入a,b的值”、“开始计算”、“退出”3项。

✧代码应适当缩进,并给出必要的注释,以增强程序的可读性。

课程设计说明书:

✧课程结束后,上交课程设计说明书和源程序。

课程设计说明书的内容参见提供的模板。

四、指导教师和学生签字

指导教师:

________学生签名:

________

 

目录

一、需求分析1

二、程序流程图2

三、核心技术的实现说明及相应程序段4

四、课设总结6

五、参考文献7

六、源程序……………………………………………..9

 

一、需求分析

经过对程序设计题目的分析可知,整个程序的设计实现大致分为三个模块,其中每一个模块对应一个函数,它们的功能分别是:

输入a,b和n值的函数(Input),开始计算的函数(Calculatebegin),退出的函数(exit)。

其中,开始计算函数(Calculatebegin)中又嵌套调用了累计梯形面积的函数(fun),以实现求定积分

的目的。

1、输入a,b和n值的函数主要实现程序最初运行时数据的录入。

a为积分下限,b为积分上限,n为积分段个数。

也就是说,将曲边梯形分成n个高相等的曲边梯形,当n的数值足够大时,每个小曲边梯形可近似看成矩形,将它们累加起来也就实现了积分的目的;

2、开始计算的函数按照题目的具体要求实现定积分

的计算;

3、清屏清除前面计算以留下的算式和数值。

4、退出的函数根据需要终止程序的执行。

二、程序流程图

1、程序总体结构图(见图1)

输入n值

n=1假

输入a,b,n值的函数

Input()

n=2假

计算积分值函数Cal()

n=3假

函数exit()

继续

图1程序总体结构图

2、具体功能框图

(1)输入a,b和n值的函数Input()(见图2)

当1时

输入a,b和n的值

图2输入a,b和n值的函数

(2)计算定积分的函数Calculatebegin()(见图3)

当2时

当i

0=>sum

0=>i

pow(a+i*(b-a)/n,3)+1=>m

sum+(b-a)/n*m=>sum

Sum=>fun()

fun(a,b,n)=>c

输出:

积分下限a)

积分上限b

积分段个数n

积分结果c

图3计算定积分的函数

 

(3)清屏函数clear()

当3时

system("cls")清屏

(4)退出的函数exit()(见图4)

当4时

exit(0)退出

图4退出的函数

三、核心技术的实现说明及相应程序段

本程序主要由三个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。

在这些函数当中,开始计算函数是程序中较为核心的部分,下面对其进行说明。

开始计算

此题目要求用“累计梯形面积”法求定积分

的值。

我的设计思想是,将曲边梯形分成n个高相等的曲边梯形,当n的数值足够大时,每个小曲边梯形可近似看成矩形,将它们累加起来也就实现了积分的目的。

由于积分函数中包括幂次关系,所以用函数2*pow(a+i*(b-a)/n,2)+3*pow(a+i*(b-a)/n,1)+1实现,把它看成矩形的高,i的值每加1高就改变到另一值,然后再与宽(b-a)/n相乘便得到了每个矩形的面积,最后再用for循环把这些矩形累加起来就得到了积分的结果。

具体程序段如下:

floatCalculatebegin()

{

floatc;

floatfun(floata,floatb,floatn);

c=fun(a,b,n);

printf("<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>\n");

printf("积分下限是:

%f\n",a);

printf("积分上限是:

%f\n",b);

printf("积分段个数是:

%f\n",n);

printf("积分结果是:

%f\n",c);

printf("<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>\n");

}

floatfun(floata,floatb,floatn)

{

floatsum,i,m;

sum=0;

for(i=0;i

{

m=2*pow(a+i*(b-a)/n,2)+3*pow(a+i*(b-a)/n,1)+1;

sum=sum+(b-a)/n*m;/*计算每个梯形的面积*/

}

return(sum);

}

四、课设总结

在设计程序的过程中我遇到了很多问题,经过同学们的帮助,这些问题都解决了。

我知道了在计算每一个小梯形面积的时候不应该近似的看成矩形,因为当n的值取很小的时候计算误差会很大。

这是我没考虑到的问题,我感到了C语言编程需要缜密的思维,可是,为了体现这次设计程序的独立性,我的设计是m=2*pow(a+i*(b-a)/n,2)+3*pow(a+i*(b-a)/n,1)+1;//高。

此外我还加入了一个清屏函数,使计算更加方便,快捷,简单。

在以后的学习中,我会以严谨的心态面对每一次程序设计,并把这样的学习态度延用到每个学科的学习中,争取得到更大的进步。

谢谢老师!

五、参考文献

1谭浩强.C程序设计.北京:

清华大学出版社,2005

2刘成等.C语言程序设计实验指导与习题集.北京:

中国铁道出版社,2006

六、源程序

#include

#include

#include

#include

floata,b,n;

floatInput()

{

printf("***********************************\n");

printf("请输入ab和n:

");

scanf("%f%f%f",&a,&b,&n);

return

(1);}

floatCalculatebegin()

{

floatc;

floatfun(floata,floatb,floatn);

c=fun(a,b,n);

printf("*************************积分结果是:

%f***********************\n",c);

return

(1);}

floatfun(floata,floatb,floatn)

{

floatsum,i,m;

sum=0;

for(i=0;i

{

m=2*pow(a+i*(b-a)/n,2)+3*pow(a+i*(b-a)/n,1)+1;//高

sum=sum+(b-a)/n*m;//面积

}

return(sum);

}

floatClear()

{system("cls");/*清屏*/

return

(1);}

voidmain()

{

intx,sum;

while

(1)

{

printf("\n******************************\n");

printf("*定积分计算:

*\n");

printf("*积分下限是:

a*\n");

printf("*积分上限是:

b*\n");

printf("*积分段数是:

n*\n");

printf("*1----输入ab和n;*\n");

printf("*2----开始计算;*\n");

printf("*3----清屏;*\n");

printf("*4----退出;*\n");

printf("******************************\n");

printf("请输入你的选择:

");

scanf("%d",&x);

switch(x)

{

case1:

Input();break;

case2:

Calculatebegin();break;

case3:

Clear();break;

case4:

exit(0);

}

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 表格类模板

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

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