scipy.linalg.
cdf2rdf#
- scipy.linalg.cdf2rdf(w, v)[source]#
將複數特徵值
w
和特徵向量v
轉換為區塊對角形式wr
的實數特徵值,以及相關聯的實數特徵向量vr
,使得vr @ wr = X @ vr
持續成立,其中
X
是原始陣列,w
和v
是該陣列的特徵值和特徵向量。在 1.1.0 版本中新增。
- 參數:
- w(…, M) 類陣列
複數或實數特徵值,陣列或陣列堆疊
共軛對不得交錯,否則會產生錯誤的結果。因此,
[1+1j, 1, 1-1j]
會產生正確的結果,但[1+1j, 2+1j, 1-1j, 2-1j]
則不會。- v(…, M, M) 類陣列
複數或實數特徵向量,方形陣列或方形陣列堆疊。
- 回傳值:
- wr(…, M, M) ndarray
特徵值的實數對角區塊形式
- vr(…, M, M) ndarray
與
wr
相關聯的實數特徵向量
註解
w
,v
必須是某個實數矩陣X
的特徵結構。例如,透過w, v = scipy.linalg.eig(X)
或w, v = numpy.linalg.eig(X)
取得,在這種情況下,X
也可以表示堆疊陣列。在 1.1.0 版本中新增。
範例
>>> import numpy as np >>> X = np.array([[1, 2, 3], [0, 4, 5], [0, -5, 4]]) >>> X array([[ 1, 2, 3], [ 0, 4, 5], [ 0, -5, 4]])
>>> from scipy import linalg >>> w, v = linalg.eig(X) >>> w array([ 1.+0.j, 4.+5.j, 4.-5.j]) >>> v array([[ 1.00000+0.j , -0.01906-0.40016j, -0.01906+0.40016j], [ 0.00000+0.j , 0.00000-0.64788j, 0.00000+0.64788j], [ 0.00000+0.j , 0.64788+0.j , 0.64788-0.j ]])
>>> wr, vr = linalg.cdf2rdf(w, v) >>> wr array([[ 1., 0., 0.], [ 0., 4., 5.], [ 0., -5., 4.]]) >>> vr array([[ 1. , 0.40016, -0.01906], [ 0. , 0.64788, 0. ], [ 0. , 0. , 0.64788]])
>>> vr @ wr array([[ 1. , 1.69593, 1.9246 ], [ 0. , 2.59153, 3.23942], [ 0. , -3.23942, 2.59153]]) >>> X @ vr array([[ 1. , 1.69593, 1.9246 ], [ 0. , 2.59153, 3.23942], [ 0. , -3.23942, 2.59153]])