我需要测试一个方差矩阵是否为对角矩阵。如果不是,那么我将进行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