2016-09-24 38 views
3

Ich muss die Determinante einer großen 1554,1554-Matrix von Werten mit einfacher Genauigkeit in Python berechnen. so begegne mir eine Laufzeit Warnung Dabei:Determinante einer (großen) 1554 x 1554-Matrix in Python

import numpy as np 

from numpy import linalg as LA 

a = np.random.random((1554, 1554)) 

b = np.random.random((1554, 1554)) 

c = np.dot(a,b) 

det = LA.det(c) 

RuntimeWarning: Überlauf in det angetroffen r = _umath_linalg.det (a, signature = Unterschrift)

Alle Ideen, wie ich arbeiten kann um dieses Problem? Danke vielmals!

Edit: Diese Frage ist insofern einzigartig, als es die Determinante großer Matrix in doppelter Genauigkeit auf Berechnung speziell bezieht, obwohl eine mögliche Antwort ist im Lieferumfang dabei: Can I get the matrix determinant using Numpy?

+0

Warum brauchen Sie die Determinante? –

+0

Gibt es eine Überlaufwarnung für kleinere Matrizen? – nluigi

+0

@JamieMac überprüfen [diese Antwort] (http://Stackoverflow.com/a/19317237/832621) –

Antwort

2

Sie diese Beziehung verwenden: https://wikimedia.org/api/rest_v1/media/math/render/svg/f6404a766d86e9d78a5c4f82e05de37469a5f8e9

von https://en.wikipedia.org/wiki/Determinant#Properties_of_the_determinant

Also teilen Sie Ihre Matrix durch den Mittelwert und berechnen Sie dann die Determinante, um Überlauf zu vermeiden. Später können Sie mit dem Mittelwert auf die Kraft von n multiplizieren (Länge einer Achse)

edit: Ich bin mir nicht sicher, ob das Mittel die ideale Wahl ist. Dies ist mehr eine mathematische Frage

Verwandte Themen