给出A和B的Trace(AB ^ { - 1})的有效计算

时间:2011-09-22 01:22:31

标签: math matrix sparse-matrix eigen

我有两个方阵矩阵A和B.A是对称的,B是对称的正定矩阵。我想计算$ trace(A.B ^ { - 1})$。现在,我计算B的Cholesky分解,求解等式中的C $ A = C.B $并总结对角元素。

是否有更有效的处理方式?

我计划使用Eigen。如果矩阵稀疏(A通常是对角线,B通常是带对角线),你能提供一个实现吗?

2 个答案:

答案 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进行求和。