Math 给定A和B的迹(AB^{-1})的有效计算

Math 给定A和B的迹(AB^{-1})的有效计算,math,matrix,sparse-matrix,eigen,Math,Matrix,Sparse Matrix,Eigen,我有两个方阵A和B。A是对称的,B是对称正定的。我想计算$trace(A.B^{-1})$。现在,我计算B的Cholesky分解,解方程$A=C.B$中的C,并求对角线元素的和 有没有更有效的方法 我计划使用Eigen。如果矩阵是稀疏的(A通常是对角的,B通常是带对角的),你能提供一个实现吗?如果广义特征值的计算效率更高,你可以计算广义特征值,A*v=lambda*B*v,然后将所有的lambda相加。如果B是稀疏的,它可能是有效的(即O(n),假设良好条件数为B)来求解x_i B x_i =

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

有没有更有效的方法


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

如果广义特征值的计算效率更高,你可以计算广义特征值,
A*v=lambda*B*v
,然后将所有的lambda相加。

如果
B
是稀疏的,它可能是有效的(即O(n),假设良好条件数为
B
)来求解
x_i

B x_i = a_i
(示例代码在Wikipedia上给出)。将
a_i
作为
a
的列向量,得到O(n^2)中的矩阵
B^{-1}a
。然后可以对对角线元素求和以得到轨迹。通常,进行这种稀疏逆乘法要比得到完整的特征值集更容易。作为比较,是O(n^3)(见下面达伦·恩格维达对乔莱斯基的评论)

如果只需要轨迹的近似值,实际上可以通过平均值将成本降低到O(qn)

r^T (A B^{-1}) r
超过
q
随机向量
r
。通常
q=\delta_{ij}

其中,
<…>
表示
r
分布的平均值。例如,
r_i
分量可以是独立的高斯分布,具有单位方差。或者,它们可以从+-1中均匀选择。通常道标度为O(n),道估计标度中的误差为O(sqrt(n/q))因此,相对误差标度为O(sqrt(1/nq))

我认为C++标签实际上属于这里,因为问题是关于使用EGEN实现的,C++矩阵操纵库。是一个正半定或正定的吗?@ DavidZaslavsky i删除了tag@FooBahA是一个样本方差协方差矩阵。我很想说它是spd,但我不确定。它肯定是semid确定它是否是协方差矩阵。谢谢你的回答。你如何用r进行平均?从你写的来看,似乎你需要计算a.B^{-1},这可能不是你想说的。Kipton可能意味着你应该计算r^T a B^{-1}首先解B x=r,然后计算r^T A x。但我不明白他如何得到概率方法的成本O(n):解n个成本为O(n)的系统,每个系统的成本为O(n^2)。也许随机向量的数量可以小于n=A的大小?@Kipton Barros:稀疏Cholesky分解的复杂性肯定不是
O(n^3)
-这将是一个密集的因式分解,稀疏情况通常要快得多。使用
PCG
解算器来求解
N
线性系统将导致至少
O(N | B |)
复杂度,在对角
B
情况下,这只会是
O(N^2)
。我可能会以“好”为基准稀疏因子分解包,可能是
CHOLMOD
@Darren,感谢您对Cholesky分解的更正。
< r_i r_j > = \delta_{ij}