假设我们有两个矩阵和(我们可以假设它们是对称的;如果绝对必要,我认为它们可能是正定的)。那么,有没有什么技巧可以解决
在哪里表示 Hadamard (elementwise) 产品?
如果可能,我正在寻找直接求解器,而不是像 CG 这样的迭代方法。
假设我们有两个矩阵和(我们可以假设它们是对称的;如果绝对必要,我认为它们可能是正定的)。那么,有没有什么技巧可以解决
如果可能,我正在寻找直接求解器,而不是像 CG 这样的迭代方法。
最终,它取决于稀疏性和以及由此产生的哈达玛产品的对称性。
hadamard 产品将聚合稀疏结构和. 因此,如果一个或另一个是稀疏的,则产品也是稀疏的(如果和具有不同的稀疏结构)。所以任何稀疏的直接求解器都是合适的。但是,如果矩阵非常大,内存就会成为问题,稀疏迭代方法几乎是唯一的选择。
即使和是密集的,哈达玛产品是操作,与直接线性求解相比微不足道操作。因此,即使 A 和 B 是非常大的密集矩阵,与求解系统相比,在求解结果系统之前简单地计算 hadamard 乘积也没有那么多工作量。
在稠密的情况下,关键问题变成结果矩阵是否是厄米特矩阵。在最坏的情况下(非厄米哈达玛产品),高斯消除几乎是你唯一能做的事情。如果它是 Hermitian,则 Cholesky(定)或 Bunch-Kaufman(不定)算法将是合适的。
乘积的非零元素恰好是两个矩阵中非零的位置。换句话说,乘积的稀疏模式是两个矩阵的稀疏模式的一个子集,形成乘积的一种廉价方法是取两个矩阵中的稀疏者,并将其每个元素替换为两个矩阵的乘积。这最多可以完成操作(= 非零条目的数量),这是最坏的情况但在实践中,稀疏矩阵当然要少得多,通常只有.
然后,您将使用通常的求解器来解决线性问题。这通常比在适当位置形成产品的成本要高得多。