zoukankan      html  css  js  c++  java
  • 用Matlab实现CGNR算法

    在利用Matlab对大型稀疏矩阵的方程组的求解--实现的原理可以参考东北大学博士论文《大型线性方程组的迭代解法》(作者 邵新慧)P18,关于CGNR的描述

    其matlab的代码如下:

    %目标:求解Ax=b
    %采用的方法:CGNR---参考文献-大型线性方程组的迭代解法
    function y=CGNR(A,b)
    TOF=0.0001;
    for i=1:length(b)
        x(i,1)=1;
    end
    %x(:,1)=[1 2 5];
    k=1;
    r(:,1)=b-A*x(:,1);
    while(norm(r(:,k),2)>TOF)
        k=k+1;
        if(k==2)
            p(:,2)=A'*r(:,1);
        else
            beta(:,k)=(A'*r(:,k-1))'*(A'*r(:,k-1))/((A'*r(:,k-2))'*(A'*r(:,k-2)));
            p(:,k)=A'*r(:,k-1)+beta(:,k)*p(:,k-1);
        end
        alpha(:,k)=(A'*r(:,k-1))'*(A'*r(:,k-1))/((A'*p(:,k))'*(A'*p(:,k)));
        x(:,k)=x(:,k-1)+alpha(:,k)*p(:,k);
        r(:,k)=r(:,k-1)-alpha(:,k)*A*p(:,k);
    end
      y=x(:,k);
    %disp(y)

    在matlab命令窗口,输入测试算例:

    >> A=[1 2 3;2 5 2;3 1 5];
    >> b=[14 18 20]'
    >> CGNR(A,b)

    结果为 1.0001 2.0000 2.9999

  • 相关阅读:
    CoffeeScript
    Android Metrics
    Mac VPS
    Android UI Design
    Android Interactive Animation
    iOS8 with Swift
    What is MEAN?
    Mac OS X “to open Eclipse, you need a Java SE 6 runtime”
    Android Screen Orientation
    Android Sensor Shake(WeChat)
  • 原文地址:https://www.cnblogs.com/kmliang/p/2667858.html
Copyright © 2011-2022 走看看