回 帖 发 新 帖 刷新版面

主题:复数矩阵求逆,在inter fortran和matlab有一些差异?

一个复数矩阵利用inter fortran中的call Dlincg(nnt,uB,nnt,uB,nnt) 
和matlab中inv命令得到的逆有一些值不一样!请问怎么解决呢?

下面是通过matlab得到逆矩阵中一列值           通过fortran得到对应的一列值

0                                              0
                                      0                                               0                             
                                             0                                                0                          
1.292469707114106e-026               (-4.365792522353296E-027,0.000000000000000E+000)                                                                           2.328688235004043e-027i         (-2.328688235004043E-027,2.328688235004043E- 

                                                                          27
                                                                                       

                                                                                                                

回复列表 (共3个回复)

沙发

用原矩阵乘以逆矩阵,看看得到的是不是单位矩阵,就可以检查对不对了。数值计算是会产生误差的,只要误差在允许范围内结果就是对的。连不同版本的fortran编译器计算出来的结果都不可能保证bit-to-bit identical,何况是fortran和matlab之间的结果

板凳

顶帖,实部很接近,但为什么虚部相差很大呢

3 楼

你在一楼贴的很乱啊,根本对应不上~~~~

我来回复

您尚未登录,请登录后再回复。点此登录或注册