Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matrix 如何从eigen中的稀疏矩阵解算器获得精确结果_Matrix_Reverse_Eigen - Fatal编程技术网

Matrix 如何从eigen中的稀疏矩阵解算器获得精确结果

Matrix 如何从eigen中的稀疏矩阵解算器获得精确结果,matrix,reverse,eigen,Matrix,Reverse,Eigen,最近我试着用Eigen做我的研究工作。我使用解算器试图找出方程A*X=B中的X值,其中A和B是已知矩阵。使用了以下两种方法,但两种方法得出的结果似乎不同: MatrixXcd A,MatrixXcd B,X=A.逆()*B SparseMatrix A、SparseMatrix B、SparseQR solverA;解算(A);X=解算A.解算(L) 下面是方法1和2的输入和输出,结果不一样。稀疏解算器似乎不精确。有人知道如何使用稀疏解算器获得正确的结果吗 矩阵A: (1e+20

最近我试着用Eigen做我的研究工作。我使用解算器试图找出方程A*X=B中的X值,其中A和B是已知矩阵。使用了以下两种方法,但两种方法得出的结果似乎不同:

  • MatrixXcd A,MatrixXcd B,X=A.逆()*B
  • SparseMatrix A、SparseMatrix B、SparseQR solverA;解算(A);X=解算A.解算(L)
  • 下面是方法1和2的输入和输出,结果不一样。稀疏解算器似乎不精确。有人知道如何使用稀疏解算器获得正确的结果吗

    矩阵A:

            (1e+20,1e+20)                     (0,0)                     (0,0)                     (0,0)     (0.00178347,-5.5e-07)  (-0.00135281,-9.732e-05)     (0.090243,0.00043181)         (2.94443,2.79482)     (0.00099333,1.91e-06) (-0.00043913,-0.00020801)  (-0.0267104,-0.00025275)         (5.59117,6.73686)                     (0,0)   (0.00095055,-7.527e-05)                     (0,0)         (2.94443,2.79482)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)
                    (0,0)             (1e+20,1e+20)                     (0,0)                     (0,0)     (-0.00025576,1.1e-07)     (0.00178347,-5.5e-07)    (0.00010056,4.315e-05)   (-0.090243,-0.00043181)       (0.00018179,-8e-08)     (0.00099333,1.91e-06)   (0.00021957,0.00010401)    (0.0267104,0.00025275)     (-0.00044497,3.8e-07)                     (0,0)     (0.0090243,4.318e-05)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)
                    (0,0)                     (0,0)   (-0.217866,-0.00104248)         (7.10848,6.74728)                   (0.5,0)                     (0,0)                     (0,0)                     (0,0)        (5.73e-06,8.1e-07)  (0.00229483,-0.00018173)     (0.127623,0.00061067)         (7.10848,6.74728)     (-0.0006716,-7.8e-07)  (-0.00018189,-8.616e-05)     (0.0644847,0.0006102)          (2.31594,2.7905)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)
                    (0,0)                     (0,0)   (0.00024278,0.00010417)     (0.217866,0.00104248)                     (0,0)                     (0,0)                     (0,0)                     (0,0)      (-0.0008087,2.6e-07)        (5.73e-06,8.1e-07)   (0.00393912,0.00010418)   (-0.127623,-0.00061067)     (0.00011683,-1.9e-07)     (-0.0006716,-7.8e-07)     (9.095e-05,4.308e-05)   (-0.0644847,-0.0006102)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)
                    (0,0)                     (0,0)                     (0,0)          (2.31594,2.7905)   (-0.00130676,-1.39e-06) (-0.00102149,-0.00021714)    (0.0413077,0.00019766)         (7.23664,6.86893)        (0.500641,5.6e-07)  (-0.00018189,-8.616e-05)  (-0.0781991,-0.00073998)          (2.31594,2.7905)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0) (-0.00042231,-0.00012091)                     (0,0)         (1.73321,3.53729)                     (0,0)                     (0,0)                     (0,0)                     (0,0)
                    (0,0)                     (0,0)    (0.00455975,4.315e-05)                     (0,0)     (-0.00089467,7.6e-07)   (-0.00130676,-1.39e-06)   (0.00024716,0.00010605)  (-0.0413077,-0.00019766)      (0.0001107,-1.7e-07)      (0.00064098,5.6e-07)   (-0.00201202,4.305e-05)    (0.0781991,0.00073998)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)      (0.00014839,4.4e-07)                     (0,0)  (-0.0193833,-0.00049809)                     (0,0)                     (0,0)                     (0,0)                     (0,0)
                    (0,0)                     (0,0)     (0.090243,0.00043181)         (2.94443,2.79482)      (0.499494,-1.12e-06)  (-0.00018189,-8.616e-05)                     (0,0)          (2.31594,2.7905)      (-0.0008912,9.1e-07)  (-0.00096261,-0.0002129)   (-0.211439,-0.00101173)         (7.10848,6.74728)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)  (-0.00056253,-0.0001165)                     (0,0)         (2.88173,3.55652)                     (0,0)                     (0,0)                     (0,0)                     (0,0)
                    (0,0)                     (0,0)    (0.00010056,4.315e-05)   (-0.090243,-0.00043181)             (6.703e-05,0)   (-0.00050568,-1.12e-06)    (0.00455975,4.315e-05)                     (0,0)     (-0.00113032,5.3e-07)      (-0.0008912,9.1e-07)   (-0.0045034,0.00010415)     (0.211439,0.00101173)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)      (0.00038673,9.4e-07)                     (0,0)  (-0.0534256,-0.00053643)                     (0,0)                     (0,0)                     (0,0)                     (0,0)
                    (0,0)                     (0,0)   (-0.0251163,-0.0006454)         (4.63487,6.72124)     (0.00063547,1.45e-06) (-0.00108457,-0.00022461)   (-0.117256,-0.00117733)         (5.55601,6.85699)      (0.499971,-3.07e-06) (-0.00228556,-0.00034268)     (0.230853,0.00178218)          (8.99968,10.298)    (0.00062601,-1.23e-06) (-0.00040226,-0.00017259)    (0.0568305,0.00027193)         (5.88886,5.58963)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)   (3.691e-05,-0.00011153)                     (0,0)           (1.982,4.04505)
                    (0,0)                     (0,0)   (0.00748371,0.00010397)     (0.0251163,0.0006454)       (6.774e-05,3.6e-07)     (0.00063547,1.45e-06)    (0.0019205,0.00010589)     (0.117256,0.00117733)    (-0.00024843,-2.4e-07)    (-2.913e-05,-3.07e-06)  (-0.00461883,0.00015896)   (-0.230853,-0.00178218)     (-0.00083939,2.2e-07)    (0.00062601,-1.23e-06)    (-0.0052904,8.627e-05)  (-0.0568305,-0.00027193)                     (0,0)                   (0.5,0)                     (0,0)                     (0,0)                     (0,0)      (-3.719e-05,6.6e-07)                     (0,0)   (-0.0763484,-0.0019619)
                    (0,0)                     (0,0)     (0.152739,0.00125608)         (5.52369,6.72735)       (-9.162e-05,-6e-08)  (0.00019941,-0.00018336)    (0.0300956,0.00070779)         (3.55668,6.82522)      (0.00322718,2.7e-07)  (0.00100646,-0.00037669)   (-0.138197,-0.00072924)         (12.7453,13.0983)      (0.499417,-1.09e-06)  (-0.00018189,-8.616e-05)    (0.0178848,0.00016924)          (2.31594,2.7905)                     (0,0) (-0.00020301,-0.00010941)                     (0,0)         (1.99984,3.54347)                     (0,0)  (0.00011828,-0.00010875)                     (0,0)         (2.10955,4.04819)
                    (0,0)                     (0,0)   (0.00117747,0.00010397)   (-0.152739,-0.00125608)        (-2.717e-05,8e-08)       (-9.162e-05,-6e-08)    (1.513e-05,0.00010535)  (-0.0300956,-0.00070779)      (-0.000866,1.48e-06)      (0.00322718,2.7e-07)    (0.0220268,0.00020238)     (0.138197,0.00072924)        (8.619e-05,-7e-08)   (-0.00058296,-1.09e-06)      (0.004216,4.314e-05)  (-0.0178848,-0.00016924)                     (0,0)         (-6e-06,-6.9e-07)                     (0,0)      (0.058675,0.0012186)                     (0,0)         (2.581e-05,6e-07)                     (0,0)  (-0.0852486,-0.00200487)
                    (0,0)                     (0,0)  (-0.0355198,-0.00091274)         (1.92282,3.92427)                     (0,0)                     (0,0)                     (0,0)                     (0,0)      (-0.0002382,6.2e-07)  (-0.00193505,-0.0002194)  (-0.0871354,-0.00067268)         (5.69809,6.35139)     (0.00017221,-7.4e-07) (-0.00078467,-0.00019377)     (0.103106,0.00242483)         (2.89427,5.55407)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0) (-0.00023215,-0.00012512)                     (0,0)          (2.2869,4.05211)
                    (0,0)                     (0,0)    (0.00146406,6.074e-05)    (0.0355198,0.00091274)                     (0,0)                     (0,0)                     (0,0)                     (0,0)     (-0.00022689,5.1e-07)      (-0.0002382,6.2e-07)    (0.00259242,9.808e-05)    (0.0871354,0.00067268)        (-2.649e-05,1e-08)     (0.00017221,-7.4e-07)   (-0.00185659,8.555e-05)   (-0.103106,-0.00242483)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)        (6.86e-06,7.9e-07)                     (0,0)  (-0.0670974,-0.00139353)
                    (0,0)                     (0,0)    (0.0355198,0.00091274)         (1.92282,3.92427)                     (0,0)                     (0,0)                     (0,0)                     (0,0)    (-0.00050754,-3.8e-07)  (0.00108126,-0.00017282)    (0.00807103,6.231e-05)         (5.69809,6.35139)    (-0.00135942,-8.3e-07)   (0.00016175,-0.0001618)      (0.12563,0.00126141)         (4.52124,5.57992)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)
                    (0,0)                     (0,0)    (0.00146406,6.074e-05)  (-0.0355198,-0.00091274)                     (0,0)                     (0,0)                     (0,0)                     (0,0)     (-0.00015569,2.3e-07)    (-0.00050754,-3.8e-07)   (-0.00755564,9.798e-05)  (-0.00807103,-6.231e-05)     (0.00012808,-3.1e-07)    (-0.00135942,-8.3e-07)   (-0.00050506,8.613e-05)    (-0.12563,-0.00126141)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                   (0.5,0)                     (0,0)                     (0,0)
                    (0,0)                     (0,0)                     (0,0)                     (0,0)         (5.9e-06,8.3e-07)  (0.00138565,-0.00010973)     (0.131551,0.00062947)         (4.29221,4.07411)                   (0.5,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)             (1e+20,1e+20) (-0.00108439,-0.00012295)                     (0,0)         (3.19317,3.55927)                     (0,0)                     (0,0)                     (0,0)                     (0,0)
                    (0,0)                     (0,0)                     (0,0)                     (0,0)     (-0.00050333,3.1e-07)         (5.9e-06,8.3e-07)      (0.0001466,6.29e-05)   (-0.131551,-0.00062947)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)       (0.00100481,-4e-07)                     (0,0)    (0.0311609,0.00024056)                     (0,0)                     (0,0)                     (0,0)                     (0,0)
                    (0,0)                     (0,0)                     (0,0)                     (0,0)       (-0.00064738,3e-08)  (-0.00026515,-0.0001256)     (0.132939,0.00125796)         (3.37603,4.06782)     (-0.00106953,7.6e-07)  (-0.00135281,-9.732e-05)   (-0.123812,-0.00059244)         (2.94443,2.79482)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0) (-0.00050013,-0.00012351)             (1e+20,1e+20)         (1.84474,3.54004)                     (0,0)                     (0,0)                     (0,0)                     (0,0)
                    (0,0)                     (0,0)                     (0,0)                     (0,0)             (9.772e-05,0)       (-0.00064738,3e-08)    (-0.00638177,6.27e-05)   (-0.132939,-0.00125796)       (-0.00044777,9e-08)     (-0.00106953,7.6e-07)   (-0.00777332,4.312e-05)     (0.123812,0.00059244)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)     (0.00019554,-1.1e-07)                     (0,0)    (0.0117707,0.00027682)                     (0,0)                     (0,0)                     (0,0)                     (0,0)
                    (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                   (0.5,0)                     (0,0)                     (0,0)                     (0,0)     (0.00157357,-6.5e-07)  (-0.00135281,-9.732e-05)     (0.106189,0.00050811)         (2.94443,2.79482)                     (0,0)                     (0,0)                     (0,0)                     (0,0)             (1e+20,1e+20)  (0.00069291,-0.00011075)                     (0,0)         (3.65152,4.07018)
                    (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)       (-0.00032665,7e-08)     (0.00157357,-6.5e-07)   (-0.00333164,4.313e-05)   (-0.106189,-0.00050811)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)      (0.00021832,9.7e-07)                     (0,0)   (-0.145276,-0.00112153)
                    (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)    (-0.00113919,-7.1e-07)  (-0.0017245,-0.00012406)     (0.115038,0.00055045)         (3.75343,3.56271)                   (0.5,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)  (0.00011789,-0.00011793)             (1e+20,1e+20)         (3.29539,4.06703)
                    (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)      (-0.0005383,7.6e-07)    (-0.00113919,-7.1e-07)       (0.0001282,5.5e-05)   (-0.115038,-0.00055045)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)                     (0,0)     (-0.0001273,1.12e-06)                     (0,0)   (-0.107442,-0.00107879)
    
    矩阵B:

                  (559.117,673.686)
                (2.67104,0.0252753)
              (-12.7623,-0.0610671)
              (-12.7623,-0.0610671)
                   (231.594,279.05)
                (7.81991,0.0739976)
                 (21.1439,0.101173)
                 (21.1439,0.101173)
                   (899.968,1029.8)
               (-23.0853,-0.178218)
                (13.8197,0.0729243)
                (13.8197,0.0729243)
                  (569.809,635.139)
                (8.71354,0.0672685)
            (-0.807101,-0.00623082)
            (-0.807101,-0.00623082)
                              (0,0)
                              (0,0)
                (12.3812,0.0592438)
                (12.3812,0.0592438)
                              (0,0)
                              (0,0)
              (-11.5038,-0.0550452)
              (-11.5038,-0.0550452)
    
    结果-密集解算器:

    (1.56546e-16,-8.48356e-18)
    (-1.55778e-17,-1.02004e-18)
                (54620.7,54007)
              (-522.627,940.18)
              (47233.7,22653.3)
                (174133,198381)
                (-10668.3,9850)
            (-1248.97,-43.9305)
              (49122.2,47145.1)
            (-80005.4,-52797.6)
             (6906.72,-12481.2)
             (-569.706,403.242)
              (52814.2,32728.2)
                (227838,248521)
                (128718,149736)
            (-2714.91,-889.217)
    (-3.91875e-17,-3.83846e-18)
               (185.826,131.33)
      (1.81417e-16,3.26206e-18)
             (-4471.34,118.032)
     (-3.59122e-16,1.92743e-17)
             (-85.6079,245.052)
     (-2.40525e-16,4.58839e-17)
             (1334.04,-128.885)
    
    结果-SparseSolverQR

    (6.16402e-18,5.72847e-19)
    (1.34816e-20,-1.32288e-20)
                         (0,0)
                         (0,0)
                         (0,0)
                         (0,0)
                         (0,0)
                         (0,0)
                         (0,0)
                         (0,0)
                         (0,0)
                         (0,0)
                         (0,0)
                         (0,0)
                         (0,0)
                         (0,0)
                         (0,0)
                         (0,0)
      (6.22024e-20,-6.161e-20)
                         (0,0)
                         (0,0)
                         (0,0)
    (-5.77941e-20,5.72436e-20)
                         (0,0)
    
    结果-SparseSolverLU

    (1.56546e-16,-8.48356e-18)
    (-1.55778e-17,-1.02004e-18)
                (54620.7,54007)
              (-522.627,940.18)
              (47233.7,22653.3)
                (174133,198381)
                (-10668.3,9850)
            (-1248.97,-43.9305)
              (49122.2,47145.1)
            (-80005.4,-52797.6)
             (6906.72,-12481.2)
             (-569.706,403.242)
              (52814.2,32728.2)
                (227838,248521)
                (128718,149736)
            (-2714.91,-889.217)
    (-3.91875e-17,-3.83846e-18)
               (185.826,131.33)
      (1.81417e-16,3.26206e-18)
             (-4471.34,118.032)
     (-3.59122e-16,1.92743e-17)
             (-85.6079,245.052)
     (-2.40525e-16,4.58839e-17)
             (1334.04,-128.885)
    

    你的矩阵显然是不可逆的,除非你能保证
    B
    在A的图像中,否则可能根本没有解决方案。在这种情况下,
    SparseQR
    应该为您提供最小二乘解。您可以通过以下方式验证您是否已获得:

    std::cout << (A.transpose()*(A*x-b)).norm() / (A.transpose()*b) << "\n";
    

    std::cout在矩阵求解过程中,我在第一篇文章中将A矩阵更改为更新后的矩阵(通过在某些对角线位置添加大量数字,很抱歉之前没有提到这一点)。但SparseQR解算器似乎与稠密解算器给出了不同的结果。SparseLU解算器似乎运行良好,并与稠密解算器获得一致的结果。@Kevin您使用的是哪种Eigen版本?今年SparseQR中有一个针对复杂矩阵的错误修复程序:@chtz我几天前刚从网站上下载,所以它应该是最新版本。您的大数字太大,wrt数值精度为双精度(1e-16)。因此,您的初始条目被视为零。。。如果要修正某些条目,请将固定的X移动到方程的右侧,并以最小二乘法求解剩余的未知数(这是QR在默认情况下所做的)。