最速下降法、牛頓法和修正(阻尼)牛頓法

qiuxinmin發表於2020-11-30

the Steepest Descent Method

核心思想:

  • 通過尋找方向,逐步降低目標值,直到找到最小值

演算法步驟

  • S t e p 1 : 初 始 點 x 1 , 精 度 ϵ > 0 , k = 1 ; Step1:初始點x_1,精度\epsilon>0,k=1; Step1:x1,ϵ>0,k=1;
  • S t e p 2 : 計 算 搜 索 方 向 d k = − ∇ f ( x k ) ; Step2:計算搜尋方向d_k=-\nabla f(x_k); Step2:dk=f(xk);
  • S t e p 3 : 如 果 ∣ ∣ d k ∣ ∣ < ϵ , 停 止 計 算 , 輸 出 x k , Step3:如果||d_k||<\epsilon,停止計算,輸出x_k, Step3:dk<ϵ,xk,
    否 則 , 使 f ( x k + λ k d k ) = m i n λ ≥ 0 f ( x k + λ d k ) ; 否則,使f(x_k+\lambda_k d_k)=\underset{\lambda\geq0}{min}f(x_k+\lambda d_k); 使f(xk+λkdk)=λ0minf(xk+λdk);
  • S t e p 4 : x k + 1 = x k + λ k d k , k = k + 1 , 轉 到 S t e p 2. Step4:x_{k+1}=x_k+\lambda_k d_k,k=k+1,轉到Step2. Step4:xk+1=xk+λkdk,k=k+1,Step2.

Newton’s Method

核心思想:

  • 二階梯度尋找函式值降低的方向

演算法步驟

  • S t e p 1 : 初 始 點 x 1 , 精 度 ϵ > 0 , k = 1 ; Step1:初始點x_1,精度\epsilon>0,k=1; Step1:x1,ϵ>0,k=1;
  • S t e p 2 : 計 算 搜 索 方 向 ∇ 2 f ( x k ) d k = − ∇ f ( x k ) ; Step2:計算搜尋方向\nabla^2f(x_k)d_k=-\nabla f(x_k); Step2:2f(xk)dk=f(xk);
  • S t e p 3 : 如 果 ∣ ∣ d k ∣ ∣ < ϵ , 停 止 計 算 , 輸 出 x k , Step3:如果||d_k||<\epsilon,停止計算,輸出x_k, Step3:dk<ϵ,xk,
    否 則 , x k + 1 = x k + d k = x k − ( ∇ 2 f ( x k ) ) − 1 ∇ f ( x k ) , k = k + 1 , 轉 到 S t e p 2. 否則,x_{k+1}=x_k+d_k=x_k-(\nabla^2f(x_k))^{-1}\nabla f(x_k),k=k+1,轉到Step2. xk+1=xk+dk=xk(2f(xk))1f(xk),k=k+1,Step2.

Modified Newdton’s Method

核心思想:

  • 結合一維線搜尋和牛頓法

演算法步驟

  • S t e p 1 : 初 始 點 x 1 , 精 度 ϵ > 0 , k = 1 ; Step1:初始點x_1,精度\epsilon>0,k=1; Step1:x1,ϵ>0,k=1;
  • S t e p 2 : 計 算 搜 索 方 向 ∇ 2 f ( x k ) d k = − ∇ f ( x k ) , d k = − ( ∇ 2 f ( x k ) ) − 1 ∇ f ( x k ) ; Step2:計算搜尋方向\nabla^2f(x_k)d_k=-\nabla f(x_k),d_k=-(\nabla^2f(x_k))^{-1}\nabla f(x_k); Step2:2f(xk)dk=f(xk),dk=(2f(xk))1f(xk);
  • S t e p 3 : 如 果 ∣ ∣ d k ∣ ∣ < ϵ , 停 止 計 算 , 輸 出 x k , Step3:如果||d_k||<\epsilon,停止計算,輸出x_k, Step3:dk<ϵ,xk,
    否 則 , 使 f ( x k + λ k d k ) = m i n λ ≥ 0 f ( x k + λ d k ) ; 否則,使f(x_k+\lambda_k d_k)=\underset{\lambda\geq0}{min}f(x_k+\lambda d_k); 使f(xk+λkdk)=λ0minf(xk+λdk);
  • S t e p 4 : x k + 1 = x k + λ k d k , k = k + 1 , 轉 到 S t e p 2. Step4:x_{k+1}=x_k+\lambda_k d_k,k=k+1,轉到Step2. Step4:xk+1=xk+λkdk,k=k+1,Step2.

程式實現後續補充

相關文章