求解 Hadamard + 线性系统

计算科学 线性代数
2021-12-06 22:12:19

我需要求解一个包含 Hadamard 积和标准矩阵乘法的矩阵方程:

AX+BX=C
在哪里A,C,XRm×n,BRm×m, 和表示逐元素(Hadamard)矩阵乘积。

这种系统有名字吗?我检查了标准资源(Golub 和 van Loan、Horn 和 Johnson),但没有发现任何关于此类问题的讨论。

如果我们让a=vec(A),x=vec(X),c=vec(C)a~=diag(a),则变为:

ax+(IB)x=a~x+(IB)x=c
有解决方案
x=(a~+(IB))+cX=unvec[(diag(vec(A))+IB)+vec(C)]
在哪里是克罗内克积和()+是 (Moore-Penrose) 伪逆。

虽然使用迭代求解器并不太贵(因为a~+(IB)运算符可以或多或少地被评估),但如果可能的话,我想避免这种情况。是否有可能为这类问题推导出解析解?

在https://math.stackexchange.com/questions/2583719/how-to-solve-the-linear-equation-a-circ-xb-cx-d讨论了类似的问题,但它们停在“vec” d-out”解决方案。

1个回答

如果您将 Hadamard 乘积(从左侧或右侧)乘以来自标准基的向量,它会像这样分布在乘积中的项上

ekT(AB)=(ekTA)(ekTB)(AB)ek=(Aek)(Bek)
我们可以用它来解决X矩阵,一次一列
(AX)ek+(BX)ek=Cek(Aek)(Xek)+B(Xek)=Cek(Diag(ak)+B)xk=ckxk=(Diag(ak)+B)+ck
这是一些演示该技术的 Julia 代码(版本 1.1.0)。

使用线性代数

m,n = 30,50;
X,A,C,B = zeros(m,n), randn(m,n), randn(m,n), randn(m,m);

对于 k = 1:n
  X[:,k] = (对角线(A[:,k]) + B) \ C[:,k];
结尾

范数(A.*X + B*X - C)
1.3032451036976518e-12