数学C语言编程,数学规划 (最速下降法,c语言编程).doc
數學規劃 (最速下降法,c語言編程).doc
數 學 規 劃 課 程 設 計
題目:用最速下降法求解無約束非線性規劃問題
姓名:
學號:
成績:
2011年6月
用最速下降法求解無約束非線性規劃問題
摘要:無約束非線性規劃問題是一類重要的數學規劃問題。文主要研究了用最速下降法也就是梯度法對無約束非線性規劃問題進行求解。對于一個無約束非線性規劃利用最速下降法求解,首先需要確定其優化方向,此優化方向應該選擇為f在當前點處的負梯度方向,利用一維搜索法找出沿此方向上的最小值及其對應點,此后將該點作為新的出發點重復上述過程,直到達到允許的誤差為止。本文最后利用c++語言編程得到滿足允許誤差內的最優解。
本文主要對一個無約束非線性規劃問題的實例,首先利用上述迭代的方法,計算出各迭代點的函數值,梯度及其模。然后應用c++語言編程,得到精確地最優解,需迭代六次才使得,得到的最優解為,。
關鍵詞:最速下降法 無約束非線性規劃 最優解
一、問題重述
用最速下降法求解無約束非線性規劃問題:,設初始點取為,迭代到滿足允許誤差=0.01為止的精確解。
二、問題分析
2.1 無約束非線性問題的最優條件
該問題是一個無約束非線性規劃問題,利用最少下降法求解該問題,無約束非線性規劃問題的最優解所要滿足的必要條件和充分條件是我們設計算法的依據,為此有以下幾個定理。
定理1 設f:在點處可微,若存在,使,則向量p是f在點處的下降方向。
定理2設f:在點處可微,若是無約束問題的局部最優解,則
有數學分析中我們已經知道,使的點x為函數f的駐點或平穩點。函數f的一個駐點可以是極小值點;也可以是極大值點;甚至也可能既不是極小值點也不是極大值點,因此稱它為函數f的鞍點,以上定理告訴我們,是無約束問題的局部最優解的必要條件是:是其目標函數f的駐點。
定理3 設f:在點處的Hesse矩陣存在,若,并且正定,則是無約束非線性問題的嚴格局部最優解。
一般而言,無約束非線性問題的目標函數的駐點不一定是無約束非線性問題的最優解,但對于其目標函數是凸函數的無約束凸規劃,下面定理證明了它的目標函數的駐點就是它的整體最優解。
定理4設f:,,f是上的可微凸函數。若有,則是無約束問題的整體最優解。
2.2最速下降法的基本思想
最速下降法又稱為梯度法,是1847年由著名數學家Cauchy給出的,他是解析法中最古老的一種,其他解析方法或是他的變形,或是他的啟發得到的,因此它是最優化方法的基礎。
設無約束非線性規劃問題中的目標函數f:在點處可微。最速下降法的基本思想是:從當前點出發,取函數在點處下降最快的方向作為我們收索方向,由的Taylor展示知 ,略去的高階無窮小項不計,可見取時,函數值下降的最多 ,于是,我們可以夠造出最速下降法的迭代步驟。
2.3無約束非線性規劃問題的迭代步驟
解無約束非線性規劃問題的最速下降法計算步驟
第1步 選取初始點,給定終止誤差 >0,令k=0;
第2步 計算,若,停止迭代,輸出,否則進行第3步;
第3步 取;
第4步 進行一維搜索,求,使得,令,k=k+1。轉第2步。
由以上計算步驟可知,最速下降法迭代終止時,求得的是目標函數駐點的一個近似點。
三、問題求解
3.1對原無約束非線性規劃迭代
首先進行第一次迭代
則
令,即=0,解得:
所以,
此時,
又因為
則進行第二次迭代
則
令,代入即可解得:
所以
此時,
又因為
則進行第三次迭代
則
令,代入即可解得:
所以
此時,
又因為
則進行第四次迭代
則
令,代入即可解得:
所以
此時,
又因為
以上仍然沒有達到要求,即還需繼續迭代,直到滿足為止。
3.2對原無約束非線性規劃進行c++語言編程求解
就這樣無限的迭代下去,直到為止,為此,我們可以用c++語言編程得到,其算法設計如下圖(圖3-1)
圖(3-1)
利用c++語言編程(源代碼如下):
#include
#include
double lambda(double x[2],double p[2],double a[2])
{
double lam1,lam2;
lam1=4*(pow(a[0],3)*x[0]*x[0]+pow(a[1],3)*x[1]*x[1]);
lam2=-4*(pow(a[0]*x[0],2)+pow(a[1]*x[1],2))
總結
以上是生活随笔為你收集整理的数学C语言编程,数学规划 (最速下降法,c语言编程).doc的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: redis value最大值_Redis
- 下一篇: JAVA入门级教学之(面向过程和面向对象