当在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]
有谁知道如何解决这个问题?
答案 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。
这听起来仍然需要肯定。