




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
淮 北 师范 大学 2010 届学士学位论文 C C 语言求解定积分语言求解定积分 系系别别 专专业业 数学科学学院 信息与计算科学 研研 究究 方方 向向 计算机 学学 生生 姓姓 名名 谢贵龙 学学 号号 06114303068 指导教师姓名指导教师姓名 罗婷婷 指导教师职称指导教师职称 讲师 2010 年 4 月 20 日 C C 语言求解定积分语言求解定积分 谢贵龙 淮北师范大学 数学科学学院 淮北 235000 摘摘 要要 本文以连续函数在闭区间上的定积分为研究的出发点 在简单介绍定积分 连续函数等相关定义后 论述了两种算法思想 并利用 语言编写相应的程序 通过函数举例验证了算法的合理性和正确性 并讨论了这两种算法在适用范围及 精确度上的略微差异 最后通过本文的论述推广到其它求定积分的算法的实现 关键关键词词 C 语言 定积分 编程 C Language to Solve Definite Integral Xie Guilong School of Mathematical Science Huaibei Normal University huaibei 235000 Abstract In this thesis definite integral of a continuous function in the closed interval starting point for research After a brief introduction of definite integral and continuous function definition I discussed the ideas of two algorithms and used the corresponding program written in C And then I verified through the example Function algorithm is correct and reasonable discussed the scope of the two algorithms and the accuracy of the slight difference Finally the request will be extended to other points of the algorithm through the discussion of this thesis Keywords C Language definite integral programming 目目 录录 引言 1 一 C 语言实现定积分计算的算法 1 1 1 定积分 1 1 2C 语言实现定积分计算的算法 2 二 模块构成和各模块功能 3 2 1 关于算法一的模块构成和各模块功能 3 2 2 关于算法二的模块构成和各模块功能 4 三 C 语言求解定积分的具体程序 4 3 1 程序一 复合梯形公式求解定积分 4 3 2 程序二 辛甫生公式求解定积分 5 四 程序编译运行及调试情况 6 4 1 程序一的编译运行及调试情况 6 4 2 程序二的编译运行及调试情况 9 4 3 程序简单分析 11 参考文献 12 致 谢 13 1 引言引言 随着计算机的普及 计算机越来越多的运用于数学领域 但在早期 计算机 实现的数学作用仅仅是四则运算 统计计算等简单的功能 如今 科学发展神速 人们自然要求计算机实现更多样化 更深层次的数学功能 比如对定积分的自动 求解等 长期以来 定积分的求解依赖于手动繁杂的计算 这不仅费时费力 且容易 出错 于是 人们希望通过编写一套程序来实现对定积分的自动求解 然而函数的类型多种多样 定积分的求解方法也灵活多变 不可千篇一律 故本文以最简单的连续函数的定积分求解为出发点 展开研究 以定积分的定义 为思想基础 设计 C 程序 来实现计算机对定积分的自动求解 一 一 C 语言实现定积分计算的算法语言实现定积分计算的算法 1 1 定积分定积分 1 1 1 定积分的定义定积分的定义 1 定积分就是求函数在区间中图线下包围的面积 即 f x a b 所包围的面积 这个图形称为曲边梯形 特例是曲边 0 yxa xb yf x 梯形 如下图 图 1 设一元函数 在区间内有定义 将区间分成个小区间 yf x a b a bn 设 取区间中曲线上任意一点 00112 i a xx xx xx b 1iii xxx i x 记做 作和式 i f 1 lim n n i fi xi 2 若记 为这些小区间中的最长者 当时 若此和式的极限存在 则0 称这个和式是函数 在区间上的定积分 f x a b 记作 b a f x dx 其中称为积分下限 为积分上限 为被积函数 为被ab f x f x dx 积式 为积分号 之所以称其为定积分 是因为它积分后得出的值是确定的 是一个数 而不是一个函数 1 1 2 定定积积分分的的几几何何意意义义 1 它是介于 x 轴 函数 f x 的图形及两条直线 x a x b 之间的各个部分面 积的代数和 在 x 轴上方的面积取正号 在 x 轴下方的面积取负号 如图 图 图 2 1 2 C 语言实现定积分计算的算法语言实现定积分计算的算法 1 2 1 利用复合梯形公式实现定积分的计算利用复合梯形公式实现定积分的计算 2 3 假设被积函数为 积分区间为 把区间等分成个小区间 f x a b a bn 各个区间的长度为 即 称之为 步长 根据定积分的定义及几h hban 何意义 定积分就是求函数在区间中图线下包围的面积 将积分区 f x a b 间等分 各子区间的面积近似等于梯形的面积 面积的计算运用梯形公式求n 解 再累加各区间的面积 所得的和近似等于被积函数的积分值 越大 n 所得结果越精确 以上就是 利用复合梯形公式实现定积分的计算的算法思想 复合梯形公式 2 1 1 2 2 n ni i h Tf af xf b 具体算法如下 算法一 3 Step1 输入积分区间的端点值和 ab Step2 输入区间的等分个数 要求尽可能大 以保证程序运行结果有较nn 高的精确度 Step3 计算步长 hban Step4 对累加和赋初值 2 ab Tff Step5 计算累加和 1 1 n i i Tf x Step6 算出积分值 n TTh Step7 输出积分近似值 完毕 n T 1 2 2 利用辛甫生公式实现定积分的计算利用辛甫生公式实现定积分的计算 假设被积函数为 积分区间为 把区间等分成个小区间 f x a b a bn 各个区间的长度为 在复合梯形公式的基础上 构造出一种加速计算积分的方h 法 作为一种外推算法 它在不增加计算量的前提下提高了误差的精度 具体算法如下 算法二 Step1 输入积分上限和下限 ba Step2 输入区间的等分个数 要求尽可能大 以保证程序运行结果有较nn 高的精确度 Step3 利用辛甫生公式 2 实现对定积分的求解 42 3S nTnT n 其中 均为梯形公式计算所得的结果 由此可见辛甫生公式是以梯 2Tn T n 形公式为基础的 Step4 算出积分值 Sn Step5 输出积分近似值 完毕 Sn 二 模块构成和各模块功能二 模块构成和各模块功能 2 1 关于算法一的模块构成和各模块功能关于算法一的模块构成和各模块功能 该算法利用复合梯形公式的思想来编程 从而实现对连续函数的自动求解 程序主要由两部分组成 1 主函数部分 4 定义区间等分的个数变量 n n 为整型变量 即 int 在此需要强调的是 n 的 值应尽量大 使得程序运算结果更精确 4 定义积分上限变量 b 和下限变量 a 步长变量 h 中间变量 T 以及积分变量 Tn 考虑到实际情况中 这些变量常常不是整数 而单精度实数的有效位数只有 7 位 故定义它们为具有 16 位有效位数的双精度浮点型变量 即 double 主函数部分主要实现对步长 h 的求解 对 T 赋初值 以及 T 的累加求和 积 分值 Tn 的求解和输出等功能 即主函数实现了对复合梯形公式利用的功能 程 序中被积函数是通过函数调用来实现的 2 被调函数 f x 5 该函数的作用在于定义一个被积函数 达到函数举例的目的 由于本论文研 究的出发点为连续函数 故所定义的函数实例应为区间 a b 上连续函数 2 2 关于算法二的模块构成和各模块功能关于算法二的模块构成和各模块功能 6 该算法利用辛甫生公式的思想来编程 以复合梯形公式为基础 从而实现对 连续函数的自动求解 程序主要由三部分组成 1 主函数部分 定义区间等分的个数变量 n n 为整型变量 定义积分上限变量 b 和下限变量 a 以及积分变量 Sn 均为双精度浮点型变 量 由于辛甫生公式中利用到梯形公式 所以主函数需实现对复合梯形公式函数 的调用 2 被调函数 T 该部分是将复合梯形公式作为一个普通函数来定义 是对算法一得变形使用 这样一来 通过主函数利用辛甫生公式计算定积分而调用它 构造出一种加速计 算积分的方法 使计算结果更精确 3 被调函数 f x 定义一个被积函数 达到函数举例的目的 所定义的函数实例应为区间 a b 上连续函数 三 三 C 语言求解定积分的具体程序语言求解定积分的具体程序 3 1 程序一 复合梯形公式求解定积分 程序一 复合梯形公式求解定积分 include void main double f double x 5 f x 为函数举例 即被积函数 int i n n 为区间等分的个数 应尽可能大 double a b h T Tn a 为积分下限 b 为积分上限 h 为步长 printf ji fen xia xian a n scanf lf printf ji fen shang xian b n scanf lf printf qu jian deng fen ge shu n jin ke neng da n scanf d h b a n 步长的计算 T f a f b 2 中间变量 T 赋初值 for i 1 i n i T T f a i h 用循环控制来完成复合梯形公式的运算 Tn T h printf han shu f x de ji fen zhi wei Tn f n Tn 以下为被积函数的定义 即函数举例 double f double x double y y x x return y 3 2 程序二 辛甫生公式求解定积分 程序二 辛甫生公式求解定积分 include void main double T double x double y int z double a b Sn 6 int n printf ji fen xia xian a n scanf lf printf ji fen shang xian b n scanf lf printf qu jian deng fen ge shu n jin ke neng da n scanf d Sn 4 T a b 2 n T a b n 3 利用辛甫生公式求解定积分 printf han shu f x de ji fen zhi wei Sn f n Sn 以下为复合梯形公式的定义 double T double x double y int z double h Tn int i double f double t h y x z Tn f x f y 2 for i 1 i z i Tn Tn f x i h Tn Tn h return Tn 以下为被积函数的定义 即函数举例 double f double t double s s t t return s 四 程序编译运行及调试情况四 程序编译运行及调试情况 4 1 程序一的编译运行及调试情况程序一的编译运行及调试情况 4 1 1 被积函数为被积函数为 f x x x 的情况的情况 7 1 先编译 再运行 屏幕显示及操作如下 输入 4 回车 输入 10 回车 输入 100 回车 手工计算所得结果为 312 2 输入 3 回车 输入 11 回车 输入 150 回车 手工计算所得结果为 434 666667 8 3 输入 3 回车 输入 11 回车 输入 3 回车 手工计算所得结果为 434 666667 4 1 2 被积函数为被积函数为 f x x x x 2 的情况的情况 将被积函数改为 f x x x x 2 具体做法如下 将程序一中的被调函数 double f double x double y y x x return y 改为 double f double x double y y x x x 2 return y 然后重新编译 再运行 屏幕显示及操作如下 输入 45 回车 输入 112 回车 9 输入 10000 回车 手工计算所得结果为 3831296 75 4 2 程序二的编译运行及调试情况程序二的编译运行及调试情况 4 2 1 被积函数为被积函数为 f x x x 的情况的情况 1 输入 4 回车 输入 10 回车 输入 100 回车 手工计算所得结果为 312 比较程序一得出的结果 Tn 312 003600 2 输入 3 回车 10 输入 11 回车 输入 150 回车 手工计算所得结果为 434 666667 比较程序一得出的结果 Tn 434 670459 3 输入 5 回车 输入 5 回车 输入 200 回车 手工计算所得结果为 0 4 2 2 被积函数为被积函数为 f x x x x 2 的情况的情况 输入 45 回车 11 输入 112 回车 输入 10000 回车 手工计算所得结果为 38312961 75 比较程序一得出的结果 Tn 38312961 868049 4 3 程序简单分析程序简单分析 1 从运行所得结果来看以上两个程序虽简短 但能较精确的求解出被积 f x 的 定积分 可见其算法思想 以及程序编辑的正确性 2 从程序调试过程可知 区间等分个数 n 越大 所得结果越精确 比如在 4 1 1 程序一中的 2 3 在相同被积函数 f x x x 相同积分上下限的前提 下 当区间等分个数为 n 150 时 运行所得结果 Tn 434 670459 当区间等分个 数为 n 3 时 运行所得结果 Tn 444 148148 而实际积分值应为 Tn 434 666667 如此说明区间等分个数 n 越大 所得结果越精确 3 从两个程序运行所得结果的对比 显然 程序二比程序一在不增加计算 量的前提下具有较高的精确度 即在条件相同的前提下 利用辛普生公式求解定 积分比利用复合梯形公式求解定积分更有效可行 4 本文的研究具有举一反三的作用 程序二以辛普生公式为思想基础 对 程序一进行改造 使得复合梯形公式在程序二中作为普通函数被调用 构造出一 种加速计算积分的方法 使计算结果更精确 在此值得一提的是 另外两个著名的定积分求解公式 科特斯公式 162 15C nSnS n 龙贝格公式 642 63R nCnC n 科特斯公式是以复合梯形公式和辛普生公式为基础构造出一种加速计算积分 的方法 较复合梯形公式和辛普生公式具有更好的精确度 而龙贝格公式是以复 12 合梯形公式 辛普生公式和科特斯公式为基础构造出一种加速计算积分的方法 比以上三个求积公式精确度都要高 对于这两种算法思想的编程 可类似于
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年三环集团留学生招聘考前自测高频考点模拟试题附答案详解(模拟题)
- 2025湖南邵阳市湘中幼儿师范高等专科学校招聘24人考前自测高频考点模拟试题完整答案详解
- 2025河北沧州市海兴县招聘社区工作者27人考前自测高频考点模拟试题及答案详解一套
- 2025江苏泰兴市人民医院招聘高层次人才(第1批)12人考前自测高频考点模拟试题附答案详解(完整版)
- 2025年合肥长丰县北城世纪城第一小学招聘教师模拟试卷及完整答案详解1套
- 2025年浙江台州温岭市中医院公开招聘编外员工9人(第四批)考前自测高频考点模拟试题有答案详解
- 2025年庆阳地理生物试卷及答案
- 2025贵州遵义医科大学第二附属医院第十三届贵州人才博览会引才17人模拟试卷及一套完整答案详解
- 2025年交际礼仪考试试题及答案
- 2025春季江淮汽车校园招聘正式启动考前自测高频考点模拟试题及一套完整答案详解
- 2025年初级药师资格考试试题(附答案)
- 人工智能与建筑产业体系智能化升级研究报告
- 包覆拉拔法制备铜包铝、铜包钢双金属导线的多维度探究与展望
- 茶叶农药知识培训课件
- 【2025秋季新修订教材】统编语文三上第六单元《19 香港璀璨的明珠》公开课一等奖创新教学设计
- 人教版数学二年级上册第一单元 分类与整 理 综合素养测评A卷(含答案)
- 2025版煤矿安全生产标准化管理体系考试题及答案(采煤部分)
- 油田冬季八防安全经验分享
- 中国近现代史纲要(河北工业大学)智慧树知到答案2024年河北工业大学
- 劳务投标书技术标
- 多模式数据融合在金融预测中的应用
评论
0/150
提交评论