码迷,mamicode.com
首页 > 其他好文 > 详细

共轭梯度法(conjugate gradient method)

时间:2015-07-25 18:35:23      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:优化   机器学习   

该方法是快速求解Ax=b线性系统的方法,他要求矩阵A是对称正定矩阵。
算法执行过程:
技术分享
matlab实现:

clear;%删除工作空间的所有变量,释放系统内存
clc;%清楚命名窗口
A=[4 1;1 3];
b=[1,2]‘;
N=length(b);    %解向量的维数
fprintf(‘库函数计算结果:‘);
x=inv(A)*b      %库函数计算结果
x=[2;1];        %初始点
eps=0.0000001;  %精度
r=b-A*x;
p=r;
for k=0:N-1
    fprintf(‘第%d次迭代:‘,k+1);
    a=(norm(r)^2)/(p‘*A*p)
    x=x+a*p
    rr =r-a*A*p;  %rr=r(k+1),它和b-A*x等价
    if (norm(rr)<=eps)||(k==N-1)
        break;
    end
    B=(norm(rr)^2)/(norm(r)^2);
    p=rr+B*p;
    r=rr;
end

版权声明:本文为博主原创文章,未经博主允许不得转载。

共轭梯度法(conjugate gradient method)

标签:优化   机器学习   

原文地址:http://blog.csdn.net/li8630/article/details/47057789

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!