




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第八讲 循环结构的经典算法之二 程序设计举例 (本节示例需重点掌握) 教学重点: 1.用普通迭代法求一元非线性方程的近似实根r 2.用二分法求一元非线性方程在某区间上的近似实根r 3.用牛顿切线法(又叫Newton迭代法)求一元非线性方程 在某区间上的近似实根r 4.用矩形法求一元函数在某区间上的积分近似值S 5.用梯形法求一元函数在某区间上的积分近似值S 6.加密、解密算法 所谓非线性方程,就是因变量与自变量 之间的关系不是线性的关系,这类方程 很多,例如平方关系、对数关系、指数 关系、三角函数关系等等。 5.9 循环应用举例 1.用普通迭代法求方程的近似实根r 5.9 循环应用举例 1.用普通迭代法求方程的近似实根r 普通迭代法的基本思想: 求一元非线性方程f(x)=0 的实根。 (1)、将方程f(x)=0化为它的等价方程:x=g(x) , g (x) 称为迭代函数。 (2)、设定一个x的初值x0; (3)、用x=g(x)求出x的下一个值x1; (4)、再将x1代入上述公式,求出x的下一个值x2; (5)、如此继续下去,直到前后两次求出的x值满足要求; 迭代法也称辗转法, 是一种不断用变量的 旧值递推新值的过程 。 5.9 循环应用举例 1.用普通迭代法求方程的近似实根r 例1:编写程序,用普通迭代法求方程f(x)=x+sin(1.2x)-2.15=0 在区间0,5上的近似实根r,迭代初值自选,精确到0.0001 。提示:必须把方程f(x)=0化成其等价方程x=g(x) #include #include main() double x,x0; x0=2.5; /*迭代初值自选*/ do x=x0; x0=2.15-sin(1.2*x); /*转化后的等价方程x=g(x) */ while(fabs(x-x0)=1e-4); printf(“%.4fn“,x0); 5.9 循环应用举例 2.用二分法求一元非线性方程在某区间上的近似实根r 原理:对于方程 f(x)=0,解方程即要求f(x)的所有零点, (1) 先输入a、b的值,求f(a)和f(b); (2) 如果f(a)和f(b)同号,说明在区间a,b内无实根,返回步骤(1),重新输入a 和 b的值;如果f(a)和f(b)异号,说明在区间a,b内一定有一个零点,即实根。 (3) 求f(a+b)/2,现在假设f(a)0,(a0,则在区间(a,(a+b)/2)内有零点,令b = (a+b)/2, 从(3)开始继续使用中点函数值判断。 这样就可以不断接近零点,通过每次把f(x)的零点所在小区间收缩一半的方法 , 使区间的两个端点逐步迫近函数的零点,以求得零点的近似值,这种方法叫 做二分法。 例2:编写程序,用二分法求一元非线性方程f(x)=2x+sinx- 2.15=0 在区间 (0,5)上的近似实根r,精确到0.0001。 #include #include main() float a,b,x0,fa,fb,f0; do scanf(“%f,%f“, fa=2*a+sin(a)-2.15; fb=2*b+sin(b)-2.15; while(fa*fb0); do x0=(a+b)/2; f0=2*x0+sin(x0)-2.15 ; if (fa*f0=1e-4) ; printf(“%.4fn“,x0); 5.9 循环应用举例 3. 用牛顿切线法求方程在某区间的近似实根r Newton切线法又叫Newton迭代法。此方法使用函数f(x)的泰 勒 级数的前面几项来寻找方程f(x) = 0的根。 5.9 循环应用举例 3. 用牛顿切线法求方程在某区间的近似实根r u先任意设定一个与真实的根r接近的值x0,作为第一次近似根 ,由x0求出f(x0),过点(x0,f(x0))做 f(x)的切线,切线交x 轴于x1 ; u把x1作为第二次近似根,再由x1求出f(x1) ,过点(x1,f(x1) )做 f(x)的切线,切线交x轴于x2; u把x2作为第三次近似根,再由x2求出f(x2),再做切线。 如此继续下去,直到满足要求,得真实的根r的近似值。 从图中可以看出:切线的斜率 f (x(n)= f(x(n)/ (x(n)-x(n+1) 因此得:x(n+1)=x(n)f(x(n)/f(x(n),称为牛顿迭代公式。 例3:编写程序,用 Newton迭代法求方 程f(x)=2x+cosx- 2.6=0在区间0,4 上的近似实根r,迭 代初值自选,精确 到0.0001。提示:牛 顿切线法的计算公 式为x=x-f(x)/f(x) #include #include main() float x,x0,f,f1; x=2; /*迭代初值自选*/ do x0=x; f=2*x0+cos(x0)-2.6; f1=2-sin(x0); x=x0-f/f1; while(fabs(x-x0)=1e-4); printf(“%.4fn“,x); 5.9 循环应用举例 f1代表 f(x) X0代表前一次的近似根 ,x代表后一次的近似 根。求出一个x后,把 它的值赋给x0,然后用 x0求下一个x。 5.9 循环应用举例 求定积分的近似值常有矩形法与梯形法,其实质都是面积求和 。 l 矩形法是把所要求的面积垂直x轴分成n个小矩形,然后把这n个 小矩形的面积相加,即为所求的定积分的值。 l 梯形法是把所要求的面积垂直分成n个小梯形,然后作面积求和 。 l 这两种近似求值的精度随分割个数n的增加而增加,对于相同的 n个数,相对来说,梯形法的精度比矩形法的要高一些。 初始算法:初始化积分区间(a,b),如果把积分区间划分为 100个格,则每个区间的宽度h=fabs(a-b)/100; 4.用矩形法求一元函数在某区间上的积分近似值s 5.9 循环应用举例 【例5_34】 :编写程 序,用矩形法求一元函 数f(x)=x*x在区间0, 1上的积分近似值S。 (课本P103) 5.9 循环应用举例 #include main() int n,k; float a,b,h,f0,s=0,s1,x; scanf(“%d“, a=0; b=1; h=(b-a)/n; x=a; f0=x*x; for(k=1;k #include main() double x,y=0,h,a=0,b=3.1416/6,s; int i,n=15; h=fabs(a-b)/n; for(i=1;i #include main() int i,n=10; float a=0,b=1,h,t1,t2,s1,s2,x; h=(b-a)/n; for(s1=0,s2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年山东省青岛五十八中物理高二下期末学业质量监测模拟试题含解析
- 浙江省桐乡市凤鸣高级中学2025届高二物理第二学期期末检测模拟试题含解析
- 全国百强名校2025届物理高二下期末教学质量检测模拟试题含解析
- 2025届河北省廊坊市省级示范高中联合体高一物理第二学期期末达标测试试题含解析
- 2025年青海省物理高二下期末复习检测试题含解析
- 微纳结构修复-洞察及研究
- 采购芯模板外贸合同范本
- 金交所产品认购合同范本
- 铝屑回收合同协议书模板
- 股票质押担保合同范本(含股权质押比例)
- 自动化立体库培训
- 2025年苏州市中考历史试卷真题(含标准答案及解析)
- 2025年中国彩色超声多普勒诊断系统市场调查研究报告
- LS-T8014-2023高标准粮仓建设标准
- 焦化厂安全管理制度
- 油气储存企业安全风险评估细则(2025年修订版)
- 小儿心力衰竭的护理查房
- TCSTM00829-2022钢轨自动涡流检测系统综合性能测试方法
- 护理中的卫生防护
- 2025年内蒙古高考物理试卷(含答案)
- 零件清洁度的试题及答案
评论
0/150
提交评论