資源簡介
用matlab編程實現最優控制理論的共軛梯度法。程序運行無誤。

代碼片段和文件信息
format?long;
k=0;
ex=2;
X0=[2;2]%設定x初值為(22)
while?k<2000
syms?x1?x2?rr????
%f=100*(x2-x1^2)^2+(1-x1)^2
f=x1^2+2*x2^2-4*x1-2*x1*x2
%f=(x1-1)^4+x2^2
%f=2*x1^2+x2^2-4*x1+2
df(11)=diff(fx1)?????%取函數的梯度(df(11)df(21))
df(21)=diff(fx2)
xx=gradient(X0df)?????????%將求得的梯度向量值存入xx中
ex=sqrt(xx(11)^2+xx(21)^2)?%求得梯度下降模值存入變量ex
x1=X0(11)
x2=X0(21)?
eval(f)
if?ex<1e-4
????????disp(‘x*=‘)
????????disp(X0)
????????disp(‘函數最優解為:f=‘)
????????disp(eval(f))
????????break;
end
x1=X0(11)-rr*xx(11)?????%將x1x2變為一維搜索極小點變量rr的函數
x2=X0(21)-rr*xx(21)
flamda=eval(f)?????????%求得rr的函數,便于進行一維搜索
rr=partition(flamda)????%用黃金分割法求得精確以為搜索的rr值
x1
x2
X0(11)=eval(x1)????%重新給變量x1x2賦值,以便進行下一次循環;
X0(21)=eval(x2)
k=k+1
end
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????853??2010-12-27?22:44??梯度法\fastspeed.m
?????文件????????121??2010-12-27?22:43??梯度法\gradient.m
?????文件????????914??2010-12-27?23:00??梯度法\partition.m
?????文件???????2004??2010-12-27?23:26??梯度法\最速下降.txt
?????目錄??????????0??2011-06-12?13:45??梯度法
-----------?---------??----------?-----??----
?????????????????3892????????????????????5
- 上一篇:matlab實現共軛梯度法
- 下一篇:MATLAB 動畫生成gif圖片
評論
共有 條評論