【问题标题】:Sympy: Why is cholesky not working for this symmetric matrix?Sympy:为什么 cholesky 不适用于这个对称矩阵?
【发布时间】:2019-07-15 09:04:59
【问题描述】:

我想用 Sympy 找到一个符号 Cholesky 因式分解。矩阵 M(见示例)是实对称的(因此是厄米特矩阵)。但 Sympy 引发 ValueError: Matrix must be Hermitian。

两个问题:

  1. 为什么会出错?
  2. 我需要做什么才能找到我的 Cholesky 因子?
from sympy import *
x, y = symbols('x y')

M = Matrix([
    [ exp(x**2), exp(x*y)],
    [  exp(x*y), exp(y**2)]
])

print(M == M.T) #True
L = M.cholesky() #ValueError: Matrix must be Hermitian.

【问题讨论】:

    标签: python matrix linear-algebra sympy


    【解决方案1】:
    1. 矩阵 M 不是 Hermitian,因为 x 和 y 的值没有复杂的限制。
    2. 由于M 不是Hermitian 的必要条件,您应该使用

      M.cholesky(hermitian=False)
      
      Out[17]: 
      Matrix([
      [         sqrt(exp(x**2)),                                       0],
      [exp(x*y)/sqrt(exp(x**2)), sqrt(exp(y**2) - exp(-x**2)*exp(2*x*y))]])
      

    hermitian 是出现在sympy version 1.4 中的参数。您可以找到更改on this page。对于早期版本,cholesky 方法可按原样与您的示例一起使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-06
      • 2020-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-03
      • 1970-01-01
      相关资源
      最近更新 更多