2017-08-02 7 views

Antwort

0

Für eine reinen numpy/scipy Implementierung (die die Betrogene nicht geben), empfehle, habe ich einfach so etwas wie:

from scipy.sparse import dia_matrix 
def JordanForm(a, thr = 10**-5): 
    data = np.zeros((2, a.shape[0])) 
    data[0] = scipy.linalg.eigh(a)[0] 
    data[1,:-1] = (np.diff(data[0]) < thr).astype(int) 
    return dia_matrix((data, np.arange(2)), shape = a.shape) 
+0

Es ist eine fehlende Klammer in der letzten Zeile. Sollte der Rückgabewert 'dia_matrix ((data, np.arange (2)), shape = a.shape) sein? –

+0

Diese Funktion berechnet die Jordan-Normalform nicht korrekt. Versuchen Sie es mit, sagen Sie 'a = np.eye (4)'. Es sollte die gleiche Identitätsmatrix zurückgeben, aber stattdessen wird ein Jordan-Block der Größe 3 erstellt. –

Verwandte Themen