#当元素包含一些变量而不是实际数字时,如何使用python找到矩阵的特征值和特征向量?
from sympy import *
from numpy import matrix
from numpy import linalg
from sympy import Matrix
import numpy as np
m,c,k = symbols('m,c,k')
A = Matrix( [[0, 0, m,0],[0, 0, 0,2*m],[m,0,0,0],[0,2*m,0,c]])
B = Matrix( [[-m, 0, 0,0],[0, -2*m, 0,0],[0,0,3*k,-2*k],[0,0,-2*k,2*k]])
A_inverse = A.inv()
a = np.array(A_inverse)
b = np.array(B)
m= np.matmul(a, b)
print(B)
print(A)
print(A_inverse)
w, v = linalg.eig(m) ###this does not work!!!`
print("w:",w)
print("v:",v)
答案 0 :(得分:0)
我不认为 numpy 与 sympy 那样集成,但是,sympy 内置了对角化方法,您可以尝试以下方法
from sympy import *
from numpy import matrix
from numpy import linalg
from sympy import Matrix
import numpy as np
m,c,k = symbols('m,c,k')
A = Matrix( [[0, 0, m,0],[0, 0, 0,2*m],[m,0,0,0],[0,2*m,0,c]])
B = Matrix( [[-m, 0, 0,0],[0, -2*m, 0,0],[0,0,3*k,-2*k],[0,0,-2*k,2*k]])
(P,D) = A.diagonalize()
然后你可以在 ipython 控制台中输入 D,它会显示答案的乳胶可视化