गाउस-साइडल विधि: Difference between revisions
m (Arti Shah moved page गॉस-सीडेल विधि to गाउस-साइडल विधि without leaving a redirect) |
(text) |
||
Line 1: | Line 1: | ||
{{Short description|Iterative method used to solve a linear system of equations}} | {{Short description|Iterative method used to solve a linear system of equations}} | ||
[[संख्यात्मक रैखिक बीजगणित]] में, | [[संख्यात्मक रैखिक बीजगणित]] में, '''गाउस-साइडल विधि''', जिसे लिबमैन विधि या क्रमिक विस्थापन की विधि के रूप में भी जाना जाता है, एक पुनरावृत्त विधि है जिसका उपयोग [[रैखिक समीकरणों की प्रणाली]] को हल करने के लिए किया जाता है। इसका नाम [[जर्मनी]] के [[गणितज्ञ]] [[कार्ल फ्रेडरिक गॉस]] और [[फिलिप लुडविग वॉन सीडेल]] के नाम पर रखा गया है, और यह जैकोबी पद्धति के समान है। यद्यपि इसे विकर्णों पर गैर-शून्य तत्वों वाले किसी भी आव्यूह पर लागू किया जा सकता है, अभिसरण की प्रत्याभुति केवल तभी दी जाती है जब आव्यूह या तो [[विकर्ण रूप से प्रमुख मैट्रिक्स|विकर्ण रूप से प्रमुख आव्यूह]] हो <ref>{{Cite book|last=Sauer|first=Timothy|title=संख्यात्मक विश्लेषण|edition=2nd|publisher=Pearson Education, Inc.|year=2006|isbn=978-0-321-78367-7|pages=109}}</ref> या [[सममित मैट्रिक्स|सममित आव्यूह]] और [[सकारात्मक-निश्चित मैट्रिक्स|सकारात्मक-निश्चित आव्यूह]] हो। इसका उल्लेख केवल 1823 में गॉस द्वारा अपने छात्र [[क्रिश्चियन लुडविग गेर्लिंग]] को लिखे एक निजी पत्र में किया गया था। <ref> | ||
{{harvnb|Gauss|1903|p=279}}; [http://gdz.sub.uni-goettingen.de/en/dms/loader/img/?PPN=PPN23601515X&DMDID=DMDLOG_0112&LOGID=LOG_0112&PHYSID=PHYS_0286 direct link].</ref> सीडेल द्वारा 1874 से पहले कोई प्रकाशन वितरित नहीं किया गया था।<ref>{{cite journal |last1=Seidel |first1=Ludwig |title=Über ein Verfahren, die Gleichungen, auf welche die Methode der kleinsten Quadrate führt, sowie lineäre Gleichungen überhaupt, durch successive Annäherung aufzulösen |journal=Abhandlungen der Mathematisch-Physikalischen Klasse der Königlich Bayerischen Akademie der Wissenschaften |date=1874 |volume=11 |issue=3 |pages=81–108 |url=https://www.biodiversitylibrary.org/item/110049#page/621/mode/1up |trans-title=On a process for solving by successive approximation the equations to which the method of least squares leads as well as linear equations generally |language=German}}</ref> | {{harvnb|Gauss|1903|p=279}}; [http://gdz.sub.uni-goettingen.de/en/dms/loader/img/?PPN=PPN23601515X&DMDID=DMDLOG_0112&LOGID=LOG_0112&PHYSID=PHYS_0286 direct link].</ref> सीडेल द्वारा 1874 से पहले कोई प्रकाशन वितरित नहीं किया गया था। <ref>{{cite journal |last1=Seidel |first1=Ludwig |title=Über ein Verfahren, die Gleichungen, auf welche die Methode der kleinsten Quadrate führt, sowie lineäre Gleichungen überhaupt, durch successive Annäherung aufzulösen |journal=Abhandlungen der Mathematisch-Physikalischen Klasse der Königlich Bayerischen Akademie der Wissenschaften |date=1874 |volume=11 |issue=3 |pages=81–108 |url=https://www.biodiversitylibrary.org/item/110049#page/621/mode/1up |trans-title=On a process for solving by successive approximation the equations to which the method of least squares leads as well as linear equations generally |language=German}}</ref> | ||
== विवरण == | == विवरण == | ||
मान लीजिये <math display="inline">A\mathbf x = \mathbf b</math> {{mvar|n}} रैखिक समीकरण की एक वर्ग प्रणाली हो, जहां: | |||
<math display="block">A = \begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\a_{n1} & a_{n2} & \cdots & a_{nn} \end{bmatrix}, \qquad \mathbf{x} = \begin{bmatrix} x_{1} \\ x_2 \\ \vdots \\ x_n \end{bmatrix} , \qquad \mathbf{b} = \begin{bmatrix} b_{1} \\ b_2 \\ \vdots \\ b_n \end{bmatrix}.</math> | <math display="block">A = \begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\a_{n1} & a_{n2} & \cdots & a_{nn} \end{bmatrix}, \qquad \mathbf{x} = \begin{bmatrix} x_{1} \\ x_2 \\ \vdots \\ x_n \end{bmatrix} , \qquad \mathbf{b} = \begin{bmatrix} b_{1} \\ b_2 \\ \vdots \\ b_n \end{bmatrix}.</math> | ||
जब <math>A</math> और <math>\mathbf b</math> ज्ञात हैं, और <math>\mathbf x</math> अज्ञात है, हम अनुमान लगाने के लिए गाउस-साइडल विधि <math>\mathbf x</math> का उपयोग कर सकते हैं। सदिश <math>\mathbf x^{(0)}</math> के लिए हमारे प्रारंभिक अनुमान <math>\mathbf x</math> (प्रायः <math>\mathbf x^{(0)}_i=0</math> के लिए <math>i=1,2,...,n</math>) को दर्शाता है। हम <math>\mathbf{x}^{(k)}</math> के रूप में {{mvar|k}}-वाँ सन्निकटन या पुनरावर्तन <math>\mathbf{x}</math> निरूपित करते हैं, और <math>\mathbf{x}^{(k+1)}</math> <math>\mathbf{x}</math> का अगला (या k+1) पुनरावर्तन है। | |||
=== | === आव्यूह-आधारित सूत्र === | ||
समाधान पुनरावर्ती रूप से प्राप्त किया जाता है | समाधान पुनरावर्ती रूप से प्राप्त किया जाता है | ||
<math display="block"> L_* \mathbf{x}^{(k+1)} = \mathbf{b} - U \mathbf{x}^{(k)}, </math> | <math display="block"> L_* \mathbf{x}^{(k+1)} = \mathbf{b} - U \mathbf{x}^{(k)}, </math> | ||
जहां | जहां आव्यूह <math>A</math> एक [[त्रिकोणीय मैट्रिक्स|त्रिकोणीय आव्यूह]] घटक <math>L_*</math> में विघटित हो जाता है, और एक अनुशासनपूर्वक त्रिकोणीय आव्यूह घटक <math>U</math> इस प्रकार है कि <math> A = L_* + U </math>। <ref>{{harvnb|Golub|Van Loan|1996|p=511}}.</ref> अधिक विशेष रूप से, <math>A</math> में <math>L_*</math> और <math>U</math> का अपघटन निम्न द्वारा दिया गया है: | ||
<math display="block">A = | <math display="block">A = | ||
Line 26: | Line 26: | ||
==== | ==== आव्यूह-आधारित सूत्र क्यों काम करता है ==== | ||
रैखिक समीकरणों की प्रणाली को इस प्रकार फिर से लिखा जा सकता है: | रैखिक समीकरणों की प्रणाली को इस प्रकार फिर से लिखा जा सकता है: | ||
:<math>\begin{alignat}{1} | :<math>\begin{alignat}{1} | ||
Line 34: | Line 34: | ||
L_* \mathbf{x} &= \mathbf{b} - U \mathbf{x} | L_* \mathbf{x} &= \mathbf{b} - U \mathbf{x} | ||
\end{alignat} </math> | \end{alignat} </math> | ||
दाहिनी ओर <math>\mathbf{x}</math> के लिए पिछले मान का उपयोग करके, गाउस-साइडल विधि <math>\mathbf{x}</math> के लिए अब इस अभिव्यक्ति के बाईं ओर को हल करती है। विश्लेषणात्मक रूप से, इसे इस प्रकार लिखा जा सकता है: | |||
<math display="block"> \mathbf{x}^{(k+1)} = L_*^{-1} \left(\mathbf{b} - U \mathbf{x}^{(k)}\right). </math> | <math display="block"> \mathbf{x}^{(k+1)} = L_*^{-1} \left(\mathbf{b} - U \mathbf{x}^{(k)}\right). </math> | ||
=== तत्व-आधारित सूत्र === | === तत्व-आधारित सूत्र === | ||
हालाँकि, त्रिकोणीय रूप का लाभ उठाकर <math>L_*</math>, के तत्व <math>\mathbf{x}^{(k+1)}</math> प्रत्येक पंक्ति | हालाँकि, त्रिकोणीय रूप का लाभ उठाकर <math>L_*</math>, के तत्व <math>\mathbf{x}^{(k+1)}</math> प्रत्येक पंक्ति <math>i</math> के लिए [[आगे प्रतिस्थापन|प्रगल्भ प्रतिस्थापन]] का उपयोग करके क्रमिक रूप से गणना की जा सकती है: <ref>{{harvnb|Golub|Van Loan|1996|loc=eqn (10.1.3)}}</ref> | ||
<math display="block"> x^{(k+1)}_i = \frac{1}{a_{ii}} \left(b_i - \sum_{j=1}^{i-1}a_{ij}x^{(k+1)}_j - \sum_{j=i+1}^{n}a_{ij}x^{(k)}_j \right),\quad i=1,2,\dots,n. </math> | <math display="block"> x^{(k+1)}_i = \frac{1}{a_{ii}} \left(b_i - \sum_{j=1}^{i-1}a_{ij}x^{(k+1)}_j - \sum_{j=i+1}^{n}a_{ij}x^{(k)}_j \right),\quad i=1,2,\dots,n. </math> | ||
ध्यान दें कि सूत्र प्रति | ध्यान दें कि सूत्र प्रति पुनरावर्तन दो योगों का उपयोग करता है जिन्हें एक योग के रूप <math>\sum_{j \ne i} a_{ij}x_j</math> में व्यक्त किया जा सकता है, जो कि सबसे हाल ही में गणना की गई पुनरावर्तन <math>x_j</math> का उपयोग करता है। प्रक्रिया सामान्यतः तब तक जारी रखी जाती है जब तक कि पुनरावर्तन द्वारा किए गए परिवर्तन कुछ सहनशीलता से कम न हों, जैसे कि पर्याप्त रूप से छोटा [[अवशिष्ट (संख्यात्मक विश्लेषण)]]। | ||
=== चर्चा === | === चर्चा === | ||
गाउस-साइडल विधि का तत्व-वार सूत्र जैकोबी विधि के समान है। | |||
<math>\mathbf{x}^{(k+1)}</math> की गणना <math>\mathbf{x}^{(k+1)}</math> के तत्वों का उपयोग करती है। जिसकी गणना पहले ही की जा चुकी है, और केवल <math>\mathbf{x}^{(k)}</math> के तत्व जिनकी गणना (k+1)-वें पुनरावर्तन में नहीं की गई है। इसका अर्थ यह है कि, जैकोबी पद्धति के विपरीत, केवल एक संग्रहण सदिश की आवश्यकता होती है क्योंकि तत्वों की गणना करते समय उन्हें उपरिलेखन किया जा सकता है, जो बहुत बड़ी समस्याओं के लिए लाभकारी हो सकता है। | |||
हालाँकि, जैकोबी विधि के विपरीत, प्रत्येक तत्व की गणना | हालाँकि, जैकोबी विधि के विपरीत, प्रत्येक तत्व की गणना सामान्यतः समानांतर कलन विधि में लागू करना बहुत कठिन होता है, क्योंकि उनमें [[समानांतर एल्गोरिदम|समानांतर कलन विधि]] का बहुत लंबा विश्लेषण हो सकता है, और इस प्रकार [[ विरल मैट्रिक्स |विरल आव्यूह]] के लिए सबसे अधिक संभव है। इसके अतिरिक्त, प्रत्येक पुनरावर्तन के मान मूल समीकरणों के क्रम पर निर्भर होते हैं। | ||
गॉस-सीडेल [[क्रमिक अति-विश्राम]] | गॉस-सीडेल [[क्रमिक अति-विश्राम]] <math>\omega=1</math> के समान है। | ||
==अभिसरण== | ==अभिसरण== | ||
गाउस-साइडल विधि के अभिसरण गुण आव्यूह {{mvar|A}} पर निर्भर हैं। अर्थात्, प्रक्रिया को अभिसरण के लिए जाना जाता है यदि या तो: | |||
* {{mvar|A}} सममित सकारात्मक-निश्चित | * {{mvar|A}} सममित सकारात्मक-निश्चित आव्यूह है <ref>{{harvnb|Golub|Van Loan|1996|loc=Thm 10.1.2}}.</ref> अथवा | ||
* {{mvar|A}} | * {{mvar|A}} अनुशासनपूर्वक से या अपरिवर्तनीय रूप से विकर्ण रूप से प्रभावशाली आव्यूह है। <ref>{{cite journal |last= Bagnara|first= Roberto | date= March 1995 | title= जैकोबी और गॉस-सीडेल विधियों के अभिसरण के लिए एक एकीकृत प्रमाण| journal= SIAM Review | volume= 37|issue= 1|pages= 93–97 | doi= 10.1137/1037008 |jstor= 2132758}}</ref> | ||
गाउस-साइडल विधि कभी-कभी इन स्तिथियों के संतुष्ट न होने पर भी अभिसरण करती है। | |||
गोलूब और वैन लोन एक | गोलूब और वैन लोन एक कलन विधि के लिए एक प्रमेय देते हैं जो <math>A</math> को दो भागों में विभाजित करता है। मान लीजिये <math>A = M - N</math> निरर्थक है। मान लीजिये <math>M^{-1}N</math> <math>r = \rho(M^{-1}N)</math> की [[वर्णक्रमीय त्रिज्या]] है। फिर <math>x^{(k)}</math> पुनरावर्तन <math>Mx^{(k+1)} = Nx^{(k)} + b</math> द्वारा परिभाषित <math>x = A^{-1}b</math> में किसी भी आरंभिक सदिश <math>x^{(0)}</math> के लिए अभिसरित होता है अगर <math>M</math> निरर्थक है और <math>r < 1</math> है। <ref>{{harvnb|Golub|Van Loan|1996|loc=Thm 10.1.2}}</ref> | ||
== | == कलन विधि == | ||
चूँकि इस | चूँकि इस कलन विधि में तत्वों की गणना करते समय उन्हें उपरिलेखन किया जा सकता है, केवल एक संग्रह सदिश की आवश्यकता होती है, और सदिश अनुक्रमणीकरण को छोड़ दिया जाता है। कलन विधि इस प्रकार है: | ||
'''algorithm''' Gauss–Seidel method '''is''' | |||
'''inputs:''' <var>A</var>, <var>b</var> | |||
'''output:''' ''φ'' | |||
Choose an initial guess ''φ'' to the solution | |||
'''repeat''' until convergence | |||
'''for''' <var>i</var> '''from''' 1 '''until''' <var>n</var> '''do''' | |||
''σ'' ← 0 | |||
'''for''' <var>j</var> '''from''' 1 '''until''' <var>n</var> '''do''' | |||
'''if''' <var>j</var> ≠ <var>i</var> '''then''' | |||
''σ'' ← ''σ'' + ''a<sub>ij</sub>φ<sub>j</sub>'' | |||
'''end if''' | |||
'''end''' (<var>j</var>-loop) | |||
''φ<sub>i</sub>'' ← (''b<sub>i</sub>'' − ''σ'') / ''a<sub>ii</sub>'' | |||
'''end''' (<var>i</var>-loop) | |||
check if convergence is reached | |||
'''end''' (repeat) | |||
==उदाहरण== | ==उदाहरण== | ||
=== | ===आव्यूह संस्करण के लिए एक उदाहरण=== | ||
एक रैखिक प्रणाली के रूप में दिखाया गया | एक रैखिक प्रणाली के रूप में दिखाया गया <math>A \mathbf{x} = \mathbf{b}</math> निम्न द्वारा दिया गया है: | ||
<math display="block"> A= | <math display="block"> A= | ||
\begin{bmatrix} | \begin{bmatrix} | ||
Line 104: | Line 103: | ||
प्रपत्र में | प्रपत्र में | ||
<math display="block"> \mathbf{x}^{(k+1)} = T \mathbf{x}^{(k)} + C </math> | <math display="block"> \mathbf{x}^{(k+1)} = T \mathbf{x}^{(k)} + C </math> | ||
जहाँ: | |||
:<math>T = - L_*^{-1} U \quad \text{and} \quad C = L_*^{-1} \mathbf{b}.</math> | :<math>T = - L_*^{-1} U \quad \text{and} \quad C = L_*^{-1} \mathbf{b}.</math> | ||
हमें | हमें <math>A</math> को निचले त्रिकोणीय घटक <math>L_*</math> और यथार्थ ऊपरी त्रिकोणीय घटक <math>U</math> के योग में विघटित करना होगा: : | ||
<math display="block"> L_*= | <math display="block"> L_*= | ||
\begin{bmatrix} | \begin{bmatrix} | ||
Line 118: | Line 117: | ||
0 & 0 | 0 & 0 | ||
\end{bmatrix}.</math> | \end{bmatrix}.</math> | ||
<math>L_*</math> का उलटा निम्न है: | |||
<math display="block"> L_*^{-1} = | <math display="block"> L_*^{-1} = | ||
\begin{bmatrix} | \begin{bmatrix} | ||
Line 162: | Line 161: | ||
\end{bmatrix}. | \end{bmatrix}. | ||
\end{align}</math> | \end{align}</math> | ||
अब हमारे पास | अब हमारे पास <math>T</math> और <math>C</math> है और हम उनका उपयोग पुनरावर्ती रूप से सदिश <math>\mathbf{x}</math> प्राप्त करने के लिए कर सकते हैं। | ||
सबसे पहले हमें चुनना होगा <math>\mathbf{x}^{(0)}</math>: हम केवल अनुमान लगा सकते हैं. अनुमान जितना बेहतर होगा, | सबसे पहले हमें चुनना होगा <math>\mathbf{x}^{(0)}</math>: हम केवल अनुमान लगा सकते हैं. अनुमान जितना बेहतर होगा, कलन विधि उतनी ही तीव्रता से काम करेगी। | ||
हम एक प्रारंभिक बिंदु चुनते हैं: | हम एक प्रारंभिक बिंदु चुनते हैं: | ||
Line 310: | Line 309: | ||
\end{bmatrix}. | \end{bmatrix}. | ||
\end{align}</math> | \end{align}</math> | ||
जैसा कि अपेक्षित था, | जैसा कि अपेक्षित था, कलन विधि सटीक समाधान में परिवर्तित होता है: | ||
<math display="block"> \mathbf{x} = A^{-1} \mathbf{b} \approx \begin{bmatrix} 0.8122\\ -0.6650 \end{bmatrix}. </math> | <math display="block"> \mathbf{x} = A^{-1} \mathbf{b} \approx \begin{bmatrix} 0.8122\\ -0.6650 \end{bmatrix}. </math> | ||
वास्तव में, | वास्तव में, आव्यूह {{mvar|A}} अनुशासनपूर्वक से विकर्ण रूप से प्रभावशाली है (लेकिन सकारात्मक निश्चित नहीं)। | ||
=== | ===आव्यूह संस्करण के लिए एक और उदाहरण=== | ||
एक अन्य रैखिक प्रणाली के रूप में दिखाया गया | एक अन्य रैखिक प्रणाली के रूप में दिखाया गया <math>A \mathbf{x} = \mathbf{b}</math> निम्न रूप में दिया गया है: | ||
<math display="block"> A= | <math display="block"> A= | ||
Line 334: | Line 333: | ||
प्रपत्र में | प्रपत्र में | ||
<math display="block"> \mathbf{x}^{(k+1)} = T \mathbf{x}^{(k)} + C </math> | <math display="block"> \mathbf{x}^{(k+1)} = T \mathbf{x}^{(k)} + C </math> | ||
जहाँ: | |||
:<math>T = - L_*^{-1} U \quad \text{and} \quad C = L_*^{-1} \mathbf{b}.</math> | :<math>T = - L_*^{-1} U \quad \text{and} \quad C = L_*^{-1} \mathbf{b}.</math> | ||
हमें | हमें <math>A</math> को निचले त्रिकोणीय घटक <math>L_*</math> और यथार्थ ऊपरी त्रिकोणीय घटक <math>U</math> के योग में विघटित करना होगा: | ||
<math display="block"> L_*= | <math display="block"> L_*= | ||
\begin{bmatrix} | \begin{bmatrix} | ||
Line 348: | Line 347: | ||
0 & 0 \\ | 0 & 0 \\ | ||
\end{bmatrix}.</math> | \end{bmatrix}.</math> | ||
<math>L_*</math> का उलटा निम्न है: | |||
<math display="block"> L_*^{-1} = | <math display="block"> L_*^{-1} = | ||
\begin{bmatrix} | \begin{bmatrix} | ||
Line 392: | Line 391: | ||
\end{bmatrix}. | \end{bmatrix}. | ||
\end{align}</math> | \end{align}</math> | ||
अब हमारे पास | अब हमारे पास <math>T</math> और <math>C</math> है और हम उनका उपयोग पुनरावर्ती रूप से सदिश <math>\mathbf{x}</math> प्राप्त करने के लिए कर सकते हैं। | ||
सबसे पहले हमें | सबसे पहले हमें <math>\mathbf{x}^{(0)}</math>चुनना होगा : हम केवल अनुमान लगा सकते हैं। अनुमान जितना बेहतर होगा, कलन विधि उतनी ही तीव्रता से निष्पादित होगी। | ||
हम कल्पना करते हैं: | हम कल्पना करते हैं: | ||
Line 442: | Line 441: | ||
x^{(3)} &= \cdots. | x^{(3)} &= \cdots. | ||
\end{align}</math> | \end{align}</math> | ||
यदि हम अभिसरण के लिए परीक्षण करते हैं तो हम पाएंगे कि | यदि हम अभिसरण के लिए परीक्षण करते हैं तो हम पाएंगे कि कलन विधि अलग हो जाती है। वास्तव में, आव्यूह A न तो विकर्ण रूप से प्रभावशाली है और न ही सकारात्मक निश्चित है। | ||
फिर, सटीक समाधान के लिए अभिसरण | फिर, सटीक समाधान के लिए अभिसरण | ||
<math display="block"> \mathbf{x} = A^{-1} \mathbf{b} = \begin{bmatrix} -38\\ 29 \end{bmatrix} </math> | <math display="block"> \mathbf{x} = A^{-1} \mathbf{b} = \begin{bmatrix} -38\\ 29 \end{bmatrix} </math> | ||
इसकी | इसकी प्रत्याभुति नहीं है और, इस स्तिथि में, घटित नहीं होगा। | ||
===समीकरण संस्करण के लिए एक उदाहरण=== | ===समीकरण संस्करण के लिए एक उदाहरण=== | ||
मान लीजिए | मान लीजिए {{mvar|k}} समीकरण दिया गया है जहां x<sub>''n''</sub> इन समीकरणों के सदिश और प्रारंभिक बिंदु x<sub>0</sub> हैं। | ||
पहले समीकरण से x | |||
पहले समीकरण से x<sub>1</sub> के लिए <math>x_{n+1}, x_{n+2}, \dots, x_n.</math> के पदों में हल करें। अगले समीकरण के लिए xs के पिछले मानों को प्रतिस्थापित करें। | |||
इसे स्पष्ट करने के लिए एक उदाहरण पर विचार करें। | इसे स्पष्ट करने के लिए एक उदाहरण पर विचार करें। | ||
Line 459: | Line 460: | ||
& 3x_2 &- x_3 &+ 8x_4 & = 15. | & 3x_2 &- x_3 &+ 8x_4 & = 15. | ||
\end{array}</math> | \end{array}</math> | ||
<math>x_1, x_2, x_3</math>और <math>x_4</math> को हल करने पर निम्न प्राप्त होता है:: | |||
<math display="block">\begin{align} | <math display="block">\begin{align} | ||
x_1 & = x_2/10 - x_3/5 + 3/5, \\ | x_1 & = x_2/10 - x_3/5 + 3/5, \\ | ||
Line 466: | Line 467: | ||
x_4 & = -3x_2/8 + x_3/8 + 15/8. | x_4 & = -3x_2/8 + x_3/8 + 15/8. | ||
\end{align}</math> | \end{align}</math> | ||
मान लीजिए हम | मान लीजिए हम {{math|(0, 0, 0, 0)}} प्रारंभिक सन्निकटन के रूप में चुनते हैं, फिर पहला सन्निकटन समाधान दिया जाता है | ||
<math display="block">\begin{align} | <math display="block">\begin{align} | ||
x_1 & = 3/5 = 0.6, \\ | x_1 & = 3/5 = 0.6, \\ | ||
Line 473: | Line 474: | ||
x_4 & = -3(2.3272)/8 +(-0.9873)/8+15/8 = 0.8789. | x_4 & = -3(2.3272)/8 +(-0.9873)/8+15/8 = 0.8789. | ||
\end{align}</math> | \end{align}</math> | ||
प्राप्त अनुमानों का उपयोग करते हुए, वांछित सटीकता तक पहुंचने तक | प्राप्त अनुमानों का उपयोग करते हुए, वांछित सटीकता तक पहुंचने तक पुनरावर्तन प्रक्रिया दोहराई जाती है। चार पुनरावृत्तियों के बाद अनुमानित समाधान निम्नलिखित हैं। | ||
{| class="wikitable" | {| class="wikitable" | ||
! <math>x_1</math> !! <math>x_2</math> !! <math>x_3</math> !! <math>x_4</math> | ! <math>x_1</math> !! <math>x_2</math> !! <math>x_3</math> !! <math>x_4</math> | ||
Line 485: | Line 486: | ||
| 1.00086 || 2.0003 || −1.00031 || 0.99985 | | 1.00086 || 2.0003 || −1.00031 || 0.99985 | ||
|} | |} | ||
प्रणाली का सटीक समाधान {{math|(1, 2, −1, 1)}} है। | |||
===पायथन और | === पायथन और नम्पि का उपयोग करने वाला एक उदाहरण === | ||
निम्नलिखित संख्यात्मक प्रक्रिया केवल समाधान | निम्नलिखित संख्यात्मक प्रक्रिया केवल समाधान सदिश उत्पन्न करने के लिए पुनरावृत्त होती है। | ||
<syntaxhighlight lang="numpy"> | <syntaxhighlight lang="numpy"> | ||
Line 550: | Line 551: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== मैटलैब का उपयोग करके समीकरणों की स्वेच्छाचारी संख्या को हल करने का कार्यक्रम === | |||
=== | |||
निम्नलिखित कोड सूत्र का उपयोग करता है | निम्नलिखित कोड सूत्र का उपयोग करता है | ||
<math display="block">x^{(k+1)}_i = \frac{1}{a_{ii}} \left(b_i - \sum_{j<i}a_{ij}x^{(k+1)}_j - \sum_{j>i}a_{ij}x^{(k)}_j \right),\quad \begin{array}{l} i=1,2,\ldots,n \\ k=0,1,2,\ldots \end{array}</math> | <math display="block">x^{(k+1)}_i = \frac{1}{a_{ii}} \left(b_i - \sum_{j<i}a_{ij}x^{(k+1)}_j - \sum_{j>i}a_{ij}x^{(k)}_j \right),\quad \begin{array}{l} i=1,2,\ldots,n \\ k=0,1,2,\ldots \end{array}</math> | ||
Line 567: | Line 567: | ||
==यह भी देखें== | ==यह भी देखें== | ||
*संयुग्मित ढाल विधि | *संयुग्मित ढाल विधि | ||
*विश्वास प्रचार | *विश्वास प्रचार गाऊसी विश्वास प्रचार .28GaBP.29 | ||
*पुनरावृत्तीय विधि | *पुनरावृत्तीय विधि पुनरावृत्तीय विधि: रेखीय प्रणालियाँ | ||
*काक्ज़मर्ज़ विधि (एक पंक्ति-उन्मुख विधि, जबकि गॉस-सीडेल स्तंभ-उन्मुख है। उदाहरण के लिए, देखें, [https://arxiv.org/abs/1507.05844 यह पेपर]।) | *काक्ज़मर्ज़ विधि (एक पंक्ति-उन्मुख विधि, जबकि गॉस-सीडेल स्तंभ-उन्मुख है। उदाहरण के लिए, देखें, [https://arxiv.org/abs/1507.05844 यह पेपर]।) | ||
*[[मैट्रिक्स विभाजन]] | *[[मैट्रिक्स विभाजन|आव्यूह विभाजन]] | ||
*[[रिचर्डसन पुनरावृत्ति]] | *[[रिचर्डसन पुनरावृत्ति|रिचर्डसन पुनरावर्तन]] | ||
==टिप्पणियाँ== | ==टिप्पणियाँ== | ||
Line 593: | Line 593: | ||
*[https://web.archive.org/web/20090812100731/http://matlabdb.mathematik.uni-stuttgart.de/gauss_seidel.m?MP_ID=406 Matlab code] | *[https://web.archive.org/web/20090812100731/http://matlabdb.mathematik.uni-stuttgart.de/gauss_seidel.m?MP_ID=406 Matlab code] | ||
*[http://adrianboeing.blogspot.com/2010/02/solving-linear-systems.html C code example] | *[http://adrianboeing.blogspot.com/2010/02/solving-linear-systems.html C code example] | ||
{{Authority control}} | {{Authority control}} | ||
Revision as of 11:55, 7 December 2023
संख्यात्मक रैखिक बीजगणित में, गाउस-साइडल विधि, जिसे लिबमैन विधि या क्रमिक विस्थापन की विधि के रूप में भी जाना जाता है, एक पुनरावृत्त विधि है जिसका उपयोग रैखिक समीकरणों की प्रणाली को हल करने के लिए किया जाता है। इसका नाम जर्मनी के गणितज्ञ कार्ल फ्रेडरिक गॉस और फिलिप लुडविग वॉन सीडेल के नाम पर रखा गया है, और यह जैकोबी पद्धति के समान है। यद्यपि इसे विकर्णों पर गैर-शून्य तत्वों वाले किसी भी आव्यूह पर लागू किया जा सकता है, अभिसरण की प्रत्याभुति केवल तभी दी जाती है जब आव्यूह या तो विकर्ण रूप से प्रमुख आव्यूह हो [1] या सममित आव्यूह और सकारात्मक-निश्चित आव्यूह हो। इसका उल्लेख केवल 1823 में गॉस द्वारा अपने छात्र क्रिश्चियन लुडविग गेर्लिंग को लिखे एक निजी पत्र में किया गया था। [2] सीडेल द्वारा 1874 से पहले कोई प्रकाशन वितरित नहीं किया गया था। [3]
विवरण
मान लीजिये n रैखिक समीकरण की एक वर्ग प्रणाली हो, जहां:
आव्यूह-आधारित सूत्र
समाधान पुनरावर्ती रूप से प्राप्त किया जाता है
आव्यूह-आधारित सूत्र क्यों काम करता है
रैखिक समीकरणों की प्रणाली को इस प्रकार फिर से लिखा जा सकता है:
दाहिनी ओर के लिए पिछले मान का उपयोग करके, गाउस-साइडल विधि के लिए अब इस अभिव्यक्ति के बाईं ओर को हल करती है। विश्लेषणात्मक रूप से, इसे इस प्रकार लिखा जा सकता है:
तत्व-आधारित सूत्र
हालाँकि, त्रिकोणीय रूप का लाभ उठाकर , के तत्व प्रत्येक पंक्ति के लिए प्रगल्भ प्रतिस्थापन का उपयोग करके क्रमिक रूप से गणना की जा सकती है: [5]
चर्चा
गाउस-साइडल विधि का तत्व-वार सूत्र जैकोबी विधि के समान है।
की गणना के तत्वों का उपयोग करती है। जिसकी गणना पहले ही की जा चुकी है, और केवल के तत्व जिनकी गणना (k+1)-वें पुनरावर्तन में नहीं की गई है। इसका अर्थ यह है कि, जैकोबी पद्धति के विपरीत, केवल एक संग्रहण सदिश की आवश्यकता होती है क्योंकि तत्वों की गणना करते समय उन्हें उपरिलेखन किया जा सकता है, जो बहुत बड़ी समस्याओं के लिए लाभकारी हो सकता है।
हालाँकि, जैकोबी विधि के विपरीत, प्रत्येक तत्व की गणना सामान्यतः समानांतर कलन विधि में लागू करना बहुत कठिन होता है, क्योंकि उनमें समानांतर कलन विधि का बहुत लंबा विश्लेषण हो सकता है, और इस प्रकार विरल आव्यूह के लिए सबसे अधिक संभव है। इसके अतिरिक्त, प्रत्येक पुनरावर्तन के मान मूल समीकरणों के क्रम पर निर्भर होते हैं।
गॉस-सीडेल क्रमिक अति-विश्राम के समान है।
अभिसरण
गाउस-साइडल विधि के अभिसरण गुण आव्यूह A पर निर्भर हैं। अर्थात्, प्रक्रिया को अभिसरण के लिए जाना जाता है यदि या तो:
- A सममित सकारात्मक-निश्चित आव्यूह है [6] अथवा
- A अनुशासनपूर्वक से या अपरिवर्तनीय रूप से विकर्ण रूप से प्रभावशाली आव्यूह है। [7]
गाउस-साइडल विधि कभी-कभी इन स्तिथियों के संतुष्ट न होने पर भी अभिसरण करती है।
गोलूब और वैन लोन एक कलन विधि के लिए एक प्रमेय देते हैं जो को दो भागों में विभाजित करता है। मान लीजिये निरर्थक है। मान लीजिये की वर्णक्रमीय त्रिज्या है। फिर पुनरावर्तन द्वारा परिभाषित में किसी भी आरंभिक सदिश के लिए अभिसरित होता है अगर निरर्थक है और है। [8]
कलन विधि
चूँकि इस कलन विधि में तत्वों की गणना करते समय उन्हें उपरिलेखन किया जा सकता है, केवल एक संग्रह सदिश की आवश्यकता होती है, और सदिश अनुक्रमणीकरण को छोड़ दिया जाता है। कलन विधि इस प्रकार है:
algorithm Gauss–Seidel method is inputs: A, b output: φ Choose an initial guess φ to the solution repeat until convergence for i from 1 until n do σ ← 0 for j from 1 until n do if j ≠ i then σ ← σ + aijφj end if end (j-loop) φi ← (bi − σ) / aii end (i-loop) check if convergence is reached end (repeat)
उदाहरण
आव्यूह संस्करण के लिए एक उदाहरण
एक रैखिक प्रणाली के रूप में दिखाया गया निम्न द्वारा दिया गया है:
हमें को निचले त्रिकोणीय घटक और यथार्थ ऊपरी त्रिकोणीय घटक के योग में विघटित करना होगा: :
सबसे पहले हमें चुनना होगा : हम केवल अनुमान लगा सकते हैं. अनुमान जितना बेहतर होगा, कलन विधि उतनी ही तीव्रता से काम करेगी।
हम एक प्रारंभिक बिंदु चुनते हैं:
आव्यूह संस्करण के लिए एक और उदाहरण
एक अन्य रैखिक प्रणाली के रूप में दिखाया गया निम्न रूप में दिया गया है:
हमें को निचले त्रिकोणीय घटक और यथार्थ ऊपरी त्रिकोणीय घटक के योग में विघटित करना होगा:
सबसे पहले हमें चुनना होगा : हम केवल अनुमान लगा सकते हैं। अनुमान जितना बेहतर होगा, कलन विधि उतनी ही तीव्रता से निष्पादित होगी।
हम कल्पना करते हैं:
फिर, सटीक समाधान के लिए अभिसरण
समीकरण संस्करण के लिए एक उदाहरण
मान लीजिए k समीकरण दिया गया है जहां xn इन समीकरणों के सदिश और प्रारंभिक बिंदु x0 हैं।
पहले समीकरण से x1 के लिए के पदों में हल करें। अगले समीकरण के लिए xs के पिछले मानों को प्रतिस्थापित करें।
इसे स्पष्ट करने के लिए एक उदाहरण पर विचार करें।
0.6 | 2.32727 | −0.987273 | 0.878864 |
1.03018 | 2.03694 | −1.01446 | 0.984341 |
1.00659 | 2.00356 | −1.00253 | 0.998351 |
1.00086 | 2.0003 | −1.00031 | 0.99985 |
प्रणाली का सटीक समाधान (1, 2, −1, 1) है।
पायथन और नम्पि का उपयोग करने वाला एक उदाहरण
निम्नलिखित संख्यात्मक प्रक्रिया केवल समाधान सदिश उत्पन्न करने के लिए पुनरावृत्त होती है।
import numpy as np
ITERATION_LIMIT = 1000
# initialize the matrix
A = np.array(
[
[10.0, -1.0, 2.0, 0.0],
[-1.0, 11.0, -1.0, 3.0],
[2.0, -1.0, 10.0, -1.0],
[0.0, 3.0, -1.0, 8.0],
]
)
# initialize the RHS vector
b = np.array([6.0, 25.0, -11.0, 15.0])
print("System of equations:")
for i in range(A.shape[0]):
row = [f"{A[i,j]:3g}*x{j+1}" for j in range(A.shape[1])]
print("[{0}] = [{1:3g}]".format(" + ".join(row), b[i]))
x = np.zeros_like(b, np.float_)
for it_count in range(1, ITERATION_LIMIT):
x_new = np.zeros_like(x, dtype=np.float_)
print(f"Iteration {it_count}: {x}")
for i in range(A.shape[0]):
s1 = np.dot(A[i, :i], x_new[:i])
s2 = np.dot(A[i, i + 1 :], x[i + 1 :])
x_new[i] = (b[i] - s1 - s2) / A[i, i]
if np.allclose(x, x_new, rtol=1e-8):
break
x = x_new
print(f"Solution: {x}")
error = np.dot(A, x) - b
print(f"Error: {error}")
आउटपुट उत्पन्न करता है:
System of equations:
[ 10*x1 + -1*x2 + 2*x3 + 0*x4] = [ 6]
[ -1*x1 + 11*x2 + -1*x3 + 3*x4] = [ 25]
[ 2*x1 + -1*x2 + 10*x3 + -1*x4] = [-11]
[ 0*x1 + 3*x2 + -1*x3 + 8*x4] = [ 15]
Iteration 1: [ 0. 0. 0. 0.]
Iteration 2: [ 0.6 2.32727273 -0.98727273 0.87886364]
Iteration 3: [ 1.03018182 2.03693802 -1.0144562 0.98434122]
Iteration 4: [ 1.00658504 2.00355502 -1.00252738 0.99835095]
Iteration 5: [ 1.00086098 2.00029825 -1.00030728 0.99984975]
Iteration 6: [ 1.00009128 2.00002134 -1.00003115 0.9999881 ]
Iteration 7: [ 1.00000836 2.00000117 -1.00000275 0.99999922]
Iteration 8: [ 1.00000067 2.00000002 -1.00000021 0.99999996]
Iteration 9: [ 1.00000004 1.99999999 -1.00000001 1. ]
Iteration 10: [ 1. 2. -1. 1.]
Solution: [ 1. 2. -1. 1.]
Error: [ 2.06480930e-08 -1.25551054e-08 3.61417563e-11 0.00000000e+00]
मैटलैब का उपयोग करके समीकरणों की स्वेच्छाचारी संख्या को हल करने का कार्यक्रम
निम्नलिखित कोड सूत्र का उपयोग करता है
function x = gauss_seidel(A, b, x, iters)
for i = 1:iters
for j = 1:size(A,1)
x(j) = (b(j) - sum(A(j,:)'.*x) + A(j,j)*x(j)) / A(j,j);
end
end
end
यह भी देखें
- संयुग्मित ढाल विधि
- विश्वास प्रचार गाऊसी विश्वास प्रचार .28GaBP.29
- पुनरावृत्तीय विधि पुनरावृत्तीय विधि: रेखीय प्रणालियाँ
- काक्ज़मर्ज़ विधि (एक पंक्ति-उन्मुख विधि, जबकि गॉस-सीडेल स्तंभ-उन्मुख है। उदाहरण के लिए, देखें, यह पेपर।)
- आव्यूह विभाजन
- रिचर्डसन पुनरावर्तन
टिप्पणियाँ
- ↑ Sauer, Timothy (2006). संख्यात्मक विश्लेषण (2nd ed.). Pearson Education, Inc. p. 109. ISBN 978-0-321-78367-7.
- ↑ Gauss 1903, p. 279; direct link.
- ↑ Seidel, Ludwig (1874). "Über ein Verfahren, die Gleichungen, auf welche die Methode der kleinsten Quadrate führt, sowie lineäre Gleichungen überhaupt, durch successive Annäherung aufzulösen" [On a process for solving by successive approximation the equations to which the method of least squares leads as well as linear equations generally]. Abhandlungen der Mathematisch-Physikalischen Klasse der Königlich Bayerischen Akademie der Wissenschaften (in German). 11 (3): 81–108.
{{cite journal}}
: CS1 maint: unrecognized language (link) - ↑ Golub & Van Loan 1996, p. 511.
- ↑ Golub & Van Loan 1996, eqn (10.1.3)
- ↑ Golub & Van Loan 1996, Thm 10.1.2.
- ↑ Bagnara, Roberto (March 1995). "जैकोबी और गॉस-सीडेल विधियों के अभिसरण के लिए एक एकीकृत प्रमाण". SIAM Review. 37 (1): 93–97. doi:10.1137/1037008. JSTOR 2132758.
- ↑ Golub & Van Loan 1996, Thm 10.1.2
संदर्भ
- Gauss, Carl Friedrich (1903), Werke (in Deutsch), vol. 9, Göttingen: Köninglichen Gesellschaft der Wissenschaften.
- Golub, Gene H.; Van Loan, Charles F. (1996), Matrix Computations (3rd ed.), Baltimore: Johns Hopkins, ISBN 978-0-8018-5414-9.
- Black, Noel & Moore, Shirley. "Gauss-Seidel Method". MathWorld.
This article incorporates text from the article Gauss-Seidel_method on CFD-Wiki that is under the GFDL license.
बाहरी संबंध
- "Seidel method", Encyclopedia of Mathematics, EMS Press, 2001 [1994]
- Gauss–Seidel from www.math-linux.com
- Gauss–Seidel From Holistic Numerical Methods Institute
- Gauss Siedel Iteration from www.geocities.com
- The Gauss-Seidel Method
- Bickson
- Matlab code
- C code example