为什么cholesky不适用于这个对称矩阵?

2024-06-10 04:35:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用Sympy找到一个象征性的Cholesky分解。矩阵M(见示例)是实对称的(因此是hermitian矩阵)。但Sympy提出了一个错误:矩阵必须是厄米特矩阵。你知道吗

两个问题:

  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.

Tags: fromimporttrue示例错误矩阵matrix因子
1条回答
网友
1楼 · 发布于 2024-06-10 04:35:19
  1. 矩阵M不是Hermitian,因为值xy是复杂的没有限制。你知道吗
  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方法按原样处理示例。你知道吗

相关问题 更多 >