0

我在 Numpy 矩阵中使用多精度 Rationals(mpfr) 对象,

matrix([[ mpfr('-366998.93593422093364191959435957721088073331222596080623233278164906447646654043966366647797',300),
     mpfr('-366997.28868432286431885359868309613943011772698563764930700121744888472828510537502286003536',300),
     mpfr('-366997.28868432286431885359868309613943011772698563764930700121744888472828510537502286003536',300),
     mpfr('-366997.28868432286431885359868309613943011772698563764930700121744888472828510537502310955189',300),
     mpfr('-366997.33936304224917822062156336656390364691713762458391131405889211470102834400572590888586',300),
     mpfr('-366997.28868432286431885359868309613943011772698563764930700121744888472828510537502286003536',300)],
    [ mpfr('-40813927.104656436832435886099653290386078894027773129049451436960078610548203287954114434382',300),
     mpfr('-10418349883335.380900703935580692318458974868691020694148304775624032110383967472053357462067',300),
     mpfr('-40813927.104656436832435886099653290386078894027773129049451436960078610548203287954114434382',300),
     mpfr('-40813927.104656436832435886099653290386078894027773129049451436960078610548203287954114434382',300),
     mpfr('-40813927.104656436832435886099653290386078894027773129049451436960078610548203287954114434382',300),
     mpfr('-40813927.104656436832435886099653290386078894027773129049451436960078610548203287954114434382',300)]], dtype=object)

但是当计算矩阵的逆时,我会失去精度。

In [10]: a.I
Out[10]:
matrix([[ -5.44966727e-07,   1.91970239e-14],
        [  1.06745086e-11,  -9.59848660e-14],
        [ -5.44964281e-07,   1.91969377e-14],
        [ -5.44964281e-07,   1.91969377e-14],
        [ -5.44964356e-07,   1.91969404e-14],
        [ -5.44964281e-07,   1.91969377e-14]])

那么如何保持mpfr的精度呢?任何建议将不胜感激!

4

1 回答 1

0

出于性能原因,numpy使用 LAPACK 库并且必须将矩阵元素转换为标准double类型。您可能想尝试mpmath多精度矩阵求逆。

于 2015-04-17T04:10:57.183 回答