- 1、本文档共150页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 例3.24 用梯形法求数值积分。 定积分 的几何意义就是求曲线f(x)与直线y=0,x=a,x=b所围成的曲顶梯形的面积。当能找到f(x)的原函数F(x)时,利用牛顿-莱布尼兹公式: 可以精确地求出I值来。当f(x)的原函数不易找到时,便可以借助数值方法近似地求出I的值。 用数值方法计算定积分有两个关键:一是将连续的对象分割为容易求解的一些子对象;二是用迭代法对迭代表达式反复操作。下面介绍一种容易理解的方法——梯形法。 由图3.29所示,一个曲顶梯形可以分割为许多小的宽为h的曲顶梯形。 b f(x) x 0 y a a+h a+ih a+ih+h a+2h … … 图3.29 用梯形法求定积分 当h很小时,每个小的曲顶梯形都可以近似看作是梯形,第i个小曲顶梯形的面积近似为: si=h/2[f(a+ih)+f(a+(i+1)h)] 令 h=(b-a)/n 于是有 当n→∞时,就能准确地求出定积分s。在现实中,只要取相当大的n,使误差小于要求的值,就可以近似地计算出定积分s: s≈h2[f(a)+f(a+h)+f(a+h)+f(a+2h)+…+f(a+(n-1)h)+f(a+(n-1)h)+f(b)]= h/2[f(a)+f(b)]+ 用迭代形式描述为: for(i=1;i=n-1;i++) { s=0.5*hh(f(a)+f(b)) s=s+h*f(a+i*h) } 最后计算的结果,就是函数f(x)的定积分。 下面是一个利用梯形法求函数f(x)= √4-x2的定积分的程序: /* 文件名:ex032401.c */ /*** 用梯形法求积分 ***/ #include stdio.h double f(double x); int main(void)/***求定积分***/ { float a,b; double s,h; int n,i; printf (input integral area a b:); /* 输入一个区间 */ scanf (%f, %f,a,b); printf (input n:); /* 输入迭代次数 */ scanf (%d,n); h=(b-a)/n; s=0.5*h*(f(a)+f(b)); 以下是两次运行记录: input integral area a b:0, 2 input n: 1000 the value is: 3.141555 input integral area a b: 0, 2 input n: 10000 the value is: 3.141591 3.4.5 循环结构的中途退出与重复周期的中途结束 图3.30为循环结构发中途退出(loop-and-half)与一个循环周期的中途结束的示意图。中途退出循环结构就是使用break语句,将流程转到该循环结构的后面。循环周期的的中途结束就是在重复执行到某一个循环周期的中间时,由于某种条件,不需要再执行循环体中后面的语句,提前结束该周期,而进入下一循环周期,在C语言中需要使用continue实现。这两种控制功能不仅用于while结构中,也可以用在do…while和for重复结构中。 while(…) { … … if(…) break; … … } … … while(…) { … … if(…) cotinue; … … } … … (a)循环结构中途退出 (b)一个循环周期的中途退出 图3.30 重复结构中途退出与循环周期的中途结束 1. 中途退出循环结构——break语句 在3.3.3节中已经使用过break语句将流程转出switch结构。break语句还可以将流程中途转出任何一种循环结构。 例3.25 验证素数。 验证一个正整数n>3的数是否为素数,一个最直观的方法是,看在2~n/2中能否找到一个整数m能将n整除。若m存在,则n不是素数;若找不到m,则n为素数。这是一个穷举验证算
文档评论(0)