我在Numpy矩阵中使用多精度Rational(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的精度? 任何建议将不胜感激!
答案 0 :(得分:0)
出于性能原因,numpy
使用LAPACK库并且必须将矩阵元素转换为标准double
类型。您可能希望尝试mpmath
进行多次精确矩阵求逆。