資源簡介
matlab梯度下降,能運行,求函數(shù)極值,適合初學者,有詳細解釋
代碼片段和文件信息
function?y=fs2steep(feab)?%返回的是點坐標的2個分量
?%?fs2steep函數(shù)?最速下降法
?%?x=fs2steep(feab)為輸入函數(shù)?f為函數(shù)?e為允許誤差?(ab)為初始點;
?%?fsx?TJPU?2008.6.15
?x1=a;x2=b;
?Q=fs2hesse(fx1x2);
?x0=[x1?x2]‘;
?fx1=diff(f‘x1‘);?%對x1求偏導數(shù)
?fx2=diff(f‘x2‘);?%對x2求偏導數(shù)
?g=[fx1?fx2]‘;?%梯度
?g1=subs(g);?%把符號變量轉(zhuǎn)為數(shù)值
?d=-g1;%d為搜索方向
?while?(abs(norm(g1))>=e)??%norm(g1)為g1的2范數(shù),即sqrt(x1^2+x2^2),因為梯度其各分量=0,所以其梯度幅值=0
?????t=(-d)‘*d/((-d)‘*Q*d);%求搜索步長,方法是?
?????x0=x0-t*g1;?%搜索到的點
?????v=x0;
?????a=[1?0]*x0;
?????b=[0?1]*x0;
?????x1=a;
?????x2=b;??
?????Q=fs2hesse(fx1x2);
?????x0=[x1?x2]‘;
?????fx1=diff(f‘x1‘);?%對x1求偏導數(shù)
?????fx2=diff(f‘x2‘);?%對x2求偏導數(shù)
?????g=[fx1?fx2]‘;?%梯度????
?????g1=subs(g);
?????d=-g1;
?end;
?y=v;
?
?function?x=fs2hesse(fab)
?%?fs2hesse函數(shù)?求函數(shù)的hesse矩陣;
?%?本程序僅是簡單的求二次函數(shù)的hesse矩
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????????88??2012-07-10?14:17??tidutext.m
?????文件????????1433??2012-07-10?14:12??fs2steep.m
- 上一篇:層次分析法包括詳細介紹,,及matlab步驟
- 下一篇:matlab模糊工具箱
評論
共有 條評論