




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第八讲第八讲 循环结构的经典算法之二循环结构的经典算法之二程序设计举例程序设计举例 教学重点:教学重点:1.1.用用普通迭代法普通迭代法求方程的近似实根求方程的近似实根2.2.用用二分法二分法求一元非线性方程在某区间上的近似实根求一元非线性方程在某区间上的近似实根3.3.用用牛顿切线法(又叫牛顿切线法(又叫newtonnewton迭代法)迭代法)求方程在某区间求方程在某区间 的近似实根的近似实根4.4.用用矩形法矩形法求一元函数在某区间上的积分近似值求一元函数在某区间上的积分近似值5.5.用用梯形法梯形法求一元函数在某区间上的积分近似值求一元函数在某区间上的积分近似值6.6.加密、解密算法加密
2、、解密算法0.迭代法的一般含义迭代法迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程。也称辗转法,是一种不断用变量的旧值递推新值的过程。例如:上一讲的【例例如:上一讲的【例5 5】:fibonaccifibonacci(斐波纳契数列)(斐波纳契数列)a0= 0a1= 1a2=a0+a1a3=a1+a2a4+=a2+a3a5+=a3+a4a6+=a4+a5an=an-2+an-1 从前有一对长寿兔子,从从前有一对长寿兔子,从出生后第出生后第3个月起每个月都生一个月起每个月都生一对兔子。新生的小兔子长到第对兔子。新生的小兔子长到第3个月后每个月又都生一对兔子,个月后每个月又都生一对兔子,这样
3、一代一代生下去,假设所这样一代一代生下去,假设所有兔子都不死,求兔子增长数有兔子都不死,求兔子增长数量的数列(即每个月的兔子总量的数列(即每个月的兔子总对数)。对数)。0 01 11 12 23 35 58 8a an n0.迭代法的一般含义迭代法迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程。也称辗转法,是一种不断用变量的旧值递推新值的过程。再如:猴子吃桃再如:猴子吃桃 猴子第一天摘下若干桃子,当即吃了一半,还不过瘾,又多吃了一个。猴子第一天摘下若干桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天猴子又将剩下的桃子吃掉一半,又多吃一个。以后每天都吃掉前一第二天猴子又将剩下的桃子吃掉
4、一半,又多吃一个。以后每天都吃掉前一天剩下的一半零一个。到第天剩下的一半零一个。到第10天再想吃时,发现只剩下一个桃子。问猴子天再想吃时,发现只剩下一个桃子。问猴子第一天共摘了多少桃子。第一天共摘了多少桃子。a1a2a3a4a5a6a7a8a9a101a9=2(a10+1) 4a8=2(a9+1) 10a7=2(a8+1) 22a6=2(a7+1) 46a5=2(a6+1) 94a4=2(a5+1) 190a3=2(a4+1) 382a2=2(a3+1) 766a1=2(a2+1) 15340.迭代法的一般含义迭代法迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程。也称辗转法,是一种不断
5、用变量的旧值递推新值的过程。niias10.迭代法的一般含义迭代法迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程。也称辗转法,是一种不断用变量的旧值递推新值的过程。niias11.1.用用普通迭代法普通迭代法求方程的近似实根求方程的近似实根普通迭代法的基本思想:普通迭代法的基本思想:设设 f(x) 是实函数是实函数, , 求方程求方程f(x)=0 的实根。的实根。u 首先将首先将f(x)=0化为它的等价方程化为它的等价方程x=g(x); u 再从某一实数再从某一实数 x x0 0 出发,求序列出发,求序列xn, ,其中:其中: xn-1=g(xn) n=0 n=0,1 1,2 2,u
6、如果序列如果序列x xn n有极限,不访设有极限,不访设xna, ,当当n。对上式两端取极限,。对上式两端取极限,就有就有 a=g(a), 即即 f(a)=0也就是说,也就是说,a是方程是方程f(x)=0的一个实根。的一个实根。其中,其中,x0 称为初始近似根,称为初始近似根,xn称为称为n n次近似根,次近似根,g (x) 称称为迭代函数。误差可用为迭代函数。误差可用| |xn-xn-1| |估计。估计。注意:g(x)必须满足一定的条件,才能保证序列xn在某一区间上的收敛性。这个问题已超出本课讨论的范围。1.1.用用普通迭代法普通迭代法求方程的近似实根求方程的近似实根#include #in
7、clude main()double x0 , x1;x1=2.5; /* 初始近似根初始近似根 */do x0=x1; x1=2.15-sin(1.2*x0); /* 迭代公式迭代公式 */ while(fabs(x1-x0)=1e-4);printf(“方程方程x+sin(1.2x)-2.15=0的近似根的近似根:”);printf(%.4fn,x0); 以上方程的等价形式以上方程的等价形式:x=2.15-sin(1.2x)2.2.用二分法求方程的近似实根用二分法求方程的近似实根二分法的基本思想:二分法的基本思想: 设设 f(xf(x) ) 是连续、实函数是连续、实函数, , 求方程求方程
8、f(xf(x)=0)=0 的实根。的实根。先找到区间先找到区间(a,b),使得,使得f(a),f(b)异号,说明在区间异号,说明在区间(a,b)内一定有实根:内一定有实根:(1) 求求f(a+b)/2)。如果。如果f(a+b)/2)=0,则,则(a+b)/2 就是方程的一个实根,任务完成。就是方程的一个实根,任务完成。(2) 如果如果f(a+b)/2)与与f(b)异号异号, 则说明方程在区间则说明方程在区间(a+b)/2,b)内实根,令内实根,令a=(a+b)/2,转步骤转步骤(1)继续计算。继续计算。(3) 如果如果f(a+b)/2)与与f(a)异号,则说明方程在区间异号,则说明方程在区间(
9、a,(a+b)/2)内有零点,令内有零点,令b=(a+b)/2,转步骤转步骤(1)继续计算。继续计算。u利用这种方法,每次可以把利用这种方法,每次可以把f(x)的零点所在小区间收缩一半,如此下去,区间的的零点所在小区间收缩一半,如此下去,区间的两个端点将逐步逼近函数的零点。此法称为两个端点将逐步逼近函数的零点。此法称为“二分法二分法”。u实际操作时,当实际操作时,当f(a+b)/2)小于要求的误差时,则停止计算,此时小于要求的误差时,则停止计算,此时(a+b)/2称方称方程的一个近似实根。程的一个近似实根。xyaby=f(x)a+bf(b)f(a)f(a+b)/2)例例2:编写程序,用二分法求
10、一元非线性方程:编写程序,用二分法求一元非线性方程f(x)=2x+sinx-2.15=0 在区间在区间 (0,5)上的近似实根上的近似实根r,精确到,精确到0.0001。#include #include main() float a=0,b=5,ab, fa, fb, fab; fa=2*a+sin(a)-2.15; fb=2*a+sin(b)-2.15; if( fa * fb 0 ) printf(“方程可能无实数根!方程可能无实数根!”); else /* 求近似实根求近似实根 */ /* 求近似实根求近似实根 */do ab=(a+b)/2 fab=2*ab+sin(ab)-2.15
11、 ; if (fa * fab =1e-4) ; printf(“方程的近似实根为方程的近似实根为:%.4fn,ab);2.2.用二分法求方程的近似实根用二分法求方程的近似实根xyy=f(x)r3. 3. 用用牛顿切线法牛顿切线法求求方程的近似实根方程的近似实根又称又称newtonnewton迭代法。迭代法。其基本思路:其基本思路:假设假设f(x)是连续、光滑、实函数,求是连续、光滑、实函数,求f(x)=0的实根。的实根。u 设设r是是f(x) = 0的根,选取的根,选取x0作为作为r初始近似值,过点(初始近似值,过点(x0,f(x0))做曲线)做曲线y = f(x)的切线的切线l,l的方程为
12、的方程为y = f(x0)+f(x0)(x-x0),求出,求出l与与x轴交点轴交点的横坐标的横坐标 x1 = x0-f(x0)/f(x0),称,称x1为为r的一次近似值。的一次近似值。u 过点(过点(x1,f(x1))做曲线)做曲线y = f(x)的切线,并求该切线与的切线,并求该切线与x轴交点的横坐轴交点的横坐标标 x2 = x1-f(x1)/f(x1),称,称x2为为r的二次近似值。重复以上过程,得的二次近似值。重复以上过程,得r的的近似值序列。近似值序列。其中其中xn+1=xnf(xn)/f(xn),是,是r r的的n+1n+1次近似值,又称为牛顿迭代公式。次近似值,又称为牛顿迭代公式。
13、(x0,f(x0)x0 x1(x1,f(x1)x23. 3. 用用牛顿切线法牛顿切线法求求方程的近似实根方程的近似实根例例3:编写程序,用:编写程序,用newton迭代法求方程迭代法求方程f(x)=2x+cosx-2.6=0在区间在区间0,4上的近似实根上的近似实根r,迭代初值自选,精确到,迭代初值自选,精确到0.0001。提示提示: :牛顿切线法的迭代公式为牛顿切线法的迭代公式为 x = x f (x) / f (x)x = x f (x) / f (x)#include #include main()float x,x0;x=2;dox0 = x;x=x0 - (2 * x0 + cos(
14、x0) - 2.6 ) / ( 2 - sin(x0) );while(fabs(x-x0)=1e-4);printf(%.4fn,x);xxxxxsin26 . 2cos2定积分概念回顾定积分概念回顾badxxf)(求定积分求定积分值,等价于求曲线值,等价于求曲线y=f(x)、直线、直线x=a、直线、直线x=b与与x轴围成的区域的面积轴围成的区域的面积(图中阴形部分图中阴形部分)。y=f(x)xyx=ax=bba4.4.用用矩形法矩形法求定积分近似值求定积分近似值矩形法的基本思想:矩形法的基本思想:求定积分求定积分l 把区间把区间a,b平均分成平均分成n个小区间,以每个小区间左端点的函数值为
15、宽、个小区间,以每个小区间左端点的函数值为宽、小区间长度为高作矩形,然后把这小区间长度为高作矩形,然后把这n个小矩形的面积相加,即为所求的个小矩形的面积相加,即为所求的定积分的近似值。定积分的近似值。l 显然,小区间数显然,小区间数n越大,求得的定积分的近似求值的精度也越高。越大,求得的定积分的近似求值的精度也越高。badxxf)(的近似值yxabhh=(b-a)/nai=a+(i-1)*hniibaniiafhafhdxxf11)(*)(*)( ai, f(ai) ) 例例4:编写程序,用矩形法求一元函数:编写程序,用矩形法求一元函数f(x)=(4-(sinx)2)(1/2) 在区间在区间0
16、,3.1416/6上的积分近似值上的积分近似值s,保留,保留4位小数(小区间数位小数(小区间数n=15,此参数不,此参数不能改动,否则影响答案,能改动,否则影响答案, 其中其中表示幂运算表示幂运算 )。)。 #include #include main()double x, h, a=0, b=3.1416/6, s=0;int i, n=15;h= ( b - a )/n;for(i = 1; i = n; i+) x = a + (i - 1) * h; s = s + sqrt(4 - sin(x) * sin(x) );s = s * h;printf(“定积的近似值为定积的近似值为%
17、.4fn ,s);4.4.用用矩形法矩形法求定积分近似值求定积分近似值2)(sin4)(xxf5.5.用用梯形法梯形法求定积分近似值求定积分近似值梯形法的基本思想:梯形法的基本思想:求定积分求定积分l 把区间把区间a,b平均分成平均分成n个小区间,以每个小区间左端点的函数值为上个小区间,以每个小区间左端点的函数值为上底、右端点的函数值为下底、小区间长度为高作梯形,然后把这底、右端点的函数值为下底、小区间长度为高作梯形,然后把这n个小个小梯形的面积相加,即为所求的定积分的近似值。梯形的面积相加,即为所求的定积分的近似值。l 显然,小区间数显然,小区间数n越大,求得的定积分的近似求值的精度也越高。
18、并且越大,求得的定积分的近似求值的精度也越高。并且可以看出,对于同样的小区间数,梯形法的精度比矩形法高。可以看出,对于同样的小区间数,梯形法的精度比矩形法高。badxxf)(的近似值h=(b-a)/nai=a+(i-1)*hhhafafdxxfbaniii*2)()()(1yxabh( ai, f(ai) )例例5:用矩形法和梯形法求一元函数:用矩形法和梯形法求一元函数f(x)=e(-x2) 在区间在区间0,1上的积分近似值上的积分近似值s,保留,保留4位小数。位小数。(区间数区间数n=10,此参数不能改动否则影响答案,其中此参数不能改动否则影响答案,其中e为自然对数的底,为自然对数的底,表示
19、幂运算表示幂运算) 5.5.用用梯形法梯形法求定积分近似值求定积分近似值102dxex即,求定积分即,求定积分的近似值。的近似值。c语言库函数中求语言库函数中求ex的函数是的函数是double exp(double x)有关有关c语言更多的库函数,请参考书后附录语言更多的库函数,请参考书后附录#include#includemain() int i,n=10; double a=0, b=1, h, f1, f2, s1 , s2 , x; h = ( b-a ) / n; for( s1=0, s2=0, i=1; i=n; i+) x = a + ( i-1 ) * h; f1 = exp
20、( - x * x ); f2 = exp( - (x + h) * (x + h) ); s1 = s1 + f1 * h; /*矩形面积累加矩形面积累加*/ s2 = s2 + ( f1 + f2 ) * h / 2; /*梯形面积累加梯形面积累加*/ printf(矩形法算得积分值:矩形法算得积分值:%.4lfn, s1); printf(梯形法算得积分值:梯形法算得积分值:%.4lfn, s2);5.5.用用梯形法梯形法求定积分近似值求定积分近似值求 的近似值102dxex6.6.加密、解密算法加密、解密算法(p103)(p103)例例5_33:译密文。规律是将字母变成其后的第译密文。规律是将字母变成其后的第4个字母,非字母字符不变,如个字母,非字母字符不变,如“china!”转换为转换为“
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025冷冻仓储合同范文
- 2025年水果批发的合同模板
- 2025年智能配电自动化项目合作计划书
- 2025年简明劳动合同样本
- 2025物业保安服务合同协议书模板
- 2025健身房的承包合同范本
- 2025年纺织染整助剂:净洗剂项目建议书
- 2025年坤泰胶囊合作协议书
- 2025商业店铺买卖合同范例
- 2025商业大厦物业管理合同
- 2013-2022全国高考真题物理汇编:练习使用多用电表
- 2023年中南大学湘雅二医院康复医学与技术岗位招聘考试历年高频考点试题含答案解析
- GB/T 21567-2008危险品爆炸品撞击感度试验方法
- 《绿色建筑概论》整套教学课件
- 卫生人才培养方案计划
- DB64-T 1684-2020 智慧工地建设技术标准-(高清可复制)
- 婚丧嫁娶事宜备案表
- “三级”安全安全教育记录卡
- 风生水起博主的投资周记
- 赛艇赛事活动推广方案
- 人教版小学五年级数学竞赛试题及答案
评论
0/150
提交评论