zoukankan      html  css  js  c++  java
  • 数值优化(五)

    共轭梯度方法

    线性共轭梯度方法

    线性共轭梯度方法可以用来解线性方程$$Ax=b$$其中A是正定的对称阵。这个问题等价于求解$$Phi(x)=frac{1}{2} xTAx-bTx$$的无约束优化问题。向量({p_0,p_1,cdots,p_i})称作关于正定矩阵A相互共轭,当$$p_i^TAp_j=0 quad forall i eq j$$在(mathbb{R}^n)中给定一个初值点(x_0)和一组共轭方向({p_i}),就可以生成一个点列$$x_{k+1}=x_k+alpha_k p_k$$ (alpha_k)是在(p_k)方向上的最优点,有闭式解$$alpha_k = -frac{r_k^T p_k}{p_k^T A p_k}$$这样的迭代步骤在最多n次后就会收敛到最优点(即线性方程的解)。关于这个事实,有如下正交情况的示意图:

    关于这一点,还有一个结论:

    共轭方向

    现在只需要生成一组共轭方向就可以应用上述的共轭梯度法,共轭方向的生成有多种方法,但是如果利用了共轭向量的性质,就可以只通过前一个共轭向量的信息来求解下一个共轭向量,使得在大规模问题中可以大幅度减少空间以及时间花费。具体的:$$p_k = -r_k + eta_{k} p_{k-1}$$(其中(r_k=Ax_k-b= abla f_k))选取(beta_k)使得(p_k)(p_{k-1})共轭,就可以证明(p_k)也和之前的所有向量共轭。(eta_k)易于得到闭式解$$eta_k = frac{r_k^T A p_{k-1}}{p_{k-1}^T A p_{k-1}}$$

    到此,CG算法已经完整了,再利用下述定理,可以将算法进一步优化:

    得到CG-Algorithm(Practical Form)

  • 相关阅读:
    Java反编译代码分析(一)
    Java信号量Semaphore
    Ubuntu SVN安装&使用&命令
    Android -- Dialog动画
    Android -- EventBus使用
    Android -- queryIntentActivities
    解决:fatal: authentication failed for https
    MySQL表名大小写敏感导致的问题
    Publish to a Linux Production Environment
    layer.js 弹窗组件API文档
  • 原文地址:https://www.cnblogs.com/mathematic-offering/p/9325819.html
Copyright © 2011-2022 走看看