範例5-8:用rank來判別,是否有唯一解,無解,或無限多解 #若rank(A)=n,表示full rank 表示有唯一解 #若 n > rank(A) 且 n > rank(AY) 表示有降階,為無限多組解 #若 n > rank(A) 且 n = rank(AY) 表示A降階,AY不降階,為無解 import numpy as np A = np.array([ [1,1], [3,3] ]) #注意:y矩陣,是以row為單位 Y = np.array([ [4],[6] ]) #計算行列式det(A) AY= np.array([ [1,4], [3,6] ]) #A的維度 =n個輸入變數 n = np.shape(A)[1] print('n=',n) A_rank = np.linalg.matrix_rank(A) print('A_rank=',A_rank) AY_rank = np.linalg.matrix_rank(AY) print('AY_rank=',AY_rank) if n == A_rank: #有唯一解 X = np.linalg.solve(A, Y) print('方程式,有唯一解,X=\n', X) elif n > A_rank and n > AY_rank: print('方程式,無限多解') elif n > A_rank and n == AY_rank: print('方程式,無解')