北京交通大学(数字分析研究生课程)2求根课件-11.doc

北京交通大学(数字分析研究生课程)2求根课件-11.doc

  1. 1、本文档共70页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
北京交通大学(数字分析研究生课程)2求根课件-11

第2章 非线性方程的求根方法 本章探讨函数方程求根的常用数值方法的构造和原理,主要介绍非线性方程求根方法的有关知识和方法. 重点论述二分法、简单迭代法、牛顿迭代法及其变形的原理、构造、收敛性等内容。 2.1 实际案例 如下关于角度?的方程 来自某种门的气压控制问题,工程师要求出满足如上方程的?的值以设计出一种自动控制装置。 2.2问题的描述与基本概念 定义2.1 设f(x)为一元连续函数,称 f(x)=0 (2.1) 为函数方程; 当f(x)不是x的线性函数时,称对应的函数方程为非线性方程。 非线性方程中,当函数f(x)是多项式函数时,称为代数方程,否则称为超越方程。 n次代数方程 在非线性方程中,绝大部分是没有求根公式的,因此寻找求近似根的方法是非常重要!。 求根问题的本质 根的存在性、根的范围和根的精确化 根的精确化是方程求根问题的核心。 数值分析中求根方法分类 两类:区间法,迭代法 方法共同点是构造收敛根的数列。 定义2.2 设数列收敛于x*,若存在正数 p 和C,满足 则称的收敛阶为p或方法具有p阶敛速。 当p=1且C1时,称方法线性收敛; 当p=2时,称方法平方收敛; p1时称方法超线性收敛。 收敛阶越大,收敛越快,方法越好! 2.3 二分法 二分法也称对分区间法、对分法等,是最简单的求根方法,属于区间法求根类型。 基本思想 利用连续函数零点定理,将含根区间逐次减半缩小,构造点列来逼近根x*。 1. 构造原理 假设在区间中只有一个根,且满足,则二分法求根数列的构造过程为: 记,取的中点,计算; 判别的值 若,则,终止; 若,则,取; 若,则,取; 记,取的中点 判别是否成立(为给定的精度) 若成立,取x*≈x1,终止; 否则用代替,转①。 按上述步骤求根的方法称为二分法。 (构造过程一般是重复的,其描述要写出其重复体) 求根数列描述 若记第k次二分区间处理得到的含根区间为,则有二分法对应的求根数列算式为 ,。 2.分析 因为,且,所以有的误差满足 (2.2) 于是当时,由 得到 说明由二分法产生的数列总是收敛于根x*的。 计算次数控制 给定精度后,要成立,取k满足 即可,解出k,有 (2.3)(事先估计) 这样就可以保证进行k次二分计算得到的 xk 就是满足精度要求的近似根。 式(2.3)确定的k往往偏大,主要用于理论估计。 由二分法的构造,有 故总成立有 (2.4)(事后估计) 因而当时就有,此时xk是满足精度的近似根。 式(2.4)确定的k往往较小,主要用于实际控制。 例2.1用二分法求方程在区间[1,2]内的根,绝对误差。 解 令,则, 因为,,且在[1,2]内不变号。可知方程在[1,2]内有唯一根。 由二分法算法有 , 由,得 , 由,得 , 类似计算,可得 ,;,,; ,, 得近似解 例2.2 写出二分法求根的算法。 解 二分法算法可以由计算过程和误差控制给出,设非线性方程为,为给定的精度。 因为是实数,为描述其为零的情况,引入充分小的数,用表示。 此外,借助计算机的存贮特点,将二分法中的数列ak都存在变量a中,bk都存在变量b中,用变量x记录xk,由此得二分法算法 二分法算法 输入 a,b,,, 输出 根x 步骤: ① ② 若, 则输出根x,停止 ③ 若,做 否则做 ④ 若 则输出根,停止 否则转① 注:数值实验的编程 二分法程序: Clear[x] f[x_]=Input[“键入函数f(x)=”]; a= Input[“键入左端点a=”]; b=Input[“键入右端点b=”]; Print[“a=”,a, “ b=”,b, “ f(x)=”,f[x]] e1=10^(-10); eps=Input[“键入根的误差限eps=”]; n=0; While[b-aeps, x=(a+b)/2;n=n+1; w=f[x]; If[Abs[w]e1,Print[“n=”,n, “ x=”,x, “ f[x]=”,w];Break[]]; p=f[a]*w//N; If[p0,b=x,a=x]; Print[“n=”,n, “ x=”,x//N, “ eps=”,b-a//N]] 说明:本程序用于求非线性方程f(x)=0在区间[a,b]内的根,这里要求f(x)在区间[a,b]连续,且f(a)f(b)0。程序执行后,先通过键盘输入函数f(x)和区间左端点a和右端点b及根的精度要求e,程序即可给出每次二分的次数和对应的点列x k,其中最后输出的结果即为所求的根。 程序中变量说明: x:存放初值x 0和二分法中的x k a: 存放含根区间的左端点ak b: 存放含根区间的右端点bk e1:描述f(xk)=0的微小值,这里用|f(xk)|e1表示f(x

文档评论(0)

haihang2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档