一维搜索法

一、迭代法概述

1.迭代法

考虑求解这个无约束优化问题:minxRnf(x)\min _{\boldsymbol{x} \in \mathbb{R}^{n}} f(\boldsymbol{x})

选取初始点 x0Rnx^{0} \in \mathbb{R}^{n} ,按一定规则(迭代规则)产生点列 x1,x2,,xkx^{1}, x^{2}, \cdots, x^{k} ,记为 {xk}\{\boldsymbol{x}^{k}\} ,使得 xk\boldsymbol{x}^{k} 恰好是优化问题的一个最优解,或该点列 {xk}\{\boldsymbol{x}^{k}\} 收敛到优化问题的一个最优解。

迭代的定义:
1.在 xkx^{k} 处确定一个方向 dk\boldsymbol{d}^{k}
2.然后确定沿着射线 x=xk+αdk(α>0)\boldsymbol{x}=\boldsymbol{x}^{k}+\alpha \boldsymbol{d}^{k}(\alpha>0) 走多远,即确定一个步长 αk\alpha_{k} ,从而得到新迭代点xk+1=xk+αkdk\boldsymbol{x}^{k+1}=\boldsymbol{x}^{k}+\alpha_{k} \boldsymbol{d}^{k}

通常希望: f(xk+1)f(xk)f(\boldsymbol{x}^{k+1}) \leq f(\boldsymbol{x}^{k})

2.下降方向dk\boldsymbol{d}^{k}的确定

在点 xkx^{k} 处,若对于方向 pk0p^{k} \neq 0 ,存在实数 δ>0\delta>0 ,使得对任意的 α(0,δ)\alpha \in(0, \delta) 有:f(xk+αpk)<f(xk)f(\boldsymbol{x}^{k}+\alpha \boldsymbol{p}^{k})<f(\boldsymbol{x}^{k})成立,则称 pk\boldsymbol{p}^{k} 为函数 f(x)f(\boldsymbol{x}) 在点 xk\boldsymbol{x}^{k} 处的一个下降方向。

设函数 f:ΩRnRf: \Omega \subseteq \mathbb{R}^{n} \rightarrow \mathbb{R} 在点 xk\boldsymbol{x}^{k} 处一阶可导, pRn\boldsymbol{p} \in \mathbb{R}^{n}nn 维非零向量,如果满足f(xk)Tp<0\nabla f(\boldsymbol{x}^{k})^{\mathrm{T}} \boldsymbol{p}<0,则 pp 为函数 f(x)f(x) 在点 xkx^{k} 处的一个下降方向。

3.最优步长αk\alpha_{k}的确定

确定了搜索方向 dk\boldsymbol{d}^{k} 后,下一步就要确定步长 αk\alpha_{k} ,常见的方法有 3 种:

  1. 固定步长法:将步长 αk\alpha_{k} 固定为一常数(例如令 αk=1\alpha_{k}=1 )。(固定步长法无法保证目标函数值下降。)
  2. 可接受步长法:在能够保证目标函数值下降或整体下降的前提下,步长 αk\alpha_{k} 可任意选取。
  3. (精确)一维搜索或(精确)线搜索:沿搜索方向使目标函数值下降最多,即沿射线 x=xk+αdk(α>0)\boldsymbol{x}=\boldsymbol{x}^{k}+\alpha \boldsymbol{d}^{k}(\alpha>0) 求目标函数 f(xk+αdk)f(\boldsymbol{x}^{k}+\alpha \boldsymbol{d}^{k}) 的极小点。

具体而言,(精确)一维搜索或(精确)线搜索在确定步长 αk\alpha_{k} 时, αk>0\alpha_{k}>0 通常满足:f(xk+αkdk)=minα>0f(xk+αdk)f(\boldsymbol{x}^{k}+\alpha_{k} \boldsymbol{d}^{k})=\min _{\alpha>0} f(\boldsymbol{x}^{k}+\alpha \boldsymbol{d}^{k})αk=argminα>0f(xk+αdk)\alpha_{k}=\arg \min _{\alpha>0} f(\boldsymbol{x}^{k}+\alpha \boldsymbol{d}^{k}),即选择一个能够使目标函数值下降最多的步长,简称最优步长。这其实就是求单变量函数(一元函数)极小点的问题:minα>0f(xk+αdk)minα>0f(α)\min _{\alpha>0} f(\boldsymbol{x}^{k}+\alpha \boldsymbol{d}^{k}) \Leftrightarrow \min _{\alpha>0} f(\alpha)

4.迭代法步骤

给定初始点 x0\boldsymbol{x}^{0} ,令 k=0k=0

  1. 确定 xk\boldsymbol{x}^{k} 处的下降方向 dk\boldsymbol{d}^{k}
  2. 确定步长 αk>0\alpha_{k}>0 使得目标函数值下降,也即:f(xk+αkdk)f(xk)f(\boldsymbol{x}^{k}+\alpha_{k} \boldsymbol{d}^{k}) \leq f(\boldsymbol{x}^{k})
  3. xk+1=xk+αkdk\boldsymbol{x}^{k+1}=\boldsymbol{x}^{k}+\alpha_{k} \boldsymbol{d}^{k}
  4. xk+1x^{k+1} 满足终止准则,停止迭代;否则令 k=k+1k=k+1 ,转 Step 1。
5.迭代算法的评判

收敛性

  • 算法收敛:存在正整数 NN 满足: xN=x\boldsymbol{x}^{N}=\boldsymbol{x}^{*}limk+xk=x\lim _{k \rightarrow+\infty} \boldsymbol{x}^{k}=\boldsymbol{x}^{*}
  • 局部收敛:存在 x\boldsymbol{x}^{*} 的某邻域 Nδ(x)N_{\delta}(\boldsymbol{x}^{*}) ,使得仅当 x0Nδ(x)\boldsymbol{x}^{0} \in N_{\delta}(\boldsymbol{x}^{*}) 时,算法产生的点列 {xk}\{x^{k}\} 才收敛于 xx^{*} ,称该算法具有局部收敛性质。
  • 全局收敛:在定义域内任取初值 x0\boldsymbol{x}^{0} ,由算法产生的点列 {xk}\{\boldsymbol{x}^{k}\} 都收敛于 xx^{*} ,称该算法具有全局收敛性质。

收敛速度

线性收敛:
x\boldsymbol{x}^{*} 为问题 minf(x)\min f(\boldsymbol{x}), xRn\boldsymbol{x} \in \mathbb{R}^{n} 的最优解。由算法 AA 产生的序列 {xk}\{\boldsymbol{x}^{k}\} 收敛于 x\boldsymbol{x}^{*} ,即 limk+xk=x\lim _{k \rightarrow+\infty} x^{k}=x^{*}如果存在一个与 kk 无关的常数 β(0,1)\beta \in(0,1) 以及某个正整数 k0k_{0} ,使得当 kk0k \geq k_{0} 时,有xk+1x2βxkx2\|\boldsymbol{x}^{k+1}-\boldsymbol{x}^{*}\|_{2} \leq \beta\|\boldsymbol{x}^{k}-\boldsymbol{x}^{*}\|_{2}成立,则称序列 {xk}\{\boldsymbol{x}^{k}\} 线性收敛,或称算法 AA 是线性收敛的。

不失一般性,可以假设上式对于任意 k0k \geq 0 都成立,于是有:

xkx2βxk1x2β2xk2x2βkx0x2\|x^{k}-x^{*}\|_{2} \leq \beta\|x^{k-1}-x^{*}\|_{2} \leq \beta^{2}\|x^{k-2}-x^{*}\|_{2} \leq \cdots \leq \beta^{k}\|x^{0}-x^{*}\|_{2}

limk+xkx2=0\lim _{k \rightarrow+\infty}\|\boldsymbol{x}^{k}-\boldsymbol{x}^{*}\|_{2}=0 。当 kk \rightarrow \infty 时,点 xkx^{k}xx^{*} 的距离,大致以公比为 β\beta 的等比序列(几何序列)减小,因此线性收敛速度相当于相应的等比数列的收敛速度。

p 阶收敛:设由算法 AA 产生的序列 {xk}\{\boldsymbol{x}^{k}\} 收敛于 x\boldsymbol{x}^{*} 。如果存在一个与 kk 无关的常数 β>0\beta>0p>1p>1 ,及某个正整数 k0k_{0} ,使得当 kk0k \geq k_{0} 时,xk+1x2βxkx2p\|\boldsymbol{x}^{k+1}-\boldsymbol{x}^{*}\|_{2} \leq \beta\|\boldsymbol{x}^{k}-\boldsymbol{x}^{*}\|_{2}^{p}成立,则称序列 {xk}\{\boldsymbol{x}^{k}\} 为 p 阶收敛的,或称序列 {xk}\{\boldsymbol{x}^{k}\} 的收敛阶为 p ,或称算法 AA 是 p 阶收敛的。

  • 当 1<p<2 时,则称序列 {xk}\{\boldsymbol{x}^{k}\} 为超线性收玫的。
  • 当 p=2 时,则称序列 {xk}\{\boldsymbol{x}^{k}\} 为二阶收敛的。
  • 该定义中,数值解与最优解间的差异性用范数 2\|\cdot\|_{2} 来刻画。可将 2\|\cdot\|_{2} 理解为数值解与最优解间的距离。

终止准则
假设算法 A 产生的序列 {xk}\{\boldsymbol{x}^{k}\} 收敛于最优解 x\boldsymbol{x}^{*} 。那么,算法何时停止迭代?

若算法可以收敛,则当 xkx2\|\boldsymbol{x}^{k}-\boldsymbol{x}^{*}\|_{2} 较小时, xk+1xk2\|\boldsymbol{x}^{k+1}-\boldsymbol{x}^{k}\|_{2} 也较小。所以终止准则通常取为: xk+1xk2ϵ1\|\boldsymbol{x}^{k+1}-\boldsymbol{x}^{k}\|_{2} \leq \epsilon_{1}xk+1xk2ϵ1xk2\|\boldsymbol{x}^{k+1}-\boldsymbol{x}^{k}\|_{2} \leq \epsilon_{1}^{\prime}\|\boldsymbol{x}^{k}\|_{2} 。其他终止条件如:f(xk+1)f(xk)ϵ2|f(\boldsymbol{x}^{k+1})-f(\boldsymbol{x}^{k})| \leq \epsilon_{2}f(xk+1)f(xk)ϵ2f(xk)|f(\boldsymbol{x}^{k+1})-f(\boldsymbol{x}^{k})| \leq \epsilon_{2}^{\prime}|f(\boldsymbol{x}^{k})|
另外若函数一阶可导,通常可采取: f(xk)2ϵ3\|\nabla f(\boldsymbol{x}^{k})\|_{2} \leq \epsilon_{3}

二、一维搜索方法(线搜索方法)

1.解析法

若目标函数一维可导,通常采用解析法求解最优步长αk\alpha_{k},即令df(x)dx=0\frac{d f(x)}{d x}=0

2.数值法

在进行最优解的计算前,先要进行搜索区间的确定。

搜索区间:设 f(x)f(x) 是定义在一元空间上的函数,x=argminxf(x)x^{*}=\arg \min _{x} f(x) 。若存在区间 [a,b][a, b] 使得 x(a,b)x^{*} \in(a, b) ,则称 [a,b][a, b] 为一维搜索问题的搜索空间。

单谷函数:若 xx^{*} 使得 f(x)f(x) 在区间 [a,x][a, x^{*}] 上严格递减,并且在区间 [x,b][x^{*}, b] 上严格递增,则称 f(x)f(x) 为搜索区间 [a,b][a, b] 上的单谷函数。

方法1
设单谷函数 f(x)f(x) 在某定义域内一阶连续可导,则可按如下方法确定初始搜索区间:

  1. 任意选一个初始点 x0x_{0} 以及步长 Δx\Delta x
  2. f(x0)<0f^{\prime}(x_{0})<0 ,则极小点位于 x0x_{0} 的右侧,那么令 x1=x0+Δxx_{1}=x_{0}+\Delta x
    • f(x1)>0f^{\prime}(x_{1})>0 ,则令 [a,b]=[x0,x1][a, b]=[x_{0}, x_{1}]
    • f(x1)<0f^{\prime}(x_{1})<0 ,则令 x0=x1x_{0}=x_{1} ,返回 Step 2 。
  3. f(x0)>0f^{\prime}(x_{0})>0 ,则作类似于 Step 2 的情况去讨论。

方法2(进退法)(无需计算导数):
给定初始点 x1x_{1} ,初始步长 Δx>0\Delta x>0

  1. x2=x1+Δxx_{2}=x_{1}+\Delta x ,计算 f(x1)f(x_{1})f(x2)f(x_{2}) ,若 f(x1)f(x2)f(x_{1}) \geq f(x_{2}) ,则转 Step 2;否则,转 Step 3;
  2. Δx=2Δxx3=x2+Δx\Delta x=2 \Delta x, x_{3}=x_{2}+\Delta x ,计算 f(x3)f(x_{3}) 。若 f(x2)f(x3)f(x_{2}) \leq f(x_{3}) ,则得区间 [x1,x3][x_{1}, x_{3}] 为初始区间,停止搜索;若 f(x2)>f(x3)f(x_{2})>f(x_{3}) ,则令 x1=x2x2=x3x_{1}=x_{2}, x_{2}=x_{3} ,转 Step 2。
  3. x3=x2x_{3}=x_{2}x2=x1x_{2}=x_{1}Δx=2Δx\Delta x=2 \Delta xx1=x2Δxx_{1}=x_{2}-\Delta x ,计算 f(x1)f(x_{1}) 。若 f(x1)f(x2)f(x_{1}) \geq f(x_{2}) ,则取 [x1,x3][x_{1}, x_{3}] 为初始区间,停止搜索;若 f(x1)<f(x2)f(x_{1})<f(x_{2}) ,转 Step 3。

得到初始搜索区间后,可以采用试探法或函数逼近法进一步求解最优步长。

(1)试探法

基本思想:从一个包含极小点的初始区间 [a,b][a, b] 开始,按照一定规则往区间内放入试探点,通过比较试探点与区间端点的函数值或导数值,不断缩短包含极小点的搜索区间。当区间长度缩小到一定程度 (达到误差精度要求),那么区间上任意一点都可以作为极小点的近似。通常取最终区间的中点作为近似极小点。

二分法

基本思想:
f(x)f(x) 为单谷函数且在 [ak,bk][a_{k}, b_{k}] 内一阶连续可导,且 f(ak)<0f^{\prime}(a_{k})<0f(bk)>0f^{\prime}(b_{k})>0
ck=(ak+bk)2c_{k}=\frac{(a_{k}+b_{k})}{2} ,若 f(ck)=0f^{\prime}(c_{k})=0 ,则 ckc_{k} 为极小点;
f(ck)>0f^{\prime}(c_{k})>0 ,则令 ak+1=ak,bk+1=cka_{k+1}=a_{k}, b_{k+1}=c_{k}
f(ck)<0f^{\prime}(c_{k})<0 ,则令 ak+1=ck,bk+1=bka_{k+1}=c_{k}, b_{k+1}=b_{k}
按照上述思想,逐步将初始搜索空间 [a,b][a, b] 缩小,当搜索区间的长度充分小时,可将最终区间的中点取做极小点的近似点。

算法步骤:

  1. 给定初始区间 [a1,b1][a_{1}, b_{1}] ,满足 f(a1)<0,f(b1)>0f^{\prime}(a_{1})<0, f^{\prime}(b_{1})>0 ,且允许误差为 ϵ>0\epsilon>0 ,令 k=1k=1
  2. bkakϵ|b_{k}-a_{k}| \leq \epsilon ,停止运算;否则,取 ck=ak+bk2c_{k}=\frac{a_{k}+b_{k}}{2} ,转 Step 3。
  3. 计算 f(ck)f^{\prime}(c_{k})
    f(ck)=0f^{\prime}(c_{k})=0 ,则令 x=ckx^{*}=c_{k} ,停止运算;
    f(ck)<0f^{\prime}(c_{k})<0 ,则令 ak+1=ck,bk+1=bka_{k+1}=c_{k}, b_{k+1}=b_{k} ,转 Step 4;
    f(ck)>0f^{\prime}(c_{k})>0 ,则令 ak+1=ak,bk+1=cka_{k+1}=a_{k}, b_{k+1}=c_{k} ,转 Step 4。
  4. k=k+1k=k+1 ,返回 Step 2。

适用条件:二分法适用于 f(x)f(x) 的导数存在且容易计算的情况下。

优点:

  • 每次以搜索区间的中点作为试探点,计算量小,算法简洁易于实现;
  • 总能收敛到一个局部极小点。

缺点:

  • 要求目标函数至少一阶连续可导;
  • 收敛速度很慢。

黄金分割法

基本思想:
在搜索区间内 [ak,bk][a_{k}, b_{k}] 取两个试探点 λk\lambda_{k}μk\mu_{k},将区间分成三段。通过比较试探点处的函数值,使搜索区间缩短;不断迭代使得包含极小点的搜索区间不断缩短,最终得到极小点或近似极小点。

算法步骤:

  1. 设置初始区间 [a1,b1][a_{1}, b_{1}] 和允许误差 ϵ>0\epsilon>0 ,计算试探点 λ1=a1+0.382(b1a1)\lambda_{1}=a_{1}+0.382(b_{1}-a_{1})μ1=a1+0.618(b1a1)\mu_{1}=a_{1}+0.618(b_{1}-a_{1}) 及对应的函数值 f(λ1),f(μ1)f(\lambda_{1}), f(\mu_{1}) ,令 k=1k=1
  2. bkakϵ|b_{k}-a_{k}| \leq \epsilon ,则停止运算,取 x=ak+bk2x^{*}=\frac{a_{k}+b_{k}}{2} ;否则,当 f(λk)>f(μk)f(\lambda_{k})>f(\mu_{k}) 时,转 Step 3;当 f(λk)f(μk)f(\lambda_{k}) \leq f(\mu_{k}) 时,转 Step 4;
  3. [ak+1,bk+1]=[λk,bk][a_{k+1}, b_{k+1}]=[\lambda_{k}, b_{k}]λk+1=μk\lambda_{k+1}=\mu_{k}f(λk+1)=f(μk)f(\lambda_{k+1})=f(\mu_{k}),计算 μk+1=ak+1+0.618(bk+1ak+1)\mu_{k+1}=a_{k+1}+0.618(b_{k+1}-a_{k+1})f(μk+1)f(\mu_{k+1}) ,转 Step 5;
  4. [ak+1,bk+1]=[ak,μk][a_{k+1}, b_{k+1}]=[a_{k}, \mu_{k}]μk+1=λk\mu_{k+1}=\lambda_{k}f(μk+1)=f(λk)f(\mu_{k+1})=f(\lambda_{k}),计算 λk+1=ak+1+0.382(bk+1ak+1)\lambda_{k+1}=a_{k+1}+0.382(b_{k+1}-a_{k+1})f(λk+1)f(\lambda_{k+1}) ,转 Step 5;
  5. k=k+1k=k+1 ,返回 Step 2。

适用条件:黄金分割法对函数的要求较低,函数可以不连续。因为该算法仅利用函数值而非函数的导数来缩小搜索区间。

优点:

  • 对函数要求低,不要求函数可微,只需要计算函数值;
  • 新区间里包含原来的试探点,且该试探点在下一步被利用 (即每次只需计算一个试探点),计算量小;
  • 试探点的计算公式一致。

收敛性:
黄金分割法是线性收敛速度。

补充:为什么采用0.618作为分割比?

记当前的搜索区间为 [ak,bk][a_{k}, b_{k}] ,设试探点为 λk\lambda_{k}μk\mu_{k} ,其中 λk<μk\lambda_{k}<\mu_{k}
f(λk)f(μk)f(\lambda_{k}) \leq f(\mu_{k}) ,则 x[ak,μk]x^{*} \in[a_{k}, \mu_{k}]
f(λk)>f(μk)f(\lambda_{k})>f(\mu_{k}) ,则 x[λk,bk]x^{*} \in[\lambda_{k}, b_{k}]
那么下一个搜索区间取为 [ak,μk][a_{k}, \mu_{k}][λk,bk][\lambda_{k}, b_{k}]

为了机会均等,我们选取对称的试点,即μkak=bkλk\mu_{k}-a_{k}=b_{k}-\lambda_{k}。另外,要求区间缩短率相同,即bk+1ak+1=ρ(bkak)b_{k+1}-a_{k+1}=\rho(b_{k}-a_{k}),其中 0<ρ<10<\rho<1 为区间缩短率。

分情况讨论:
f(λk)f(μk)f(\lambda_{k}) \leq f(\mu_{k}) ,则取 [ak+1,bk+1]=[ak,μk][a_{k+1}, b_{k+1}]=[a_{k}, \mu_{k}] ,那么:

λk=ak+(1ρ)(bkak),μk=ak+ρ(bkak)\begin{aligned} \lambda_{k} & =a_{k}+(1-\rho)(b_{k}-a_{k}), \\ \mu_{k} & =a_{k}+\rho(b_{k}-a_{k}) \end{aligned}

同理,当 f(λk)>f(μk)f(\lambda_{k})>f(\mu_{k}) 时,可证上两式也成立。

可见,一旦 0<ρ<10<\rho<1 确定, λk\lambda_{k}μk\mu_{k} 便可算出。
那么 ρ\rho 应该取多少呢?

类似上一页的做法,再分情况讨论,发现
f(λk)f(μk)f(\lambda_{k}) \leq f(\mu_{k}) ,那么 [ak+1,bk+1]=[ak,μk][a_{k+1}, b_{k+1}]=[a_{k}, \mu_{k}] ,进一步有:μk+1=ak+1+ρ(bk+1ak+1)=ak+ρ2(bkak)\mu_{k+1}=a_{k+1}+\rho(b_{k+1}-a_{k+1})=a_{k}+\rho^{2}(b_{k}-a_{k}),又注意到 λk=ak+(1ρ)(bkak)\lambda_{k}=a_{k}+(1-\rho)(b_{k}-a_{k}) 。因此,当 ρ2=1ρ\rho^{2}=1-\rho 时, μk+1=λk\mu_{k+1}=\lambda_{k} 。此时,第 k+1k+1 步无需计算 μk+1\mu_{k+1}
同理,当 f(λk)>f(μk)f(\lambda_{k})>f(\mu_{k}) ,那么 [ak+1,bk+1]=[λk,bk][a_{k+1}, b_{k+1}]=[\lambda_{k}, b_{k}] ,若 ρ2=1ρ\rho^{2}=1-\rhoλk+1=μk\lambda_{k+1}=\mu_{k} ,即第 k+1k+1 步无需计算 λk+1\lambda_{k+1}

解方程 ρ2=1ρ\rho^{2}=1-\rhoρ>0\rho>0 ,得 ρ=5120.618\rho=\frac{\sqrt{5}-1}{2} \approx 0.618ρ=512\rho=\frac{-\sqrt{5}-1}{2} (舍)。于是得到试探点的计算公式:

λk=ak+0.382(bkak),μk=ak+0.618(bkak)0\begin{aligned} \lambda_{k} & =a_{k}+0.382(b_{k}-a_{k}), \\ \mu_{k} & =a_{k}+0.618(b_{k}-a_{k})_{0} \end{aligned}

由于区间缩短率 ρ\rho 满足ρ1=1ρρ\frac{\rho}{1}=\frac{1-\rho}{\rho},是黄金分割数,故该方法称为黄金分割法或 0.618 法。

(2)函数逼近法(牛顿法)

基本思想:
在极小点附近任取一个初始点,用迭代点处的二阶 Taylor 多项式作为原函数的近似(即用该函数逼近原函数),然后求近似函数的极小点。若所求得的点不是原问题的极小点,便让它作为下一个迭代点;依次迭代下去,直到求得原问题的极小点或近似极小点。

牛顿迭代公式:
设当前迭代点为 xkx^{k} ,则 f(x)f(x)xkx^{k} 处的二次近似函数为:gk(x)=f(xk)+f(xk)(xxk)+12f(xk)(xxk)2g_{k}(x)=f(x^{k})+f^{\prime}(x^{k})(x-x^{k})+\frac{1}{2} f^{\prime \prime}(x^{k})(x-x^{k})^{2}
求该近似函数的极小点,两边对 xx 求导,并令 gk(x)=0g_{k}^{\prime}(x)=0 ,则有:f(xk)+f(xk)(xxk)=0f^{\prime}(x^{k})+f^{\prime \prime}(x^{k})(x-x^{k})=0
解之得: x=xkf(xk)f(xk)x=x^{k}-\frac{f^{\prime}(x^{k})}{f^{\prime \prime}(x^{k})}
若该点不是(近似)极小点,则构造迭代格式,令xk+1=xkf(xk)f(xk)x^{k+1}=x^{k}-\frac{f^{\prime}(x^{k})}{f^{\prime \prime}(x^{k})}。即得牛顿法的迭代公式,简称牛顿迭代公式。

算法步骤:

  1. 给定初始点 x0Rx^{0} \in \mathbb{R} ,允许误差 0ϵ10 \leq \epsilon \ll 1 ,令 k=0k=0
  2. 计算 f(xk)f^{\prime}(x^{k}) ,如果 f(xk)ϵ|f^{\prime}(x^{k})| \leq \epsilon ,停止运算。否则计算 f(xk)f^{\prime \prime}(x^{k}) ,并令 xk+1=xkf(xk)f(xk)x^{k+1}=x^{k}-\frac{f^{\prime}(x^{k})}{f^{\prime \prime}(x^{k})}
  3. k=k+1k=k+1 ,返回 Step 2。

适用条件:牛顿法适用于二阶连续可导函数求极值问题。

优点:

  • 对于严格凸二次函数求极值,一步迭代即可找到最优解;
  • 如果初始点距离极小点较近,算法会很快收敛于极小点。

缺点:

  • 对初始点要求高,若初始点距离极小点太远,则迭代过程可能不收敛,也可能收敛到极大点,即牛顿法的收敛性依赖于初始点的选择;
  • 对函数要求高,牛顿法适用于二阶连续可导函数求极值问题;
  • 需计算二阶导数,计算复杂度高。
Author

秦宇春

Posted on

2025-11-13

Updated on

2025-11-13

Licensed under