0
Я использую несколько точности Rationals (MPFR) объект в матрице Numpy,Как сохранить точность gmpy2 MPFR в матричной операции Numpy
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? Любое предложение будет оценено!
Есть ли способ использовать mpfr в Numpy? Поскольку операция матрицы в mpmath медленнее, чем операция numpy. и я также хочу сохранить точность. Спасибо – PytLab
@PytLab Причина, по которой numpy быстрее, заключается в том, что она использует типы с плавающей точкой, которые реализованы в аппаратном обеспечении. Они имеют фиксированную точность, но очень быстрые. Как только вы начнете использовать арифметику произвольной точности, производительность будет медленнее. – casevh