-
大小: 600KB文件類型: .rar金幣: 2下載: 0 次發布日期: 2021-06-08
- 語言: Matlab
- 標簽:
資源簡介
無約束最優化問題典型算法的MATLAB代碼

代碼片段和文件信息
%%?conjugate?gradient?method
clc;
clear;
format?long;??
error=1e-5;????????????%停機門限
syms?x1?x2?x3?x4?r;
P=(x1+10*x2)^2+(sqrt(5)*(x3-x4))^2+((x2-2*x3)^2)^2+(sqrt(10)*(x1-x4)^2)^2;
f?=?[?x1+10*x2;?5^(1/2)*(x3-x4);?(x2-2*x3)^2;?10^(1/2)*(x1-x4)^2];
v=[x1?x2?x3?x4];
x=[3;-1;0;1];
j=jacobian(fv);???????%求jacobian行列式
g=jacobian(Pv);???????%求目標函數梯度向量
g=g‘;
J=subs(jvx);?????????%初值帶入表達式
F=subs(fvx);
G=subs(gvx);
k=0;
tic
while?(sum((J‘*F).^2))^(1/2)>error?????%判斷停機與否
????if?k==0
????????d=-G;??%初始搜索方向為負梯度方向
????else
????????beta=G_new‘*G_new/(G_old‘*G_old);
????????d=-G_new+beta*d;???%從x(k)出發搜索方向介于從x(k-1)出發搜索方向和點x(k)負梯度方向之間
????end
????y=subs(Pvx+r*d);
????interval=jintuifa(yr);
????step=gold(yrinterval);???%一維搜索確定步長
????G_old=subs(gvx);?????????%前一點x(k-1)梯度
????x=x+step*d;
????G_new=subs(gvx);?????????%新一點x(k)梯度
????J=subs(jvx);?????????????%新的迭代點數值帶入表達式??
????F=subs(fvx);
????k=k+1;?????????????????????%迭代次數加1
end;
toc
disp(‘Conjugate?gradient?method‘);
k
x
sigma=(sum((J‘*F).^2))^(1/2)
F=(sum(F.^2))^(1/2)????????????%顯示迭代次數,變量取值,停機表達式值,目標函數值
%%
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1252??2011-12-03?20:12??LM.m
?????文件???????2295??2011-12-03?18:59??total.m
?????文件????????454??2011-12-02?13:42??jintuifa.m
?????文件????????373??2011-12-03?18:32??gold.m
?????文件????????815??2011-12-04?19:29??Gauss_Newton.m
?????文件???????1324??2011-12-04?18:05??DFP.m
?????文件???????1253??2011-12-04?18:18??conjugate_gradient.m
?????文件?????704512??2011-12-04?19:47??報告.doc
-----------?---------??----------?-----??----
???????????????712278????????????????????8
- 上一篇:無線通信技術32QAM
- 下一篇:基于meanshift的圖像分割matlab代碼
評論
共有 條評論