代码之家  ›  专栏  ›  技术社区  ›  happycharleswang

一个非常病态的线性系统

  •  3
  • happycharleswang  · 技术社区  · 9 年前

    我有一个线性系统要解,写为Ax=b A是一个175乘175的对称正方形,其对角线上有一个(即aii=1),其他条目的范围从0到1(即0

    A是非常病态的,并且不是正定的,它的秩是162,它的条件数是3.5869e+16

    我花了几天时间在MATLAB中解决这个问题,我几乎尝试了我能找到的所有方法,包括\、pcg、bicg、bicgstab、bicgsab、cgs、gmres、lsqr、minres、qmr、symmlq、tfqmr 这些方法给了我一些解决办法。但我不知道如何信任他们,也不知道该信任哪种解决方案。是否需要确定标准?

    我会感谢有人能给我一个我可以信任的解决方案。 谢谢

    A和b存储在.mat文件中,可以从dropbox链接下载:

    https://www.dropbox.com/s/s6xlbq68juqs6xi/A.mat?dl=0

    https://www.dropbox.com/s/pxl0hdup20hf2lr/b.mat?dl=0

    使用方式如下:

    荷载('A.mat');

    荷载('b.mat');

    x=A\b;

    1 回复  |  直到 9 年前
        1
  •  3
  •   Ander Biguri    9 年前

    不确定这是否有帮助,但试试看:

    Tikhonov regularization

    基本上,当以下各项因条件恶劣而难以计算时:

    enter image description here

    相反,您可以最小化以下内容

    enter image description here

    伽马通常是身份矩阵。

    最后,得到x的以下方程:

    enter image description here

    除此之外,您通常需要添加一个“超参数”,以控制问题的正则化程度。因此\Gamma不只是单位矩阵,而是一个数字(即0.001)乘以单位矩阵 size(A) .

    最后一个等式应该很容易在Matlab中尝试。试试看。

    注: 这不是 答案 实际上,解决一个不适定问题可能没有唯一的答案。这只是一条路要走。