给定一组特征值,我如何生成具有这些特征值的 非对称 方阵?
我试过 QR 分解,但它返回一个对称的分解。这是我到目前为止所做的。
from scipy.stats import ortho_group
eigenvalues = [0.63, 0.2, 0.09, 0.44, 0.3]
s = np.diag(eigenvalues)
q = ortho_group.rvs(len(eigenvalues))
print(np.linalg.eigvalsh(q.T @ s @ q)) # checking the eigenvalues
print(q.T @ s @ q)
对角矩阵与正交矩阵的共轭总是给出对称矩阵。要获得非对称矩阵,请改为与非正交可逆矩阵共轭:
import numpy as np
eigenvalues = [0.63, 0.2, 0.09, 0.44, 0.3]
D = np.diag(eigenvalues)
n = len(eigenvalues)
rng = np.random.default_rng()
while True:
P = rng.random((n, n))
if np.linalg.det(P) != 0:
break
A = P@D@np.linalg.inv(P)
print(A)
print("\nEigenvalues:")
print(np.linalg.eigvals(A)) # checking the eigenvalues
它给出:
[[ -1.23417213 11.91027222 -13.37533243 10.2722421 -4.59655968]
[ -0.24097482 3.09499536 -2.88526862 1.82847184 -1.06480054]
[ 0.55926723 -3.15271219 4.08323704 -3.29506564 1.1910062 ]
[ 0.45811586 -2.57807667 3.0211003 -2.22846412 0.92175117]
[ -0.62006334 5.94747059 -6.43946088 4.61080106 -2.05559614]]
Eigenvalues:
[0.63 0.44 0.09 0.3 0.2 ]