1、数值分析 非线性方程的牛顿法 (Newton Method of Nonlinear Equations ),内容提纲(Outline),牛顿法及其几何意义收敛性及其收敛速度计算实例及其程序演示,取x0作为初始近似值,将f(x)在x0做Taylor展开:,重复上述过程 ,作为第一次近似值,一、牛顿法及其几何意义,Newton 迭代公式,基本思路:将非线性方程f(x)=0 线性化,牛顿法的几何意义,x 1,x 2,牛顿法也称为切线法,(局部收敛性定理) 设 f (x)C2a, b,若 x* 为 f (x) 在a, b上的根,且 f (x*) 0,则存在 x* 的邻域 使得任取初始值 ,Newto
2、n 法产生的序列 xk 收敛到 x*,且满足,至少平方收敛,二、牛顿法的收敛性与收敛速度,在x*的附近收敛,由Taylor 展开:,令k ,由 f (x*) 0,即可得结论。,证明:Newton法实际上是一种特殊的迭代法,设 x* 是 f 的 m 重根,则令: 且,Answer1: 有局部收敛性,Answer2: 线性收敛,注:Newton法的收敛性依赖于x0 的选取。,x*,有根,根唯一,全局收敛性定理(定理4.7):设 f (x)C2a, b,若 f (a) f (b) 0; 则由Newton法产生的序列 xk 单调地收敛到 f (x)=0 在 a, b 的唯一根x*,且收敛速度至少是二阶
3、的,保证Newton迭代函数将a,b映射于自身,将f(x*)在 xk 处作Taylor展开,对迭代公式两边取极限,得,说明数列xk有下界,故xk单调递减, 从而xk收敛.令,?,三、计算实例及其程序演示,辅助工具: VC程序设计语言 Matlab数学软件,(1) 选定初值x0 ,计算f (x0) , f (x0),计算步骤,(2) 按公式 迭代得新的近似值xk+1,(3) 对于给定的允许精度,如果则终止迭代,取;否则k=k+1,再转步骤(2)计算,允许精度,最大迭代次数,迭代信息,例题1,用Newton法求方程 的根,要求,取初值x00.0,计算如下:,对迭代格式一: the iterativ
4、e number is 27, the numerical solution is 0.442852706 对迭代格式二: the iterative number is 3, the numerical solution is 0.442854401,例题2,求函数 的正实根 精度要求:,从图形中我们可以看出: 在x=7和x=8 之间有一单根; 在x=1和x=2 之间有一重根。,用Matlab画图,查看根的分布情形,初值x08.0 时,计算的是单根, The iterative number is 28,The numerical solution is 7.600001481 初值x01.
5、0 ,计算的是重根, The iterative number is 1356,The numerical solution is 1.198631981,小结,(1) 当f (x)充分光滑且 x* 是f (x) =0的单根时,牛顿法在x*的附近至少是平方收敛的。 (2) 当f (x)充分光滑且 x* 是f (x) =0的重根时,牛顿法在x*的附近是线性收敛的。 (3) Newton法在区间a,b上的收敛性依赖于初值x0 的选取。, 重根 /* multiple root */ 加速收敛法:,Q1: 若 ,Newtons Method 是否仍收敛?,设 x* 是 f 的 n 重根,则: 且 。
6、,因为 Newtons Method 事实上是一种特殊的不动点迭代, 其中 ,则,A1: 有局部收敛性,但重数 n 越高,收敛越慢。,Q2: 如何加速重根的收敛?,A2: 将求 f 的重根转化为求另一函数的单根。,令 ,则 f 的重根 = 的单根。, 正割法 /* Secant Method */ :,Newtons Method 一步要计算 f 和 f ,相当于2个函数值,比较费时。现用 f 的值近似 f ,可少算一个函数值。,切线 /* tangent line */,割线 /* secant line */,切线斜率 割线斜率,需要2个初值 x0 和 x1。,收敛比Newtons Met
7、hod 慢,且对初值要求同样高。, 下山法 /* Descent Method */ Newtons Method 局部微调:,原理:若由 xk 得到的 xk+1 不能使 | f | 减小,则在 xk 和 xk+1 之间找一个更好的点 ,使得 。,注: = 1 时就是Newtons Method 公式。当 = 1 代入效果不好时,将 减半计算。,Algorithm: Newtons Descent Method Find a solution to f (x) = 0 given an initial approximation x0. Input: initial approximation
8、 x0; f (x) and f (x); minimum step size of xmin;tolerance TOL1 for x ; tolerance TOL2 for ; maximum number of iterations Nmax. Output: approximate solution x or message of failure. Step 1 Set k = 1; Step 2 While ( k Nmax) do steps 3-10Step 3 Set = 1; Step 4 Set ; /* compute xk */Step 5 If | x x0 | T
9、OL2 then GOTO Step 4 ; /* compute a better xi */ Step 9 Set x0 = x0 + xmin ; /* move forward anyway to avoid deadlock */Step 10 Set k +; Step 11 Output (Method failed after Nmax iterations); STOP. /* unsuccessful */,计算量未见得减小, 求复根 /* Finding Complex Roots */ Newton 公式中的自变量可以是复数,记 z = x + i y, z0 为初值,
10、同样有,设,代入公式,令实、虚部对应相等,可得,解非线性方程组的牛顿法,将非线性方程组线性化,得到:,其中F(xk)为F(x)在xk处的Jacobi矩阵:,例:用牛顿法解方程组,取初始值(1,1,1),计算如下,N x y z 0 1.0000000 1.0000000 1.00000000 2.1893260 1.5984751 1.3939006 1.8505896 1.4442514 1.2782240 1.7801611 1.4244359 1.2392924 1.7776747 1.4239609 1.2374738 1.7776719 1.4239605 1.2374711 1.7776719 1.4239605 1.2374711,练习:,3. Newton 迭代法是如何推出的? 它若在单根附近收敛,是几阶收敛?在重根附近是几阶收敛?求方程重根时,能达到2阶收敛的改进 Newton 迭代公式是什么,用牛顿法求方程 在区间 1,2 内 的一个实根,要求,2. 导出求立方根 的迭代公式,并讨论其收敛性。,首先导出求根方程 ,再对 使用牛顿法得迭代公式 ,用全局收敛性定理或局部收敛性定理讨论其收敛性。,