import numpy as np
a=np.array([[1,2,2],[2,1,2],[2,2,1]])
w,v=np.linalg.eigh(a)
print(w)
print(v)
print(v.T.dot(a.dot(v)))
可见得到的v的每一列为一个特征向量,
v
T
⋅
a
⋅
v
=
d
i
a
g
(
λ
1
,
.
.
.
,
λ
n
)
v^T·a·v=diag(\lambda_1,... ,\lambda_n)
vT⋅a⋅v=diag(λ1,...,λn)
!!!注意只有a为对称阵结果才为对角矩阵,反例如下
import numpy as np
import numpy.linalg as LA
a=np.array([[1,3],[2,4]],dtype=float)
w,v=np.linalg.eigh(a)
print(c)
print(v.T.dot(a.dot(v)))
这是因为
A
⋅
v
=
v
⋅
d
i
a
g
(
λ
1
,
λ
n
)
,
v
−
1
⋅
A
⋅
v
=
d
i
a
g
(
λ
1
,
.
.
.
,
λ
n
)
,
但对一般的矩阵
v
T
≠
v
−
1
A·v=v·diag(\lambda_1,\lambda_n),v^{-1}·A·v=diag(\lambda_1,...,\lambda_n),但对一般的矩阵v^T\neq v^{-1}
A⋅v=v⋅diag(λ1,λn),v−1⋅A⋅v=diag(λ1,...,λn),但对一般的矩阵vT=v−1
import numpy as np
import numpy.linalg as LA
a=np.array([[1,3],[2,4]],dtype=float)
c,b=np.linalg.eig(a)
print(c)
print(b.T);
print(LA.inv(b).dot(a.dot(b)))