繁体   English   中英

具有给定特征值和特征向量的随机正半定矩阵

[英]Random positive semi-definite matrix with given eigenvalues and eigenvectors

有没有一种方法可以在Python中生成具有给定特征值和特征向量的随机正半定矩阵?

我看着这个 ,但他们不允许指定矩阵特征值建设。

上下文:我想生成具有受控椭圆度的随机多元高斯,并且由于分布的长/短轴的长度与特征值成比例,因此我希望我的协方差矩阵具有它们。 可以在此处找到Definiton(第81页)

当您没有特征向量而只需要一些特征值时,您可以列出所需的特征值并使用正交矩阵将它们弄乱。 由于同余变换不会改变矩阵的惯性(达到数值精度),因此可以使用随机矩阵QR分解的Q矩阵(或其他任何生成正交矩阵的方式)。

import numpy as np
import scipy.linalg as la
des = [1, 0, 3, 4, -2, 0, 0]
n = len(des)
s = np.diag(des)
q, _ = la.qr(np.random.rand(n, n))
semidef = q.T @ s @ q
np.linalg.eigvalsh(semidef)

array([-2.00000000e+00, -2.99629568e-16, -5.50063275e-18,  2.16993906e-16,
        1.00000000e+00,  3.00000000e+00,  4.00000000e+00])

当实际上还拥有特征向量时,无论如何,您都可以简单地构造原始矩阵,这就是特征值分解的定义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM