我有两个方阵矩阵A和B.A是对称的,B是对称的正定矩阵。我想计算$ trace(A.B ^ { - 1})$。现在,我计算B的Cholesky分解,求解等式中的C $ A = C.B $并总结对角元素。
是否有更有效的处理方式?
我计划使用Eigen。如果矩阵稀疏(A通常是对角线,B通常是带对角线),你能提供一个实现吗?
答案 0 :(得分:5)
如果B
是稀疏的,那么在
B
求解时,它可能是有效的(即O(n),假设条件编号为x_i
})
B x_i = a_i
(样本Conjugate Gradient代码在维基百科上提供)。将a_i
作为A
的列向量,可以得到O(n ^ 2)中的矩阵B^{-1} A
。然后,您可以将对角线元素相加以获得跟踪。通常,这种稀疏逆乘法比获得全部特征值更容易。 为了比较,Cholesky decomposition是O(n ^ 3)。(请参阅Darren Engwirda关于Cholesky的评论)。
如果您只需要近似跟踪,您实际上可以通过平均将成本降低到O(q n)
r^T (A B^{-1}) r
超过q
随机向量r
。通常是q << n
。如果随机向量r
的分量满足
< r_i r_j > = \delta_{ij}
其中< ... >
表示r
分布的平均值。例如,组件r_i
可以是具有单位方差的独立高斯分布。或者可以从+ -1统一选择它们。通常跟踪标度如O(n)和跟踪估计中的误差标度如O(sqrt(n / q)),因此相对错误标度为O(sqrt(1 / nq))
答案 1 :(得分:1)
如果广义特征值的计算效率更高,则可以计算广义特征值A*v = lambda* B *v
,然后对所有lambda进行求和。