Cで大きな整数を処理する方法GMPは、大きな整数を処理できるようにするパッケージであることを私は知っています。
ただし、各要素の長さが1000ビットである500×500の行列を検討しています。誰かがCまたはPythonのどのパッケージで逆行列を計算できるか教えてもらえますか?
Cで大きな整数を処理する方法GMPは、大きな整数を処理できるようにするパッケージであることを私は知っています。
ただし、各要素の長さが1000ビットである500×500の行列を検討しています。誰かがCまたはPythonのどのパッケージで逆行列を計算できるか教えてもらえますか?
あなたの質問から、1000 ビットの精度で浮動小数点数を使用して逆数を計算しようとしているかどうか、または分数を使用するかどうかはわかりません。
前者の場合、 mpmathとgmpyの組み合わせを試してみます。次の例では、100 ビットの精度でランダムな 3x3 行列を作成し、逆行列を計算します。
>>> from mpmath import *
>>> mp.prec = 100
>>> a = randmatrix(3)
>>> a**-1
matrix(
[['-2.9551532644739824344170194538', '-2.30592481828272627130234272', '4.618043964228917637573009707'],
['12.025269724235234315848646394', '3.3570351961866008157001332066', '-10.59068013761452569858474265'],
['-6.672524995207041946321450867', '-0.57061969261482431665347164675', '5.508560423258977568243759022']])
>>> a * a**-1
matrix(
[['1.0', '-3.8920288101260775500720697474e-34', '5.467369412738327810686299975e-34'],
['-2.0267823641769153744296258652e-33', '1.0', '-1.4939276515262026082238333732e-33'],
['-2.1979577599335336964264104571e-33', '-6.0264087812469052430270713117e-34', '1.0']])
>>>
注: mpmath 0.17 は gmpy でのみ動作します。gmpy2 (次のメジャー リリース) を使用するには、mpmath のソース リポジトリを使用する必要があります。
正確な有理逆数が必要な場合は、sympyを試すことができます。分数のサイズが大きくなり、浮動小数点の逆数よりもはるかに遅くなることが懸念されます。sympy は舞台裏で mpmath と gmpy を使用します。