1つの分散行列が対角であるかどうかをテストする必要があります。そうでない場合は、コレスキー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