www.gusucode.com > 学会不同搜索法(最速下降法,共轭梯度法,牛顿法,拟牛顿法)的计算步骤 > code/gonge.m
%共轭剃度法极小化函数的通用子函数,gonge.m %输入变量为初始的迭代点,输出变量为极小值点 function x0=gonge(x) %判断梯度范数是否满足计算精度的要求.是,标志变量设为1,输出结果;否,标志变量设为0,继续迭代 if sum(abs(tidu(x)).^2)<1e-4 flag=1; x0=x; else flag=0; end %第一次的迭代方法为负梯度方向 d1=-tidu(x); a=gold(x,d1); x1=x+a*d1; %循环求解函数的极小点 while flag==0 g1=tidu(x); g2=tidu(x1); %利用FR公式求解系数bata bata=(g2*g2')/(g1*g1'); d2=-g1+bata*d1; a=gold(x1,d2); x=x1; x1=x+a*d2; %判断下一次和上一次迭代点之差是否满足计算精度的要求.是,标志变量设为1,输出结果;否,标志变量设为0,继续迭代 if sum(abs(x1-x).^2)<1e-6 flag=1; x0=x1; else flag=0; end end