我需要测试一个方差矩阵是否是对角线。如果没有,我会做 Cholesky LDL 分解。但我想知道哪种最可靠和最快的测试方法是矩阵对角线?我正在使用 Fortran。
我想到的第一件事是对矩阵的所有元素求和,然后从该总和中减去对角线元素。如果答案为 0,则矩阵是对角线。有更好的想法吗?
在 Fortran 我会写
!A is my matrix
k=0.0d0
do i in 1:n #n is the number of rows/colums
k = k + A(i,i)
end do
if(abs(sum(A)-k) < epsilon(k)*sum(A)) then
#do cholesky LDL, which I have to write myself, haven't found any subroutines for that in Lapack or anywhere else
end if