共轭梯度下降法matlab,共轭梯度法MATLAB程序.doc

共轭梯度法MATLAB程序

%conjugate gradient methods

%method:FR,PRP,HS,DY,CD,WYL,LS

%精确线搜索,梯度终止准则

function [ m,k,d,a,X,g1,fv] conjgradme G,b,c,X,e,method

if nargin 6 error '输入参数必须为6' ;

end

n length G ;

if n 2

format long e %rat

syms x1 x2

f 1/2*[x1,x2]*G*[x1;x2]+b'*[x1;x2]+c;

g [diff f,x1 ;diff f,x2 ];

g1 subs subs g,x1,X 1,1 ,x2,X 2,1 ;

d -g1;

a - d'*g1 / d'*G*d ;% a - X :,1 '*G*d+b'*d / d'*G*d ; a g1 :,1 '*g1 :,1 / d :,1 '*G*d :,1 ;

X :,2 X :,1 +a*d;

g1 [g1 subs subs g,x1,X 1,2 ,x2,X 2,2 ];

m1 norm g1 :,1 ;

m norm g1 :,2 ;

i 2;

k zeros 1 ;

switch method case 'FR' while m e k i-1 m/m1 ^2; d :,i -g1 :,i +k i-1 *d :,i-1 ; a i - d :,i '*g1 :,i / d :,i '*G*d :,i ; %a1 i - X :,i '*G*d :,i +b'*d :,i / d :,i '*G*d :,i ;a i g1 :,i '*g1 :,i / d :,i '*G*d :,i ; X :,i+1 X :,i +a i *d :,i ; g1 [g1 subs subs g,x1,X 1,i+1 ,x2,X 2,i+1 ]; m1 m; m norm g1 :,i+1 ; i i+1; end case 'PRP' while m e k i-1 g1 :,i '* g1 :,i -g1 :,i-1 / norm g1 :,i-1 ^2; d :,i -g1 :,i +k i-1 *d :,i-1 ; a i - d :,i '*g1 :,i / d :,i '*G*d :,i ; X :,i+1 X :,i +a i *d :,i ; g1 [g1 subs subs g,x1,X 1,i+1 ,x2,X 2,i+1 ]; m norm g1 :,i+1 ; i i+1; end case 'HS' while m e k i-1 g1 :,i '* g1 :,i -g1 :,i-1 / d :,i-1 '* g1 :,i -g1 :,i-1 ; d :,i -g1 :,i +k i-1 *d :,i-1 ; a i - d :,i '*g1 :,i / d :,i '*G*d :,i ; X :,i+1 X :,i +a i *d :,i ; g1 [g1 subs subs g,x1,X 1,i+1 ,x2,X 2,i+1 ]; m norm g1 :,i+1 ; i i+1; end case 'DY' while m e k i-1 g1 :,i '*g1 :,i / d :,i-1 '* g1 :,i -g1 :,i-1 ; d :,i -g1 :,i +k i-1 *d :,i-1 ; a i - d :,i '*g1 :,i / d :,i '*G*d :,i ; X :,i+1 X :,i +a i *d :,i ; g1 [g1 subs subs g,x1,X 1,i+1 ,x2,X 2,i+1 ]; m norm g1 :,i+1 ; i i+1; end case 'LS' while m e k i-1 g1 :,i '* g1 :,i -g1 :,i-1 / d :,i-1 '* -g1 :,i-1 ; d :,i -g1 :,i +k i-1 *d :,i-1 ; a i - d :,i '*g1 :,i / d :,i '*G*d :,i ; %a i - X :,i '*G*d :,i +b'*d :,i / d :,i '*G*d :,i ; X :,i+1 X :,i +a i *d :,i ; g1 [g1 subs subs g,x1,X 1,i+1 ,x2,X 2,i+1 ]; m norm g1 :,i+1 ; i i+1; end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值