首页 > 编程知识 正文

matlab梯度下降法函数,matlab梯度法

时间:2023-05-04 18:37:38 阅读:137065 作者:3720

MATLAB最速下降法(梯度法)程序

? 看报道吗? matlab最速下降法

2010-08-18 17:13

functionx=% fsxsteep(f,e,a,b ) fsxsteep函数最速下降法(% fsxsteep ) f,e,a,b )是输入函数f是允许误差,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; while(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 ' ); 求出针对%x1的f偏导数fy=diff(f,' x2 ' ); 求出(f对x2偏导数FXX=diff ) FX,' x1 ' ); (求出二阶偏导数对x1,进而针对x1导出fxy=diff ) FX、x2); (求出二阶偏导数对x1,并进一步导出x2fyx=diff(fy,x1); 求%二阶偏导数对x2,进而求出x1fyy=diff(fy,' x2 ' ); (求出二阶偏导数对x2,并进一步求出x2fxx=subs(fxx ); 将%符号变量变换为数值fxy=subs(fxy ); fyx=subs(fyx ); FYY=subs(FYY ); x=[fxx,fxy; fyx,fyy ); 求hesse矩阵

syms x1 x2; X=[x1,x2]; FX=x(1)2) x )2) ) 2; z=fsxsteep(FX,0.001,1,1 ) ) ) ) ) ) )。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。