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

From Vigyanwiki
(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:


== एल्गोरिथम ==
== एल्गोरिथम ==
  इनपुट: {{nowrap|initial guess ''x''<sup>(0)</sup> to the solution}}, (विकर्ण प्रभावी) मैट्रिक्स A, दाएँ हाथ की ओर सदिश b, अभिसरण मानदंड
  '''Input:''' initial guess ''x''<sup>(0)</sup> to the solution, (diagonal dominant) matrix ''A'', right-hand side vector ''b'', convergence criterion
  'आउटपुट:' {{nowrap|solution when convergence is reached}}
  '''Output:''' solution when convergence is reached
  टिप्पणियाँ: उपरोक्त तत्व-आधारित सूत्र के आधार पर स्यूडोकोड
  '''Comments:''' pseudocode based on the element-based formula above
   
   
{{nowrap|1=''k'' = 0}}
''k'' = 0
  जबकि अभिसरण नहीं हुआ है
  '''while''' convergence not reached '''do'''
     ''i'' के लिए := 1 चरण तक n करें       
     '''for''' ''i'' := 1 '''step until''' n '''do'''
{{nowrap|1=''σ'' = 0}}
        ''σ'' = 0
         for ''j'' := 1 कदम तक n करते हैं
         '''for''' ''j'' := 1 '''step until''' n '''do'''
             अगर ''जे'' ≠ ''मैं'' तो               
             '''if''' ''j'' ≠ ''i'' '''then'''
{{nowrap|1=''σ'' = ''σ'' + ''a''<sub>''ij''</sub> ''x''<sub>''j''</sub><sup>(''k'')</sup>}}
                ''σ'' = ''σ'' + ''a<sub>ij</sub>'' ''x<sub>j</sub>''<sup>(''k'')</sup>
             अंत
             '''end'''
         अंत       
         '''end'''
{{nowrap|1=''x''<sub>''i''</sub><sup>(''k''+1)</sup> = (''b''<sub>''i''</sub> ''σ'') / ''a''<sub>''ii''</sub>}}
        ''x<sub>i</sub>''<sup>(''k''+1)</sup> = (''b<sub>i</sub>'' − ''σ'') / ''a<sub>ii</sub>''
     अंत
     '''end'''
     वेतन वृद्धि ''के''
     increment ''k''
  अंत
  '''end'''


== अभिसरण ==
== अभिसरण ==
<!-- [[Matrix splitting]] links here.  Please do not change. -->
मानक अभिसरण स्थिति (किसी पुनरावृत्त विधि के लिए) तब होती है जब पुनरावृत्ति मैट्रिक्स का [[वर्णक्रमीय त्रिज्या]] 1 से कम होता है:
मानक अभिसरण स्थिति (किसी पुनरावृत्त विधि के लिए) तब होती है जब पुनरावृत्ति मैट्रिक्स का [[वर्णक्रमीय त्रिज्या]] 1 से कम होता है:


Line 256: Line 255:


=== पायथन उदाहरण ===
=== पायथन उदाहरण ===
<वाक्यविन्यास प्रकाश लैंग = संख्यात्मक रेखा = 1>
import numpy as np
Numpy को np के रूप में आयात करें
<blockquote>
 
  ITERATION_LIMIT = 1000
ITERATION_LIMIT = 1000
</blockquote>
 
initialize the matrix
# मैट्रिक्स को इनिशियलाइज़ करें
<blockquote>
= एनपी। सरणी (10।, -1।, 2।, 0।],
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.]])
# आरएचएस वेक्टर को इनिशियलाइज़ करें
बी = एनपी। सरणी ([6।, 25।, -11।, 15।])
 
# सिस्टम प्रिंट करता है
प्रिंट (सिस्टम:)
for i in range(A.shape[0]):
    पंक्ति = [एफ {ए [आई, जे]} * एक्स {जे + 1} फॉर जे इन रेंज (ए आकार [1])]
    प्रिंट (एफ '{ + .जॉइन (पंक्ति)} = {बी [i]}')
प्रिंट ()


x = np.zeros_like ()
initialize the RHS vector
इसके लिए_गिनती श्रेणी में (ITERATION_LIMIT):
<blockquote>
     अगर it_count! = 0:
b = np.array([6., 25., -11., 15.])
         प्रिंट (एफ पुनरावृत्ति {it_count}: {x})
</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]
         अगर x_new[i] == x_new[i-1]:
         if x_new[i] == x_new[i-1]:
           तोड़ना
           break
 
     if np.allclose(x, x_new, atol=1e-10, rtol=0.):
     अगर np.allclose(x, x_new, atol=1e-10, rtol=0.):
         break
         तोड़ना
     x = x_new
 
<blockquote>
     एक्स = x_new
print("Solution: ") print(x) error = np.dot(A, x) - b print("Error:") print(error)
 
</blockquote>
प्रिंट (समाधान:)
प्रिंट (एक्स)
त्रुटि = एनपी डॉट (, एक्स) - बी
प्रिंट (त्रुटि:)
प्रिंट (त्रुटि)
</वाक्यविन्यास हाइलाइट>


== भारित जैकोबी विधि ==
== भारित जैकोबी विधि ==

Revision as of 23:18, 25 May 2023

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

विवरण

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

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

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

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

इसके बाद समाधान को पुनरावृत्त रूप से प्राप्त किया जाता है


तत्व-आधारित सूत्र

प्रत्येक पंक्ति के लिए तत्व-आधारित सूत्र इस प्रकार है:

की गणना में प्रत्येक तत्व की आवश्यकता है खुद को छोड़कर। गॉस-सीडेल पद्धति के विपरीत, हम अधिलेखित नहीं कर सकते साथ , क्योंकि शेष गणना के लिए उस मान की आवश्यकता होगी। भंडारण की न्यूनतम मात्रा आकार n के दो वैक्टर हैं।

एल्गोरिथम

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 ji then
                σ = σ + aij xj(k)
            end
        end
        xi(k+1) = (bi − σ) / aii
    end
    increment k
end

अभिसरण

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

अभिसरण की विधि के लिए एक पर्याप्त (लेकिन आवश्यक नहीं) शर्त यह है कि मैट्रिक्स ए सख्ती से या अनियमित रूप से तिरछे प्रभावशाली मैट्रिक्स है। सख्त पंक्ति विकर्ण प्रभुत्व का अर्थ है कि प्रत्येक पंक्ति के लिए, विकर्ण पद का निरपेक्ष मान अन्य पदों के निरपेक्ष मानों के योग से अधिक है:

जैकोबी पद्धति कभी-कभी अभिसरण करती है, भले ही ये शर्तें संतुष्ट न हों।

ध्यान दें कि जैकोबी विधि प्रत्येक सममित सकारात्मक-निश्चित मैट्रिक्स के लिए अभिसरण नहीं करती है। उदाहरण के लिए,


उदाहरण

उदाहरण 1

फॉर्म की एक रैखिक प्रणाली प्रारंभिक अनुमान के साथ द्वारा दिया गया है

हम समीकरण का उपयोग करते हैं , ऊपर वर्णित, अनुमान लगाने के लिए . सबसे पहले, हम समीकरण को अधिक सुविधाजनक रूप में फिर से लिखते हैं , कहाँ और . ज्ञात मूल्यों से

हम निर्धारित करते हैं जैसा
आगे, रूप में पाया जाता है
साथ और गणना, हम अनुमान लगाते हैं जैसा :
अगला पुनरावृत्ति उपज देता है
यह प्रक्रिया अभिसरण तक दोहराई जाती है (यानी, जब तक छोटा है)। 25 पुनरावृत्तियों के बाद समाधान है


उदाहरण 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
  • मैट्रिक्स विभाजन

संदर्भ

  1. Saad, Yousef (2003). विरल रेखीय प्रणालियों के लिए पुनरावर्ती तरीके (2nd ed.). SIAM. p. 414. ISBN 0898715342.


बाहरी संबंध