2017-08-02 46 views

回答

0

對於純numpy的/ SciPy的實現(其欺騙不給),我建議乾脆做這樣的事情:

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

有在最後一行丟失的圓括號。如果返回值是'dia_matrix((data,np.arange(2)),shape = a.shape)'? –

+0

該函數不能正確計算Jordan範式。嘗試一下,說'a = np.eye(4)'。它應該返回相同的標識矩陣,但它會創建一個3號的Jordan塊。 –

相關問題