无约束最优化方法-牛顿法
版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。
無(wú)約束最優(yōu)化方法-牛頓法
牛頓法(Newton'smethod)又稱(chēng)為牛頓-拉弗森方法(Newton-Raphson method),它是一種在實(shí)數(shù)域和復(fù)數(shù)域上近似求解方程的方法,迭代的示意圖如下:
總結(jié)@鄭海波 blog.csdn.net/nuptboyzhb/
參考:斯坦福大學(xué)machine learning
本博客中所有源代碼:http://download.csdn.net/detail/nuptboyzhb/4886786
求解問(wèn)題:
1.無(wú)約束函數(shù)f的0點(diǎn)。
2.無(wú)約束函數(shù)f的最小值,最大值。
函數(shù)的曲線(matlab畫(huà)出)
#include <iostream>
#include <math.h>
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)
int main()
{
?????? doublex=9;//設(shè)置迭代的初始值
?????? doubleerr=1.0e-10;//設(shè)置精度
?????? intcount=0;
??? while(true)
??? {
????????????? x=x-f(x)/df(x);
????????????? if(abs(f(x))<err)
????????????? {
???????????????????? break;
????????????? }
????????????? cout<<"第"<<count++<<"迭代x="<<x<<" f(x)="<<f(x)<<endl;
??? }
?????? cout<<"函數(shù)f的0點(diǎn)為:"<<x<<endl;
?????? return0;
}
結(jié)果討論:
迭代結(jié)果與初始值有關(guān),迭代的結(jié)果總是初始值x附近的0點(diǎn)。如:
1.初始值x=9時(shí),運(yùn)行結(jié)果如下:
第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
函數(shù)f的0點(diǎn)為:3.05742
Press any key tocontinue
2.初始值x=1.3時(shí),運(yùn)行結(jié)果如下:
函數(shù)f的0點(diǎn)為:1.01545
Press any key tocontinue
3.初始值為-10時(shí),運(yùn)行結(jié)果如下:
第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
函數(shù)f的0點(diǎn)為:-0.167649
Press any key tocontinue
[cpp] view plaincopyprint?
結(jié)果討論:
迭代結(jié)果與初始值有關(guān),迭代的結(jié)果總是初始值x附近的極值。如:
1.初始值x=9時(shí),運(yùn)行結(jié)果如下:
第0迭代x=5.21739df(x)=42.9244
第1迭代x=3.37549df(x)=10.1778
第2迭代x=2.54484df(x)=2.06992
函數(shù)f極點(diǎn)為:(2.26008,-2.1072)
Press any key tocontinue
2.初始值x=1.2時(shí),運(yùn)行結(jié)果如下:
第0迭代x=-1.65df(x)=24.3675
第1迭代x=-0.288687df(x)=5.55952
函數(shù)f極點(diǎn)為:(0.282567,0.550886)
Press any key tocontinue
3.初始值為-10時(shí),運(yùn)行結(jié)果如下:
第0迭代x=-4.36765df(x)=95.1702
第1迭代x=-1.58537df(x)=23.2232
第2迭代x=-0.259259df(x)=5.27572
函數(shù)f極點(diǎn)為:(0.292851,0.560622)
Press any key tocontinue
注意:對(duì)于只有1個(gè)0點(diǎn)的函數(shù)求解或只有一個(gè)極值的函數(shù)求解時(shí),迭代結(jié)果一般與初始值的關(guān)系不大,但迭代次數(shù)會(huì)受影響。
轉(zhuǎn)載請(qǐng)聲明,未經(jīng)允許,不得用以商業(yè)目的
總結(jié)
以上是生活随笔為你收集整理的无约束最优化方法-牛顿法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 信息检索与数据挖掘的常用加权技术。
- 下一篇: 再理解RankNet算法