日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

无约束最优化方法-牛顿法

發(fā)布時(shí)間:2025/3/21 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 无约束最优化方法-牛顿法 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
 無(wú)約束最優(yōu)化算法-Newton法原理及c++編程實(shí)現(xiàn) 6536人閱讀 評(píng)論(5) 收藏 舉報(bào) 本文章已收錄于: 分類(lèi): 【算法】(27) 作者同類(lèi)文章X

    無(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ù)f0點(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ù)f0點(diǎn)為:3.05742

    Press any key tocontinue

    2.初始值x=1.3時(shí),運(yùn)行結(jié)果如下:

    函數(shù)f0點(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ù)f0點(diǎn)為:-0.167649

    Press any key tocontinue


    [cpp] view plaincopyprint?
  • #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)??
  • #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))<err)??
  • ????????{??
  • ????????????break;??
  • ????????}??
  • ????????cout<<"第"<<count++<<"迭代x="<<x<<"?df(x)="<<df(x)<<endl;??
  • ????}??
  • ????cout<<"函數(shù)f極點(diǎn)為:("<<x<<","<<f(x)<<")"<<endl;??
  • ????return?0;??
  • }??
  • #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) #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))<err){break;}cout<<"第"<<count++<<"迭代x="<<x<<" df(x)="<<df(x)<<endl;}cout<<"函數(shù)f極點(diǎn)為:("<<x<<","<<f(x)<<")"<<endl;return 0; }

    結(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)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。