जैकोबी विधि: Difference between revisions
(Created page with "{{Short description|Iterative method used to solve a linear system of equations}} {{Distinguish|Jacobi eigenvalue algorithm}} संख्यात्मक रैखिक...") |
No edit summary |
||
Line 2: | Line 2: | ||
{{Distinguish|Jacobi eigenvalue algorithm}} | {{Distinguish|Jacobi eigenvalue algorithm}} | ||
[[संख्यात्मक रैखिक बीजगणित]] में, जैकोबी विधि | [[संख्यात्मक रैखिक बीजगणित]] में, '''जैकोबी विधि''' रैखिक समीकरणों के एक सख्ती से विकर्णतः प्रभावी प्रणाली के समाधान का निर्धारण करने के लिए एक पुनरावृत्ति एल्गोरिथ्म है। प्रत्येक विकर्ण तत्व के लिए हल किया जाता है, और एक अनुमानित मान प्लग इन किया जाता है। प्रक्रिया तब तक दोहराई जाती है जब तक कि यह अभिसरण न हो जाए। यह एल्गोरिथम [[जैकोबी ईजेनवेल्यू एल्गोरिथम]] का एक स्ट्रिप्ड-डाउन संस्करण है। विधि का नाम [[कार्ल गुस्ताव जैकब जैकोबी]] के नाम पर रखा गया है। | ||
== विवरण == | == विवरण == | ||
Line 19: | Line 19: | ||
== एल्गोरिथम == | == एल्गोरिथम == | ||
'''Input:''' initial guess ''x''<sup>(0)</sup> to the solution, (diagonal dominant) matrix ''A'', right-hand side vector ''b'', convergence criterion | |||
' | '''Output:''' solution when convergence is reached | ||
'''Comments:''' pseudocode based on the element-based formula above | |||
''k'' = 0 | |||
'''while''' convergence not reached '''do''' | |||
''i'' | '''for''' ''i'' := 1 '''step until''' n '''do''' | ||
''σ'' = 0 | |||
for ''j'' := 1 | '''for''' ''j'' := 1 '''step until''' n '''do''' | ||
'''if''' ''j'' ≠ ''i'' '''then''' | |||
''σ'' = ''σ'' + ''a<sub>ij</sub>'' ''x<sub>j</sub>''<sup>(''k'')</sup> | |||
'''end''' | |||
'''end''' | |||
''x<sub>i</sub>''<sup>(''k''+1)</sup> = (''b<sub>i</sub>'' − ''σ'') / ''a<sub>ii</sub>'' | |||
'''end''' | |||
increment ''k'' | |||
'''end''' | |||
== अभिसरण == | == अभिसरण == | ||
मानक अभिसरण स्थिति (किसी पुनरावृत्त विधि के लिए) तब होती है जब पुनरावृत्ति मैट्रिक्स का [[वर्णक्रमीय त्रिज्या]] 1 से कम होता है: | मानक अभिसरण स्थिति (किसी पुनरावृत्त विधि के लिए) तब होती है जब पुनरावृत्ति मैट्रिक्स का [[वर्णक्रमीय त्रिज्या]] 1 से कम होता है: | ||
Line 256: | Line 255: | ||
=== पायथन उदाहरण === | === पायथन उदाहरण === | ||
< | import numpy as np | ||
<blockquote> | |||
ITERATION_LIMIT = 1000 | |||
ITERATION_LIMIT = 1000 | </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.]]) | ||
x = np.zeros_like ( | initialize the RHS vector | ||
<blockquote> | |||
b = np.array([6., 25., -11., 15.]) | |||
</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])] | |||
print(f'{" + ".join(row)} = {b[i]}') | |||
<blockquote> | |||
print() x = np.zeros_like(b) for it_count in range(ITERATION_LIMIT): | |||
</blockquote> | |||
if it_count != 0: | |||
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]) | ||
s2 = np.dot(A[i, i + 1:], x[i + 1:]) | s2 = np.dot(A[i, i + 1:], x[i + 1:]) | ||
x_new[i] = (b[i] - s1 - s2) / A[i, i] | x_new[i] = (b[i] - s1 - s2) / A[i, i] | ||
if x_new[i] == x_new[i-1]: | |||
break | |||
if np.allclose(x, x_new, atol=1e-10, rtol=0.): | |||
break | |||
x = x_new | |||
<blockquote> | |||
print("Solution: ") print(x) error = np.dot(A, x) - b print("Error:") print(error) | |||
</blockquote> | |||
</ | |||
== भारित जैकोबी विधि == | == भारित जैकोबी विधि == |
Revision as of 23:18, 25 May 2023
संख्यात्मक रैखिक बीजगणित में, जैकोबी विधि रैखिक समीकरणों के एक सख्ती से विकर्णतः प्रभावी प्रणाली के समाधान का निर्धारण करने के लिए एक पुनरावृत्ति एल्गोरिथ्म है। प्रत्येक विकर्ण तत्व के लिए हल किया जाता है, और एक अनुमानित मान प्लग इन किया जाता है। प्रक्रिया तब तक दोहराई जाती है जब तक कि यह अभिसरण न हो जाए। यह एल्गोरिथम जैकोबी ईजेनवेल्यू एल्गोरिथम का एक स्ट्रिप्ड-डाउन संस्करण है। विधि का नाम कार्ल गुस्ताव जैकब जैकोबी के नाम पर रखा गया है।
विवरण
होने देना n रैखिक समीकरणों की एक वर्ग प्रणाली हो, जहाँ:
मैट्रिक्स आधारित सूत्र
तब A को एक विकर्ण मैट्रिक्स घटक D, एक निचला त्रिकोणीय भाग L और एक ऊपरी त्रिकोणीय भाग U में विघटित किया जा सकता है:
तत्व-आधारित सूत्र
प्रत्येक पंक्ति के लिए तत्व-आधारित सूत्र इस प्रकार है:
एल्गोरिथम
Input: initial guess x(0) to the solution, (diagonal dominant) matrix A, right-hand side vector b, convergence criterion Output: solution when convergence is reached Comments: pseudocode based on the element-based formula above k = 0 while convergence not reached do for i := 1 step until n do σ = 0 for j := 1 step until n do if j ≠ i then σ = σ + aij xj(k) end end xi(k+1) = (bi − σ) / aii end increment k end
अभिसरण
मानक अभिसरण स्थिति (किसी पुनरावृत्त विधि के लिए) तब होती है जब पुनरावृत्ति मैट्रिक्स का वर्णक्रमीय त्रिज्या 1 से कम होता है:
अभिसरण की विधि के लिए एक पर्याप्त (लेकिन आवश्यक नहीं) शर्त यह है कि मैट्रिक्स ए सख्ती से या अनियमित रूप से तिरछे प्रभावशाली मैट्रिक्स है। सख्त पंक्ति विकर्ण प्रभुत्व का अर्थ है कि प्रत्येक पंक्ति के लिए, विकर्ण पद का निरपेक्ष मान अन्य पदों के निरपेक्ष मानों के योग से अधिक है:
जैकोबी पद्धति कभी-कभी अभिसरण करती है, भले ही ये शर्तें संतुष्ट न हों।
ध्यान दें कि जैकोबी विधि प्रत्येक सममित सकारात्मक-निश्चित मैट्रिक्स के लिए अभिसरण नहीं करती है। उदाहरण के लिए,
उदाहरण
उदाहरण 1
फॉर्म की एक रैखिक प्रणाली प्रारंभिक अनुमान के साथ द्वारा दिया गया है
हम समीकरण का उपयोग करते हैं , ऊपर वर्णित, अनुमान लगाने के लिए . सबसे पहले, हम समीकरण को अधिक सुविधाजनक रूप में फिर से लिखते हैं , कहाँ और . ज्ञात मूल्यों से
उदाहरण 2
मान लीजिए कि हमें निम्नलिखित रैखिक प्रणाली दी गई है:
अगर हम चुनते हैं (0, 0, 0, 0) को प्रारंभिक सन्निकटन के रूप में, तो प्रथम सन्निकट हल द्वारा दिया जाता है
0.6 | 2.27272 | -1.1 | 1.875 |
1.04727 | 1.7159 | -0.80522 | 0.88522 |
0.93263 | 2.05330 | -1.0493 | 1.13088 |
1.01519 | 1.95369 | -0.9681 | 0.97384 |
0.98899 | 2.0114 | -1.0102 | 1.02135 |
व्यवस्था का सटीक समाधान है (1, 2, −1, 1).
पायथन उदाहरण
import numpy as np
ITERATION_LIMIT = 1000
initialize the matrix
A = np.array([[10., -1., 2., 0.],
[-1., 11., -1., 3.], [2., -1., 10., -1.], [0.0, 3., -1., 8.]])
initialize the RHS vector
b = np.array([6., 25., -11., 15.])
prints the system
print("System:") for i in range(A.shape[0]):
row = [f"{A[i, j]}*x{j + 1}" for j in range(A.shape[1])] print(f'{" + ".join(row)} = {b[i]}')
print() x = np.zeros_like(b) for it_count in range(ITERATION_LIMIT):
if it_count != 0: print(f"Iteration {it_count}: {x}") x_new = np.zeros_like(x) for i in range(A.shape[0]): s1 = np.dot(A[i, :i], x[:i]) s2 = np.dot(A[i, i + 1:], x[i + 1:]) x_new[i] = (b[i] - s1 - s2) / A[i, i] if x_new[i] == x_new[i-1]: break if np.allclose(x, x_new, atol=1e-10, rtol=0.): break x = x_new
print("Solution: ") print(x) error = np.dot(A, x) - b print("Error:") print(error)
भारित जैकोबी विधि
भारित जैकोबी पुनरावृत्ति एक पैरामीटर का उपयोग करता है पुनरावृत्ति की गणना करने के लिए
साथ सामान्य पसंद होने के नाते।[1] संबंध से , इसे इस रूप में भी व्यक्त किया जा सकता है
- .
सममित सकारात्मक निश्चित मामले में अभिसरण
मामले में कि सिस्टम मैट्रिक्स सममित सकारात्मक-निश्चित मैट्रिक्स का है | सकारात्मक-निश्चित प्रकार कोई अभिसरण दिखा सकता है।
होने देना पुनरावृत्ति मैट्रिक्स हो। फिर, अभिसरण की गारंटी है
- कहाँ अधिकतम eigenvalue है।
किसी विशेष विकल्प के लिए वर्णक्रमीय त्रिज्या को कम किया जा सकता है निम्नलिखित नुसार
यह भी देखें
- गॉस-सीडेल विधि
- लगातार अति-विश्राम
- इटरेटिव मेथड # लीनियर सिस्टम | इटरेटिव मेथड § लीनियर सिस्टम
- विश्वास प्रचार#गाऊसी विश्वास प्रसार .28GaBP.29
- मैट्रिक्स विभाजन
संदर्भ
- ↑ Saad, Yousef (2003). विरल रेखीय प्रणालियों के लिए पुनरावर्ती तरीके (2nd ed.). SIAM. p. 414. ISBN 0898715342.
बाहरी संबंध
- This article incorporates text from the article Jacobi_method on CFD-Wiki that is under the GFDL license.
- Black, Noel; Moore, Shirley & Weisstein, Eric W. "Jacobi method". MathWorld.
- Jacobi Method from www.math-linux.com