無約束最優化方法 牛頓法

2021-07-12 06:40:25 字數 3130 閱讀 6926



無約束最優化演算法-newton法原理及c++程式設計實現

2012-12-14 13:04

6536人閱讀收藏

舉報

【演算法】(27)

作者同類文章x

無約束最優化方法-牛頓法

牛頓法newton'smethod)又稱為牛頓-拉弗森方法newton-raphson method),它是一種在實數域和複數域上近似求解方程的方法,迭代的示意圖如下:

總結@鄭海波 blog.csdn.net/nuptboyzhb/

參考:史丹福大學machine learning

本部落格中所有源**:

求解問題:

1.無約束函式f的0點。

2.無約束函式f的最小值,最大值。

函式的曲線(matlab畫出)

第"迭代

x="< }

cout<

的0點為:"<

return0; }

結果討論:

迭代結果與初始值有關,迭代的結果總是初始值

x附近的

0點。如:

1.初始值x=9時,執行結果如下: 第

0迭代x=6.51724 f(x)=126.47第1

迭代x=4.90174 f(x)=36.3714第2

迭代x=3.88768 f(x)=9.96551第3

迭代x=3.30967 f(x)=2.36715函式f

的0點為:3.05742

press any key tocontinue

2.初始值x=1.3時,執行結果如下:

函式f的

0點為:

1.01545

press any key tocontinue

3.初始值為-10時,執行結果如下: 第

0迭代x=-6.26632 f(x)=-421.924第1

迭代x=-3.79793 f(x)=-123.873第2

迭代x=-2.18197 f(x)=-35.9783第3

迭代x=-1.14629 f(x)=-10.201第4

迭代x=-0.51317 f(x)=-2.72803函式f

的0點為:-0.167649

press any key tocontinue

[cpp]view plain

copy

print?

#include 

#include 

using

namespace std;  

#define  f(x)   (pow(x,3)-4.0*pow(x,2)+3.0*x)

#define df(x)    (3.0*pow(x,2)-8.0*x+3)

#define ddf(x)    (6.0*x-8)

int main()  

cout<

cout<

}  

#include #include using namespace std;
#define f(x) (pow(x,3)-4.0*pow(x,2)+3.0*x)

#define df(x) (3.0*pow(x,2)-8.0*x+3)

#define ddf(x) (6.0*x-8)

int main()

{ double x=1.2;//初始值

double err=1.0e-10;

int count=0;

while (true)

{x=x-df(x)/ddf(x);

if (abs(df(x))

結果討論:

迭代結果與初始值有關,迭代的結果總是初始值x附近的極值。如:

1.初始值x=9時,執行結果如下: 第

0迭代x=5.21739df(x)=42.9244第1

迭代x=3.37549df(x)=10.1778第2

迭代x=2.54484df(x)=2.06992函式f

極點為:

(2.26008,-2.1072)

press any key tocontinue

2.初始值x=1.2時,執行結果如下: 第

0迭代x=-1.65df(x)=24.3675第1

迭代x=-0.288687df(x)=5.55952函式f

極點為:

(0.282567,0.550886)

press any key tocontinue

3.初始值為-10時,執行結果如下: 第

0迭代x=-4.36765df(x)=95.1702第1

迭代x=-1.58537df(x)=23.2232第2

迭代x=-0.259259df(x)=5.27572函式f

極點為:

(0.292851,0.560622)

press any key tocontinue

注意:對於只有1個0點的函式求解或只有乙個極值的函式求解時,迭代結果一般與初始值的關係不大,但迭代次數會受影響。

無約束最優化二

2.1 a k合理性討論 如下將要討論關於a k需要滿足的兩個條件,當a k滿足這兩個條件後,就可以認為從x k點移動到x k 1點的步長已經確定下來了。第乙個條件為sufficient decrease condition,從直觀角度來看,該條件主要要用保證x k 1點的函式值要小於x k點的函式...

無約束最優化三

2.2 a k步長的選擇 了解了a k的合理性之後,就相當於獲得了標尺,在此基礎上我們可以選擇合適的策略來求取a k。所有的line search過程在計算每一步的a k時,均需要提供乙個初始點a 0,然後再此基礎上生成一系列的,直到a i滿足2.1節所規定的條件為止,此時該a k即被確定為a i,...

無約束最優化四

3 quasi newton method 在第2節中我們了解了步長的概念,以及從x k走到x k 1點使用line search方法計算步長的方法。不過我們在那裡忽略了乙個重要的概念,即 方向 從第2節,我們了解到從每一點x k走到下一點x k 1時,需要給出要走的 方向 只有 方向 確定好之後,...