看报道
matlab最速下降法
2010-08-18 17:13
函数x=fsx steep (f,e,a,b ) )。
% fsxsteep函数最速下降法
%x=fsxsteep(f,e,a,b )是输入函数f,函数e是允许误差(a,b )是初始点; % fsx TJPU 2008.6.15
x1=a; x2=b;
q=fsxhesse(f,x1,x2 );
x0=[x1 x2] ';
FX1=diff(f,' x1 ' ); 对%x1求偏导数
FX2=diff(f,' x2 ' ); 对%x2求偏导数
g=[fx1 fx2] '; %梯度
G1=Subs(G ); 将%符号变量转换为数字
d=-g1;
wile(ABS(norm(G1 )=e ) ) ) ) ) ) ) ) ) ) ) ) ) )。
t=(-d ) ) d/)-d ) ) *Q*d ); t=(-d ) ) d/)-d ) ) *Q*d ); %请求搜索方向
x0=x0-t*g1; %查找到的点
v=x0;
a=[1 0]*x0;
b=[0 1]*x0;
x1=a;
x2=b;
G1=Subs(G );
d=-g1;
结束;
x=v;
函数x=fsx Hesse (f,a,b ) ) )。
% fsxhesse函数求函数的hesse矩阵;
%本程序是单纯求二次函数的hesse矩阵!
%x=fsxhesse(f )表示输入函数f为二次函数x1、x2为自变量;
% fsx TJPU 2008.6.15
x1=a; x2=b;
FX=diff(f,' x1 ' ); 求f对%x1的偏导数
fy=diff(f,' x2 ' ); 求f对%x2的偏导数
fxx=diff(FX,' x1 ' ); (求二阶偏导数对x1 (并x1 )
fxy=diff(FX,' x2 ' ); (求出二次偏导数对x1,再求出x2
fyx=diff(fy,' x1 ' ); (求二次偏导数对x2,再求x1
fyy=diff(fy,' x2 ' ); (求二次偏导数对x2,再求x2