मुझे परीक्षण करने की आवश्यकता है कि एक भिन्नता मैट्रिक्स विकर्ण है या नहीं। यदि नहीं, तो मैं Cholesky एलडीएल अपघटन करूँगा। लेकिन मैं सोच रहा था कि परीक्षण करने का सबसे विश्वसनीय और सबसे तेज़ तरीका मैट्रिक्स विकर्ण है? मैं फोरट्रान का उपयोग कर रहा हूँ।मैट्रिक्स विकर्ण होने पर परीक्षण कैसे करें?
पहली बात जो मेरे दिमाग में आती है वह है मैट्रिक्स के सभी तत्वों का योग लेना, और उस राशि से विकर्ण तत्वों को निकालना। अगर उत्तर 0 है, तो मैट्रिक्स विकर्ण है। कोई बेहतर विचार?
फोरट्रान में मैं
!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
हो जाता है: आप एलडीएल एलडीएल मतलब 'अपघटन, नहीं। ;-) – Stobor
इसके अलावा, सरल counterexample: [[1, -1], [1, 1]] आपके परीक्षण को पास करता है। – Stobor
इसके अलावा: LAPACK एलडीएल 'decomp: http://www.netlib.org/lapack/single/ssptrf.f LAPACK Cholesky LL' decomp: http://www.netlib.org/lapack/single/spotrf.f – Stobor