共轭梯度法(Conjugate Gradient)

共轭梯度法(Conjugate Gradient)是介于最速下降法牛顿法之间的一个方法,它仅需利用一阶导数信息,但克服了最速下降法收敛慢的缺点,又避免了牛顿法需要存储和计算Hesse矩阵并求逆的缺点,共轭梯度法不仅是解决大型线性方程组最有用的方法之一,也是解大型非线性最优化最有效的算法之一。 

以上参考百度百科的共轭梯度法,但是一开始没看明白,结合《数值分析》中的一些解释,结合自己的理解,算是大概弄明白了。

wikipedia关于共轭梯度法描述的比较清晰。

一 什么是A共轭?

令A是对称正定的n*n矩阵,对于n维的列向量v和w,定义A内积为:

(v,w)_{A}=v^{T}Aw

(v,w)_{A}=0时,称列向量v和w为A共轭

特别的,当v=w\neq0时,(v,w)_{A}>0

二 共轭梯度法的伪代码分析

 

共轭梯度直接法主要作用是求解Ax=b的精确解,但是如果b的维数较高,直接法会消耗大量时间。而共轭梯度法作为迭代方法的话,对于求解高维问题的逼近解或稀疏解是很有用的,我们可以用部分的梯度方向去获得一个符合要求的逼近解,这样可以缓解直接共轭梯度方法的耗时问题。

我们构造\bigtriangledown f=Ax-b,问题是求解Ax=b。也就是令\bigtriangledown f=Ax-b为0,那么对\bigtriangledown f=Ax-b积分,可得到二次泛函:

那问题也就转向了求f(x)的极小值点问题。我们知道,当多元函数的二次倒数也就是黑塞矩阵是正定的时候,那么驻点就是极小值。因此要求:\bigtriangledown^{2} f=A为正定的。

为了求f(x)的最小值,只要我们一步一步得使\bigtriangledown f=Ax-b趋近于0即可。假设x的值是x0,那么梯度的误差为:Ax_{0}-b,因此我们要往反方向缩小误差。取初始的方向为\boldsymbol{p}_{0}=\boldsymbol{b}-A\mathbf{x}_{0},同时,p0也是残差。

令第k步的残差为\boldsymbol{r}_{k}=\boldsymbol{b}-A\mathbf{x}_{k}

如何找函数f(x)下降最快的方向:

这里

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值