【问题标题】:Random positive semi-definite matrix with given eigenvalues and eigenvectors具有给定特征值和特征向量的随机正半定矩阵
【发布时间】:2018-03-30 12:12:18
【问题描述】:

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

我查看了this,但它们不允许为矩阵构造指定特征值。

上下文:我想生成椭圆度受控的随机多元高斯分布,因为分布的长轴/短轴的长度与特征值成正比,我希望我的协方差矩阵具有它们。 Definiton could be found here (page 81).

【问题讨论】:

    标签: python numpy scipy linear-algebra gaussian


    【解决方案1】:

    当您没有特征向量但只想要一些特征值时,您可以列出所需的特征值并使用正交矩阵将它们混杂在一起。由于全等变换不会改变矩阵的惯性(达到数值精度),您可以使用随机矩阵的 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])
    

    当你实际上也有特征向量时,你可以简单地构造原始矩阵,这就是特征值分解的定义。

    【讨论】:

    • "...或任何其他方式生成正交矩阵"scipy.stats.ortho_group.
    • @WarrenWeckesser 这个函数名真的很不幸。但真的很高兴知道谢谢。
    • @percusse 我对此进行了更多研究,并且对如何在转换后保留特征值的值感到困惑,因为西尔维斯特的惯性定律只提到了 +ve、-ve 和 0 特征值的数量被保留。是因为我们应用了正交变换吗?
    • @LaurynasTamulevičius 是的,基本上它们本质上是一堆加权点积。
    • @percusse 谢谢,你知道是否有正式的证明吗?因为我正在编写一个项目并且需要证明这一点
    猜你喜欢
    • 2022-06-14
    • 2015-02-09
    • 2022-11-24
    • 1970-01-01
    • 2012-08-08
    • 2016-08-17
    • 2017-10-21
    • 2018-10-31
    • 2018-08-11
    相关资源
    最近更新 更多