जैकोबी विधि: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 38: Line 38:


== अभिसरण ==
== अभिसरण ==
मानक अभिसरण स्थिति (किसी पुनरावृत्त विधि के लिए) तब होती है जब पुनरावृत्ति मैट्रिक्स का [[वर्णक्रमीय त्रिज्या]] 1 से कम होता है:
मानक अभिसरण स्थिति (किसी पुनरावृत्त विधि के लिए) तब होती है जब पुनरावृत्ति आव्यूह का [[वर्णक्रमीय त्रिज्या]] 1 से कम होता है:


:<math>\rho(D^{-1}(L+U)) < 1. </math>
:<math>\rho(D^{-1}(L+U)) < 1. </math>
अभिसरण की विधि के लिए एक पर्याप्त (लेकिन आवश्यक नहीं) शर्त यह है कि मैट्रिक्स ए सख्ती से या अनियमित रूप से तिरछे प्रभावशाली मैट्रिक्स है। सख्त पंक्ति विकर्ण प्रभुत्व का अर्थ है कि प्रत्येक पंक्ति के लिए, विकर्ण पद का निरपेक्ष मान अन्य पदों के निरपेक्ष मानों के योग से अधिक है:
अभिसरण की विधि के लिए एक पर्याप्त (लेकिन आवश्यक नहीं) शर्त यह है कि मैट्रिक्स A अलघुकरणीय रूप से विकर्ण प्रमुख है। यथार्थ पंक्ति विकर्ण प्रमुख का अर्थ है कि प्रत्येक पंक्ति के लिए विकर्ण पद का निरपेक्ष मान अन्य पदों के निरपेक्ष मानों के योग से अधिक है:


:<math>\left | a_{ii} \right | > \sum_{j \ne i} {\left | a_{ij} \right |}. </math>
:<math>\left | a_{ii} \right | > \sum_{j \ne i} {\left | a_{ij} \right |}. </math>
जैकोबी पद्धति कभी-कभी अभिसरण करती है, भले ही ये शर्तें संतुष्ट न हों।
जैकोबी पद्धति कभी-कभी अभिसरण करती है, भले ही ये शर्तें संतुष्ट न हों।


ध्यान दें कि जैकोबी विधि प्रत्येक सममित [[सकारात्मक-निश्चित मैट्रिक्स]] के लिए अभिसरण नहीं करती है। उदाहरण के लिए,
ध्यान दें कि जैकोबी विधि प्रत्येक सममित [[सकारात्मक-निश्चित मैट्रिक्स|सकारात्मक-निश्चित आव्यूह]] के लिए अभिसरण नहीं करती है। उदाहरण के लिए,
<math display="block">
<math display="block">
A =
A =
Line 69: Line 69:


=== उदाहरण 1 ===
=== उदाहरण 1 ===
फॉर्म की एक रैखिक प्रणाली <math>Ax=b</math> प्रारंभिक अनुमान के साथ <math>x^{(0)}</math> द्वारा दिया गया है
एक रैखिक प्रणाली <math>Ax=b</math> प्रारंभिक अनुमान के साथ <math>x^{(0)}</math> द्वारा दिया गया है


:<math> A=
:<math> A=
Line 86: Line 86:
           1 \\
           1 \\
         \end{bmatrix} .</math>
         \end{bmatrix} .</math>
हम समीकरण का उपयोग करते हैं <math> x^{(k+1)}=D^{-1}(b - (L+U)x^{(k)})</math>, ऊपर वर्णित, अनुमान लगाने के लिए <math>x</math>. सबसे पहले, हम समीकरण को अधिक सुविधाजनक रूप में फिर से लिखते हैं <math>D^{-1}(b - (L+U)x^{(k)}) = Tx^{(k)} + C</math>, कहाँ <math>T=-D^{-1}(L+U)</math> और <math>C = D^{-1}b</math>. ज्ञात मूल्यों से
<math>x</math> का अनुमान लगाने के लिए हम ऊपर वर्णित समीकरण <math> x^{(k+1)}=D^{-1}(b - (L+U)x^{(k)})</math> का उपयोग करते हैं | सबसे पहले हम हम ज्ञात मानों से <math>T=-D^{-1}(L+U)</math>और <math>C = D^{-1}b</math> समीकरण को अधिक सुविधाजनक रूप में फिर से समीकरण को <math>D^{-1}(b - (L+U)x^{(k)}) = Tx^{(k)} + C</math> लिखते हैं |
<math display=block> D^{-1}=
<math display=block> D^{-1}=
       \begin{bmatrix}
       \begin{bmatrix}
Line 163: Line 163:
           1.143 \\
           1.143 \\
         \end{bmatrix} .</math>
         \end{bmatrix} .</math>
अगला पुनरावृत्ति उपज देता है
अगला पुनरावृत्ति निम्न है
<math display=block> x^{(2)}=  
<math display=block> x^{(2)}=  
       \begin{bmatrix}
       \begin{bmatrix}
Line 254: Line 254:
व्यवस्था का सटीक समाधान है {{math|(1,&nbsp;2,&nbsp;&minus;1,&nbsp;1)}}.
व्यवस्था का सटीक समाधान है {{math|(1,&nbsp;2,&nbsp;&minus;1,&nbsp;1)}}.


=== पायथन उदाहरण ===
=== पायथन उदहारण ===
import numpy as np
import numpy as np ITERATION_LIMIT = 1000
<blockquote>
#initialize the matrix
  ITERATION_LIMIT = 1000
A = np.array([[10., -1., 2., 0.],
</blockquote>
initialize the matrix
<blockquote>
A = np.array([[10., -1., 2., 0.],
</blockquote>
               [-1., 11., -1., 3.],
               [-1., 11., -1., 3.],
               [2., -1., 10., -1.],
               [2., -1., 10., -1.],
               [0.0, 3., -1., 8.]])
               [0.0, 3., -1., 8.]])
 
#initialize the RHS vector
initialize the RHS vector
b = np.array([6., 25., -11., 15.])
<blockquote>
#prints the system
b = np.array([6., 25., -11., 15.])
print("System:") for i in range(A.shape[0]):
</blockquote>
prints the system
<blockquote>
print("System:") for i in range(A.shape[0]):
</blockquote>
     row = [f"{A[i, j]}*x{j + 1}" for j in range(A.shape[1])]
     row = [f"{A[i, j]}*x{j + 1}" for j in range(A.shape[1])]
     print(f'{" + ".join(row)} = {b[i]}')
     print(f'{" + ".join(row)} = {b[i]}')
<blockquote>
print()
print() x = np.zeros_like(b) for it_count in range(ITERATION_LIMIT):
 
</blockquote>
x = np.zeros_like(b) for it_count in range(ITERATION_LIMIT):
     if it_count != 0:
     if it_count != 0:
         print(f"Iteration {it_count}: {x}")
         print(f"Iteration {it_count}: {x}")
     x_new = np.zeros_like(x)
     x_new = np.zeros_like(x)
     for i in range(A.shape[0]):
     for i in range(A.shape[0]):
         s1 = np.dot(A[i, :i], x[:i])
         s1 = np.dot(A[i, :i], x[:i])
Line 289: Line 280:
         if x_new[i] == x_new[i-1]:
         if x_new[i] == x_new[i-1]:
           break
           break
     if np.allclose(x, x_new, atol=1e-10, rtol=0.):
     if np.allclose(x, x_new, atol=1e-10, rtol=0.):
         break
         break
     x = x_new
     x = x_new
<blockquote>
print("Solution: ") print(x) error = np.dot(A, x) - b print("Error:") print(error)<blockquote>
print("Solution: ") print(x) error = np.dot(A, x) - b print("Error:") print(error)
</blockquote>
</blockquote>



Revision as of 11:48, 31 May 2023

संख्यात्मक रैखिक बीजगणित में जैकोबी विधि रैखिक समीकरणों के विकर्ण प्रभावी प्रणाली के समाधान को निर्धारण करने के लिए एक पुनरावृत्ति एल्गोरिथ्म है, जो प्रत्येक विकर्ण अवयव के लिए हल किया जाता है, और अनुमानित मान को रखा जाता है। यह प्रक्रिया तब तक दोहराई जाती है जब तक कि यह अभिसरित न हो जाए। यह एल्गोरिथम आव्यूह विकर्णन के जैकोबी परिवर्तन बिधि का एक स्ट्रिप्ड-डाउन संस्करण है। इस विधि का नाम कार्ल गुस्ताव जैकब जैकोबी के नाम पर रखा गया है।

विवरण

चलो , n रैखिक समीकरणों की एक वर्ग प्रणाली हो, जहाँ:

जब और ज्ञात हैं, और अज्ञात है, हम अनुमानित के लिए जैकोबी विधि का उपयोग कर सकते हैं। सदिश के लिए हमारे प्रारंभिक अनुमान को दर्शाता है (अक्सर के लिए ) के रूप में निरूपित करते हैं को के k-वें सन्निकटन या पुनरावृत्ति के रूप में निरुपित करते है, और का अगला पुनरावृत्ति ( k+1) है .

मैट्रिक्स आधारित सूत्र

तब A को एक विकर्ण घटक D, एक निचला त्रिकोणीय भाग L और एक ऊपरी त्रिकोणीय भाग U में विघटित किया जा सकता है: