जैकोबी आइजेनवैल्यू एल्गोरिथम

संख्यात्मक रैखिक बीजगणित में, जैकोबी eigenvalue एल्गोरिथ्म एक वास्तविक संख्या सममित मैट्रिक्स (एक प्रक्रिया जिसे मैट्रिक्स डायगोनलाइज़ेशन#डायगोनलाइज़ेशन के रूप में जाना जाता है) के आइगेनवैल्यू और आइजन्वेक्टर की गणना के लिए एक पुनरावृत्त विधि है। इसका नाम कार्ल गुस्ताव जैकब जैकोबी के नाम पर रखा गया है, जिन्होंने पहली बार 1846 में इस पद्धति का प्रस्ताव रखा था। लेकिन 1950 के दशक में कंप्यूटर के आगमन के साथ ही इसका व्यापक रूप से उपयोग किया जाने लगा।

विवरण
होने देना $$S$$ एक सममित मैट्रिक्स बनें, और $$G=G(i,j,\theta)$$ एक गिवेंस रोटेशन बनें। तब:


 * $$S'=G S G^\top \, $$

सममित और समान (रैखिक बीजगणित) है $$S$$.

आगे, $$S^\prime$$ प्रविष्टियाँ हैं:


 * $$\begin{align}

S'_{ii} &= c^2\, S_{ii} -  2\, s c \,S_{ij}  +  s^2\, S_{jj} \\ S'_{jj} &= s^2 \,S_{ii} +  2 s c\, S_{ij}  +  c^2 \, S_{jj} \\ S'_{ij} &= S'_{ji} = (c^2 - s^2 ) \, S_{ij} +  s c \, (S_{ii} - S_{jj} ) \\ S'_{ik} &= S'_{ki} = c \, S_{ik} -  s \, S_{jk} & k \ne i,j \\ S'_{jk} &= S'_{kj} = s \, S_{ik} + c \, S_{jk} & k \ne i,j \\ S'_{kl} &= S_{kl} &k,l \ne i,j \end{align}$$ कहाँ $$s=\sin(\theta)$$ और $$c=\cos(\theta)$$.

तब से $$G$$ ऑर्थोगोनल है, $$S$$ और $$S^\prime$$ समान फ्रोबेनियस मानदंड है $$||\cdot||_F$$ (सभी घटकों के वर्गों का वर्गमूल योग), हालाँकि हम चुन सकते हैं $$\theta$$ ऐसा है कि $$S^\prime_{ij}=0$$, किस स्थिति में $$S^\prime$$ विकर्ण पर वर्गों का योग बड़ा है:


 * $$ S'_{ij} = \cos(2\theta) S_{ij} + \tfrac{1}{2} \sin(2\theta) (S_{ii} - S_{jj}) $$

इसे 0 के बराबर सेट करें और पुनर्व्यवस्थित करें:


 * $$ \tan(2\theta) = \frac{2 S_{ij}}{S_{jj} - S_{ii}} $$

अगर $$ S_{jj} = S_{ii} $$
 * $$ \theta = \frac{\pi} {4} $$

इस प्रभाव को अनुकूलित करने के लिए, एसij सबसे बड़े निरपेक्ष मान वाला ऑफ-विकर्ण तत्व होना चाहिए, जिसे धुरी कहा जाता है।

जैकोबी आइगेनवैल्यू विधि जैकोबी को तब तक बार-बार घुमाती है जब तक कि मैट्रिक्स लगभग विकर्ण न हो जाए। फिर विकर्ण में तत्व एस के (वास्तविक) स्वदेशी मानों के सन्निकटन हैं।

अभिसरण
अगर $$ p = S_{kl} $$ परिभाषा के अनुसार, एक धुरी तत्व है  $$ |S_{ij} | \le |p| $$ के लिए  $$ 1 \le i, j \le n, i \ne j$$. होने देना $$\Gamma(S)^2$$ की सभी ऑफ-विकर्ण प्रविष्टियों के वर्गों का योग निरूपित करें $$S$$. तब से $$S$$ बिलकुल है $$ 2N := n(n-1) $$ हमारे पास ऑफ-विकर्ण तत्व हैं  $$  p^2 \le \Gamma(S )^2 \le 2 N p^2 $$ या $$  2 p^2 \ge \Gamma(S )^2 / N $$. अब $$\Gamma(S^J)^2=\Gamma(S)^2-2p^2$$. यह संकेत करता है$$ \Gamma(S^J )^2  \le  (1 - 1 / N ) \Gamma (S )^2  $$ या  $$  \Gamma (S^ J )  \le (1 - 1 / N )^{1 / 2} \Gamma(S ) 	$$; अर्थात्, जैकोबी घूर्णन का क्रम एक कारक द्वारा कम से कम रैखिक रूप से परिवर्तित होता है $$  (1 - 1 / N )^{1 / 2} $$ एक विकर्ण मैट्रिक्स के लिए.

की एक संख्या $$ N $$ जैकोबी घुमाव को स्वीप कहा जाता है; होने देना $$ S^{\sigma} $$ परिणाम निरूपित करें. पिछला अनुमान उपज देता है
 * $$ \Gamma(S^{\sigma} )  \le  \left(1 - \frac{1}{N} \right)^{N / 2} \Gamma(S )  $$;

अर्थात्, स्वीप का क्रम एक कारक ≈ के साथ कम से कम रैखिक रूप से परिवर्तित होता है $$ e ^{1 / 2}$$.

हालाँकि अर्नोल्ड शॉनहेज|शॉनहेज का निम्नलिखित परिणाम स्थानीय रूप से द्विघात अभिसरण उत्पन्न करता है। इस प्रयोजन के लिए मान लीजिए कि S के पास m विशिष्ट eigenvalues ​​​​हैं $$  \lambda_1, ..., \lambda_m $$ बहुलता के साथ  $$  \nu_1, ... , \nu_m $$ और मान लीजिए कि d > 0 दो अलग-अलग eigenvalues ​​​​की सबसे छोटी दूरी है। आइए हम कुछ नंबर पर कॉल करें


 * $$ N_S := \frac{n (n - 1)}{2}  - \sum_{\mu = 1}^{m} \frac{1}{2} \nu_{\mu} (\nu_{\mu} - 1) \le N  $$

जैकोबी शॉनहेज-स्वीप घुमाता है। अगर $$ S^ s $$ तब परिणाम को दर्शाता है
 * $$ \Gamma(S^ s ) \le\sqrt{\frac{n}{2} - 1} \left(\frac{\gamma^2}{d - 2\gamma}\right), \quad \gamma :=  \Gamma(S )  $$.

इस प्रकार अभिसरण जैसे ही द्विघात हो जाता है $$ \Gamma(S ) < \frac{d}{2 + \sqrt{\frac{n}{2} - 1}} $$

लागत
प्रत्येक जैकोबी घूर्णन O(n) चरणों में किया जा सकता है जब धुरी तत्व p ज्ञात हो। हालाँकि p की खोज के लिए सभी N≈ के निरीक्षण की आवश्यकता होती है$1⁄2$ एन2ऑफ-विकर्ण तत्व। यदि हम एक अतिरिक्त सूचकांक सरणी पेश करते हैं तो हम इसे O(n) जटिलता तक भी कम कर सकते हैं $$ m_1, \, \dots \,, \, m_{n - 1} $$ उस संपत्ति के साथ $$ m_i $$ वर्तमान एस की पंक्ति i, (i = 1, ..., n − 1) में सबसे बड़े तत्व का सूचकांक है। फिर धुरी के सूचकांक (k, l) जोड़े में से एक होना चाहिए $$  (i, m_i) $$. इसके अलावा सूचकांक सरणी का अद्यतनीकरण O(n) औसत-केस जटिलता में किया जा सकता है: सबसे पहले, अद्यतन पंक्तियों k और l में अधिकतम प्रविष्टि O(n) चरणों में पाई जा सकती है। अन्य पंक्तियों में, केवल कॉलम k और l में प्रविष्टियाँ बदलती हैं। इन पंक्तियों पर लूपिंग, यदि $$ m_i $$ न तो k है और न ही l, यह पुराने अधिकतम की तुलना करने के लिए पर्याप्त है $$  m_i $$ नई प्रविष्टियों और अद्यतन के लिए $$  m_i $$ यदि आवश्यक है। अगर $$  m_i $$ k या l के बराबर होना चाहिए और अद्यतन के दौरान संबंधित प्रविष्टि कम हो गई है, अधिकतम पंक्ति i को O(n) जटिलता में स्क्रैच से पाया जाना चाहिए। हालाँकि, ऐसा प्रति रोटेशन औसतन केवल एक बार होगा। इस प्रकार, प्रत्येक घुमाव में O(n) और एक स्वीप O(n) होता है3) औसत-केस जटिलता, जो एक मैट्रिक्स गुणन के बराबर है। इसके अतिरिक्त  $$ m_i $$ प्रक्रिया शुरू होने से पहले आरंभ किया जाना चाहिए, जिसे n में किया जा सकता है 2 कदम.

आमतौर पर जैकोबी पद्धति कम संख्या में स्वीप के बाद संख्यात्मक परिशुद्धता के भीतर परिवर्तित हो जाती है। ध्यान दें कि एकाधिक eigenvalues ​​​​पुनरावृत्तियों की संख्या को कम कर देते हैं $$N_S < N$$.

एल्गोरिथम
निम्नलिखित एल्गोरिदम गणित जैसे नोटेशन में जैकोबी पद्धति का विवरण है। यह एक वेक्टर e की गणना करता है जिसमें eigenvalues ​​​​और एक मैट्रिक्स E होता है जिसमें संबंधित eigenvectors होते हैं; वह है, $$ e_i $$ एक eigenvalue और स्तंभ है $$ E_i $$ के लिए एक ऑर्थोनॉर्मल आइजेनवेक्टर $$ e_i $$, मैं = 1, ..., एन।

'प्रक्रिया' जैकोबी(एस ∈ 'आर'n×n; 'बाहर' ई ∈ 'आर'n; 'बाहर' ई ∈ 'आर'n×n) 'वर' मैं, के, एल, एम, अवस्था ∈ 'एन' एस, सी, टी, पी, वाई, डी, आर ∈ 'आर' इंडस्ट्रीज़ ∈ 'एन'n    परिवर्तित ∈ 'एल'n   'फ़ंक्शन' मैक्सिंड(k ∈ 'N') ∈ 'N' ! पंक्ति k में सबसे बड़े ऑफ-विकर्ण तत्व का सूचकांक एम := के+1 'के लिए' i := k+2 'to' n 'do' 'अगर' │Ski│ > │Skm│ फिर एम := आई एंडिफ अंत के लिए वापसी एम एंडफंक प्रक्रिया अद्यतन(k ∈ N; t ∈ R) ! ''अद्यतन ईk और इसकी स्थिति य := ईk; यह हैk := y+t 'अगर' बदल गयाk और (y=ek) फिर बदल गयाk := असत्य; राज्य := राज्य−1 'एल्सिफ़' (नहीं बदला गयाk) और (y≠ek) फिर बदल गयाk := सत्य; राज्य := राज्य+1 'अगर अंत' 'एंडप्रोक' 'प्रक्रिया' घुमाएँ(k,l,i,j ∈ 'N') ! S का घूर्णन करेंij, एसkl┌ undefined┐   ┌     ┐┌ undefined┐ │Skl│   │c  −s││Skl│ │ undefined│ := │    ││ undefined│ │Sij│   │s   c││Sij│ └ undefined┘   └     ┘└ undefined┘ एंडप्रोक ! ''init e, E, और arrays ind, परिवर्तित' ई := मैं; स्थिति := एन k के लिए := 1 से n तक ind करेंk := मैक्सिंड(के); इk := एसkk; बदला हुआk :=सच्चा अंत जबकि state≠0 करो ! अगला रोटेशन एम := 1 ! धुरी पी का सूचकांक (के,एल) ढूंढें k के लिए := 2 से n−1 करें अगर │एसk ind k │ > │Sm ind m │ फिर m := k एंडिफ़ अंत के लिए k := m; एल := इंडm; पी := एसkl ! सी = कॉस φ, एस = पाप φ की गणना करें और := (ईl−औरk)/2; d := │y│+√(p2+y2) आर := √(पी2+डी2); सी := डी/आर; एस := पी/आर; टी := पी2/d 'यदि' y<0 'तब' s := −s; t := −t 'endif' एसkl := 0.0; अद्यतन(k,−t); अद्यतन(एल,टी) ! पंक्तियों और स्तंभों को k और l घुमाएँ 'के लिए' i := 1 'से' k−1 'do' घुमाएँ(i,k,i,l) 'endfor' 'के लिए' i := k+1 'से' l−1 'do' घुमाएँ(k,i,i,l) 'endfor' 'के लिए' i := l+1 'to' n 'do' रोटेट(k,i,l,i) 'endfor' ! eigenvectors घुमाएँ 'के लिए' मैं := 1 'से' और 'करें' ┌ undefined┐   ┌     ┐┌ undefined┐ │Eik│   │c  −s││Eik│ │ undefined│ := │    ││ undefined│ │Eil│   │s   c││Eil│ └ undefined┘   └     ┘└ undefined┘ अंत के लिए ! '' सभी संभावित रूप से परिवर्तित इंडस्ट्रीज़ को अपडेट करेंi'for' i := 1 'to' n 'do' indi := मैक्सइंड(i) 'एंडफॉर' 'कुंडली' 'एंडप्रोक'

टिप्पणियाँ
1. The logical array changed holds the status of each eigenvalue. If the numerical value of $$ e_k $$ or $$ e_l $$  changes during an iteration, the corresponding component of  changed is set to true, otherwise to false. The integer state counts the number of components of changed which have the value true. Iteration stops as soon as state = 0. This means that none of the approximations $$ e_1,\, ...\,, e_n $$ has recently changed its value and thus it is not very likely that this will happen if iteration continues. Here it is assumed that floating point operations are optimally rounded to the nearest floating point number.

2. The upper triangle of the matrix S is destroyed while the lower triangle and the diagonal are unchanged. Thus it is possible to restore S if necessary according to

for k := 1 to n−1 do ! restore matrix S for l := k+1 to n do Skl := Slk    endfor endfor

3. The eigenvalues are not necessarily in descending order. This can be achieved by a simple sorting algorithm.

for k := 1 to n−1 do m := k for l := k+1 to n do if el > em then m := l endif endfor if k ≠ m then swap em,ek        swap Em,Ek     endif endfor

4. The algorithm is written using matrix notation (1 based arrays instead of 0 based).

5. When implementing the algorithm, the part specified using matrix notation must be performed simultaneously.

6. This implementation does not correctly account for the case in which one dimension is an independent subspace. For example, if given a diagonal matrix, the above implementation will never terminate, as none of the eigenvalues will change. Hence, in real implementations, extra logic must be added to account for this case.

उदाहरण
होने देना $$	S = \begin{pmatrix} 4 & -30 & 60 & -35 \\ -30 & 300 & -675 & 420 \\ 60 & -675 & 1620 & -1050 \\ -35 & 420 & -1050 & 700 \end{pmatrix} $$ फिर जैकोबी 3 स्वीप (19 पुनरावृत्तियों) के बाद निम्नलिखित eigenvalues ​​​​और eigenvectors का उत्पादन करता है:

$$	e_1 = 2585.25381092892231 $$

$$	E_1 = \begin{pmatrix}0.0291933231647860588\\ -0.328712055763188997\\ 0.791411145833126331\\ -0.514552749997152907\end{pmatrix} $$

$$	e_2 = 37.1014913651276582 $$

$$	E_2 = \begin{pmatrix}-0.179186290535454826\\ 0.741917790628453435\\ -0.100228136947192199\\ -0.638282528193614892\end{pmatrix} $$

$$	e_3 = 1.4780548447781369 $$

$$	E_3 = \begin{pmatrix}-0.582075699497237650\\ 0.370502185067093058\\ 0.509578634501799626\\ 0.514048272222164294\end{pmatrix} $$

$$	e_4 = 0.1666428611718905 $$

$$	E_4 = \begin{pmatrix}0.792608291163763585\\ 0.451923120901599794\\ 0.322416398581824992\\ 0.252161169688241933\end{pmatrix} $$

वास्तविक सममित आव्यूहों के लिए अनुप्रयोग
जब एक सममित मैट्रिक्स के eigenvalues ​​​​(और eigenvectors) ज्ञात होते हैं, तो निम्नलिखित मूल्यों की गणना आसानी से की जाती है।


 * एकवचन मान
 * एक (वर्ग) मैट्रिक्स का एकवचन मान $$A$$ के (गैर-नकारात्मक) eigenvalues ​​​​के वर्गमूल हैं $$ A^T A $$. सममित मैट्रिक्स के मामले में $$S$$ हमारे पास है $$ S^T S = S^2 $$, इसलिए के विलक्षण मूल्य $$S$$ के eigenvalues ​​​​के पूर्ण मूल्य हैं $$S$$


 * 2-मानदंड और वर्णक्रमीय त्रिज्या
 * मैट्रिक्स ए का 2-मानदंड यूक्लिडियन वेक्टरनॉर्म पर आधारित मानदंड है; यानी सबसे बड़ा मूल्य $$ \| A x\|_2 $$ जब x सभी सदिशों से होकर गुजरता है $$ \|x\|_2 = 1 $$. यह का सबसे बड़ा एकल मूल्य है $$A$$. एक सममित मैट्रिक्स के मामले में यह इसके eigenvectors का सबसे बड़ा निरपेक्ष मान है और इस प्रकार इसके वर्णक्रमीय त्रिज्या के बराबर है।


 * शर्त संख्या
 * एक गैर-एकवचन मैट्रिक्स की स्थिति संख्या $$A$$ परिभाषित किया जाता है $$ \mbox{cond} (A) = \| A \|_2 \| A^{-1}\|_2 $$. एक सममित मैट्रिक्स के मामले में यह सबसे बड़े और सबसे छोटे eigenvalue के भागफल का निरपेक्ष मान है। बड़ी स्थिति संख्याओं वाले मैट्रिक्स संख्यात्मक रूप से अस्थिर परिणाम पैदा कर सकते हैं: छोटी गड़बड़ी के परिणामस्वरूप बड़ी त्रुटियां हो सकती हैं। हिल्बर्ट मैट्रिक्स सबसे प्रसिद्ध खराब स्थिति वाले मैट्रिक्स हैं। उदाहरण के लिए, चौथे क्रम के हिल्बर्ट मैट्रिक्स की स्थिति 15514 है, जबकि क्रम 8 के लिए यह 2.7 × 10 है8.


 * पद
 * एक मैट्रिक्स $$A$$ रैंक है $$r$$ अगर यह है $$r$$ जो स्तंभ रैखिक रूप से स्वतंत्र होते हैं जबकि शेष स्तंभ इन पर रैखिक रूप से निर्भर होते हैं। समान रूप से, $$r$$ की सीमा का आयाम है$$A$$. इसके अलावा यह शून्येतर एकवचन मानों की संख्या है।
 * एक सममित मैट्रिक्स के मामले में r गैर-शून्य eigenvalues ​​​​की संख्या है। दुर्भाग्य से पूर्णांकन त्रुटियों के कारण शून्य eigenvalues ​​​​का संख्यात्मक सन्निकटन शून्य नहीं हो सकता है (यह भी हो सकता है कि एक संख्यात्मक सन्निकटन शून्य हो जबकि वास्तविक मान शून्य न हो)। इस प्रकार कोई केवल यह निर्णय लेकर संख्यात्मक रैंक की गणना कर सकता है कि कौन सा स्वदेशी मान शून्य के काफी करीब है।


 * छद्म-उलटा
 * मैट्रिक्स का छद्म व्युत्क्रम $$A$$ अद्वितीय मैट्रिक्स है $$ X = A^+ $$ जिसके लिए $$AX$$ और $$XA$$ सममित हैं और जिसके लिए $$AXA = A, XAX = X$$ धारण करता है. अगर $$A$$ तो फिर, यह एकवचन नहीं है $$ A^+ = A^{-1} $$.
 * जब प्रक्रिया जैकोबी (एस, ई, ई) कहा जाता है, तो संबंध $$ S = E^T \mbox{Diag} (e) E $$ वह स्थान रखता है जहां Diag(e) विकर्ण पर वेक्टर e के साथ विकर्ण मैट्रिक्स को दर्शाता है। होने देना $$ e^+ $$ वेक्टर को निरूपित करें जहां $$ e_i $$ द्वारा प्रतिस्थापित किया जाता है $$ 1/e_i $$ अगर  $$ e_i \le 0 $$ और 0 से यदि  $$ e_i $$ (संख्यात्मक रूप से करीब) शून्य है। चूँकि मैट्रिक्स E ऑर्थोगोनल है, इसलिए यह इस प्रकार है कि S का छद्म-व्युत्क्रम दिया गया है   $$ S^+ = E^T \mbox{Diag} (e^+) E $$.


 * न्यूनतम वर्ग समाधान
 * यदि मैट्रिक्स $$A$$ पूर्ण रैंक नहीं है, रैखिक प्रणाली का कोई समाधान नहीं हो सकता है $$Ax=b$$. हालाँकि कोई इसके लिए वेक्टर x की तलाश कर सकता है  $$ \| Ax - b \|_2 $$ न्यूनतम है. समाधान है $$ x = A^+ b $$. सममित मैट्रिक्स S के मामले में, पहले की तरह, एक के पास है $$ x = S^+ b = E^T \mbox{Diag} (e^+) E b $$.


 * मैट्रिक्स घातांक
 * से $$ S = E^T \mbox{Diag} (e) E $$ एक पाता है $$ \exp S = E^T \mbox{Diag} (\exp e) E $$ जहां ऍक्स्प$$e$$ वेक्टर कहां है $$ e_i $$ द्वारा प्रतिस्थापित किया जाता है $$ \exp e_i $$. उसी तरह से, $$f(S)$$ किसी भी (विश्लेषणात्मक) फ़ंक्शन के लिए स्पष्ट तरीके से गणना की जा सकती है $$f$$.


 * रैखिक विभेदक समीकरण
 * विभेदक समीकरण $$x'=Ax, x(0) =a$$ समाधान है $$x(t)=\exp(tA)$$. एक सममित मैट्रिक्स के लिए $$S$$, यह इस प्रकार है कि  $$ x(t) = E^T \mbox{Diag} (\exp t e) E a $$. अगर  $$ a = \sum_{i = 1}^n a_i E_i $$ का विस्तार है $$a$$ के eigenvectors द्वारा $$S$$, तब $$ x(t) = \sum_{i = 1}^n a_i \exp(t e_i) E_i $$.
 * होने देना $$ W^s $$ के eigenvectors द्वारा फैलाया गया सदिश समष्टि हो $$S$$ जो एक नकारात्मक eigenvalue के अनुरूप है और $$ W^u $$ सकारात्मक eigenvalues ​​​​के लिए अनुरूप। अगर  $$ a \in W^s $$ तब $$ \mbox{lim}_{t \rightarrow \infty} x(t) = 0 $$; यानी संतुलन बिंदु 0 आकर्षक है $$x(t)$$. अगर $$ a \in W^u $$ तब $$ \mbox{lim}_{t \rightarrow \infty} x(t) = \infty $$; अर्थात् 0 प्रतिकारक है  $$x(t)$$. $$ W^s $$ और $$ W^u $$ के लिए स्थिर और अस्थिर मैनिफोल्ड कहलाते हैं $$S$$. अगर $$a$$ दोनों रूपों में घटक होते हैं, तो एक घटक आकर्षित होता है और एक घटक विकर्षित होता है। इस तरह $$x(t)$$ दृष्टिकोण $$ W^u $$ जैसा $$ t \to \infty $$.

सामान्यीकरण
जैकोबी विधि को जटिल हर्मिटियन मैट्रिक्स, सामान्य गैर-सममित वास्तविक और जटिल मैट्रिक्स के साथ-साथ ब्लॉक मैट्रिक्स के लिए जैकोबी विधि में सामान्यीकृत किया गया है।

चूँकि वास्तविक मैट्रिक्स के एकवचन मान सममित मैट्रिक्स के eigenvalues ​​​​के वर्गमूल होते हैं $$ S = A^T A$$ इसका उपयोग इन मानों की गणना के लिए भी किया जा सकता है। इस मामले के लिए, विधि को इस तरह से संशोधित किया गया है कि एस की स्पष्ट रूप से गणना नहीं की जानी चाहिए, जिससे राउंड-ऑफ त्रुटियों का खतरा कम हो जाता है। ध्यान दें कि $$ J S J^T = J A^T A J^T = J A^T J^T J A J^T = B^T B $$ साथ  $$ B \, := J A J^T $$.

जैकोबी पद्धति भी समानता के लिए उपयुक्त है।

अग्रिम पठन

 * Yousef Saad: "Revisiting the (block) Jacobi subspace rotation method for the symmetric eigenvalue problem", Numerical Algorithms, vol.92 (2023), pp.917-944. https://doi.org/10.1007/s11075-022-01377-w.
 * Yousef Saad: "Revisiting the (block) Jacobi subspace rotation method for the symmetric eigenvalue problem", Numerical Algorithms, vol.92 (2023), pp.917-944. https://doi.org/10.1007/s11075-022-01377-w.
 * Yousef Saad: "Revisiting the (block) Jacobi subspace rotation method for the symmetric eigenvalue problem", Numerical Algorithms, vol.92 (2023), pp.917-944. https://doi.org/10.1007/s11075-022-01377-w.
 * Yousef Saad: "Revisiting the (block) Jacobi subspace rotation method for the symmetric eigenvalue problem", Numerical Algorithms, vol.92 (2023), pp.917-944. https://doi.org/10.1007/s11075-022-01377-w.
 * Yousef Saad: "Revisiting the (block) Jacobi subspace rotation method for the symmetric eigenvalue problem", Numerical Algorithms, vol.92 (2023), pp.917-944. https://doi.org/10.1007/s11075-022-01377-w.
 * Yousef Saad: "Revisiting the (block) Jacobi subspace rotation method for the symmetric eigenvalue problem", Numerical Algorithms, vol.92 (2023), pp.917-944. https://doi.org/10.1007/s11075-022-01377-w.
 * Yousef Saad: "Revisiting the (block) Jacobi subspace rotation method for the symmetric eigenvalue problem", Numerical Algorithms, vol.92 (2023), pp.917-944. https://doi.org/10.1007/s11075-022-01377-w.

बाहरी संबंध

 * Matlab implementation of Jacobi algorithm that avoids trigonometric functions
 * C++11 implementation