如何在Matlab ichol()函数中考虑复数?

时间:2017-07-12 09:13:26

标签: matlab

当在Matlab中使用函数ichol()来计算不完整的Cholesky分解时,它忽略了矩阵的复杂部分。即,L = ichol(A)等于L = ichol(real(A))。这里,矩阵A是一个复杂的稀疏矩阵。

例如,

    [4      2+2i     2+2i
A =  2-2i   7        3-2i
     2-2i   3+2i     3    ]

                 [2      0         0
ichol(A)       =  1      2.45      0
                  1      0.817     1.16]

                 [2      0         0
ichol(real(A)) =  1      2.45      0
                  1      0.817     1.16]

                 [2       0        0
ichol(abs(A)) =   1.41    2.37     0
                  1.41    0.718    0.696]

有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

如果我错了,请纠正我,但是Cholseky分解只是为正定矩阵定义的吗?你的显然不是因为A*[1+3i;1-2i;-5]给出零向量。也就是说,real(A)在你的例子中是肯定的。

这就是为什么如果你尝试chol

>> chol(A)
Error using chol
Matrix must be positive definite.

>> chol(real(A))
ans =
    2.0000    1.0000    1.0000
         0    2.4495    0.8165
         0         0    1.1547 

我不确定ichol的作用。但是,文档列出了参考资料

  

Manteuffel,T.A。 "正定线性系统的不完全分解技术。"数学。 COMPUT。 34,473-497,1980。

这听起来仍然需要肯定。