Xntl 即 f'(zn)= f(En)-0 InIn+1 于是,解上述方程得到 f(cn) In+1 In- f'(xn)】 Previous Next First Last Back Forward 9
= f 0 (xn) = f(xn) − 0 xn − xn+1 u¥, )˛„êß xn+1 = xn − f(xn) f 0(xn) Previous Next First Last Back Forward 9
Newton方法还可以用于最小化或者最大化一个目标函数,由于目标函 数9在极值点处的导数为零,因此最小化或者最大化等价于求方程根: g'(x)=0 从而迭代求解为 f'(zn) In+1 In- f"(xn) 例3使用Newton方法求例1方程的根. nt<-function(bo){ a<-0.5 n<-20 f <-function(y,a,n){ a2+y“2+2*a*y/(n-1)-(n-2) fd<-function(y,a,n){ 2*y+2*a/(n-1) Previous Next First Last Back Forward 10
Newton ê{Ñå±^uÅz½ˆÅåzòá8IºÍ, du8Iº Íg34ä:?Íè", œdÅ z½ˆÅåzdu¶êßä: g 0 (x) = 0 l Sì¶)è xn+1 = xn − f 0 (xn) f 00(xn) ~ 3 ¶^Newtonê{¶~1êßä. ↑Code nt<-function(b0){ a <- 0.5 n <- 20 f <- function(y, a, n) { a^2 + y^2 + 2*a*y/(n-1) - (n-2) } fd<-function(y,a,n){ 2*y+2*a/(n-1) } Previous Next First Last Back Forward 10
b1<-b0 b0<-b0-1 eps <-.Machine$double.eps"0.25 1t<-0 while(it<1000 &abs(b1-b0)>eps){ 1t<-1t+1 b0<-b1 bi<-b0-f(bo,a,n)/fd(bo,a,n) cat(it,c(bo,b1,abs(b1-b0)),"\n") Code Newton方法依赖于f的形状和初值.下图的例子说明Newton方法从初值 开始就发散 Previous Next First Last Back Forward 11
b1<-b0 b0<-b0-1 eps <- .Machine$double.eps^0.25 it<-0 while(it<1000 && abs(b1-b0)>eps){ it<-it+1 b0<-b1 b1<-b0-f(b0,a,n)/fd(b0,a,n) cat(it,c(b0,b1,abs(b1-b0)),"\n") } } ↓Code Newton ê{ù6uf/G⁄–ä. e„~f`²Newtonê{l–ä m©“u—. Previous Next First Last Back Forward 11
我们下面分析一下相邻两步之间的差异.假设f的二阶导数存在连 续,且f'(x*)≠0.因为f'(x*)≠0且f'在x*处连续,则必存在x*的一个邻 域,使得在此区域里,f'(x)≠0.定义ct=x:-x*.以下我们仅在此邻域内考 虑 由Taylor展开式有 0=f(r)=f()+(-)f()+-"") 2 Previous Next First Last Back Forward 12
·Çe°©¤òeɸ⁄Ém…. bfÍ3Î Y,Öf 0 (x ∗) 6= 0. œè f 0 (x ∗) 6= 0Öf 03x ∗?ÎY, K73x ∗òá ç, ¶3d´çp, f 0 (x) 6= 0. ½¬t = xt − x ∗. ±e·Ç=3dçS ƒ. dTaylor–m™k 0 = f(x ∗ ) = f(xt) + (x ∗ − xt)f 0 (xt) + (xt − x ∗) 2 2 f 00(ξ) Previous Next First Last Back Forward 12