Revision as of 12:16, 10 October 2023 by alpha>Indicwiki(Created page with "{{Short description|Iterative method used to solve a linear system of equations}} संख्यात्मक रैखिक बीजगणित में, गॉस...")
होने देना की एक वर्ग प्रणाली हो n रैखिक समीकरण, जहां:
कब और ज्ञात हैं, और अज्ञात है, हम अनुमान लगाने के लिए गॉस-सीडेल विधि का उपयोग कर सकते हैं . सदिश के लिए हमारे प्रारंभिक अनुमान को दर्शाता है (अक्सर के लिए ). हम निरूपित करते हैं के रूप में k-वाँ सन्निकटन या पुनरावृत्ति , और का अगला (या k+1) पुनरावृत्ति है .
मैट्रिक्स-आधारित सूत्र
समाधान पुनरावर्ती रूप से प्राप्त किया जाता है
जहां मैट्रिक्स एक त्रिकोणीय मैट्रिक्स घटक में विघटित हो जाता है , और एक त्रिकोणीय मैट्रिक्स # कड़ाई से त्रिकोणीय मैट्रिक्स घटक ऐसा है कि .[4] अधिक विशेष रूप से, का अपघटन में और द्वारा दिया गया है:
मैट्रिक्स-आधारित सूत्र क्यों काम करता है
रैखिक समीकरणों की प्रणाली को इस प्रकार फिर से लिखा जा सकता है:
गॉस-सीडेल विधि अब इस अभिव्यक्ति के बाईं ओर को हल करती है, के लिए पिछले मान का उपयोग करनादाहिने हाथ की ओर। विश्लेषणात्मक रूप से, इसे इस प्रकार लिखा जा सकता है:
तत्व-आधारित सूत्र
हालाँकि, त्रिकोणीय रूप का लाभ उठाकर , के तत्व प्रत्येक पंक्ति के लिए क्रमिक रूप से गणना की जा सकती है आगे प्रतिस्थापन का उपयोग करना:[5]
ध्यान दें कि सूत्र प्रति पुनरावृत्ति दो योगों का उपयोग करता है जिन्हें एक योग के रूप में व्यक्त किया जा सकता है जो कि सबसे हाल ही में गणना की गई पुनरावृत्ति का उपयोग करता है . प्रक्रिया आम तौर पर तब तक जारी रखी जाती है जब तक कि पुनरावृत्ति द्वारा किए गए परिवर्तन कुछ सहनशीलता से कम न हों, जैसे कि पर्याप्त रूप से छोटा अवशिष्ट (संख्यात्मक विश्लेषण)।
चर्चा
गॉस-सीडेल विधि का तत्व-वार सूत्र जैकोबी विधि के समान है।
की गणना के तत्वों का उपयोग करता है जिसकी गणना पहले ही की जा चुकी है, और केवल इसके तत्व जिसकी गणना नहीं की गई है (k+1)-वाँ पुनरावृत्ति. इसका मतलब यह है कि, जैकोबी पद्धति के विपरीत, केवल एक स्टोरेज वेक्टर की आवश्यकता होती है क्योंकि तत्वों की गणना करते समय उन्हें ओवरराइट किया जा सकता है, जो बहुत बड़ी समस्याओं के लिए फायदेमंद हो सकता है।
हालाँकि, जैकोबी विधि के विपरीत, प्रत्येक तत्व की गणना आमतौर पर समानांतर एल्गोरिथ्म में लागू करना बहुत कठिन होता है, क्योंकि उनमें समानांतर एल्गोरिदम का बहुत लंबा विश्लेषण हो सकता है, और इस प्रकार विरल मैट्रिक्स के लिए सबसे अधिक संभव है। इसके अलावा, प्रत्येक पुनरावृत्ति के मान मूल समीकरणों के क्रम पर निर्भर होते हैं।
गॉस-सीडेल विधि के अभिसरण गुण मैट्रिक्स ए पर निर्भर हैं। अर्थात्, प्रक्रिया को अभिसरण के लिए जाना जाता है यदि या तो:
A सममित सकारात्मक-निश्चित मैट्रिक्स है|सकारात्मक-निश्चित,[6] या
A सख्ती से या अपरिवर्तनीय रूप से विकर्ण रूप से प्रभावशाली मैट्रिक्स है।[7]
गॉस-सीडेल विधि कभी-कभी इन शर्तों के संतुष्ट न होने पर भी अभिसरण करती है।
गोलूब और वैन लोन एक एल्गोरिथ्म के लिए एक प्रमेय देते हैं जो विभाजित होता है दो भागों में. कल्पना करना निरर्थक है. होने देना की वर्णक्रमीय त्रिज्या हो . फिर पुनरावृत्त होता है द्वारा परिभाषित में जुटना किसी भी आरंभिक वेक्टर के लिए अगर निरर्थक है और .[8]
एल्गोरिथम
चूँकि इस एल्गोरिथ्म में तत्वों की गणना करते समय उन्हें ओवरराइट किया जा सकता है, केवल एक स्टोरेज वेक्टर की आवश्यकता होती है, और वेक्टर इंडेक्सिंग को छोड़ दिया जाता है। एल्गोरिथ्म इस प्रकार है:
एल्गोरिथम गॉस-सीडेल विधि है
इनपुट: A, b
output:φ
Choose an initial guess φ to the solution
अभिसरण तक दोहराएँ
के लिए i 1 से तक n करना
σ ← 0
के लिए j 1 से तक n करना
अगर j ≠ i तब
σ ← σ + aijφj
अगर अंत
अंत (j-कुंडली)
φi ← (bi − σ) / aii
अंत (i-कुंडली)
जाँच करें कि क्या अभिसरण पहुँच गया है
अंत (दोहराएँ)
उदाहरण
मैट्रिक्स संस्करण के लिए एक उदाहरण
एक रैखिक प्रणाली के रूप में दिखाया गया है द्वारा दिया गया है:
हम समीकरण का उपयोग करना चाहते हैं
प्रपत्र में
कहाँ:
हमें विघटित होना चाहिए निचले त्रिकोणीय घटक के योग में और एक सख्त ऊपरी त्रिकोणीय घटक :
का उलटा है:
अब हम पा सकते हैं:
अब हमारे पास है और और हम उनका उपयोग सदिश प्राप्त करने के लिए कर सकते हैं पुनरावर्ती रूप से।
सबसे पहले हमें चुनना होगा : हम केवल अनुमान लगा सकते हैं. अनुमान जितना बेहतर होगा, एल्गोरिदम उतनी ही तेजी से काम करेगा।
हम एक प्रारंभिक बिंदु चुनते हैं:
फिर हम गणना कर सकते हैं:
जैसा कि अपेक्षित था, एल्गोरिथ्म सटीक समाधान में परिवर्तित होता है:
वास्तव में, मैट्रिक्स A सख्ती से विकर्ण रूप से प्रभावशाली है (लेकिन सकारात्मक निश्चित नहीं)।
मैट्रिक्स संस्करण के लिए एक और उदाहरण
एक अन्य रैखिक प्रणाली के रूप में दिखाया गया है द्वारा दिया गया है:
हम समीकरण का उपयोग करना चाहते हैं
प्रपत्र में
कहाँ:
हमें विघटित होना चाहिए निचले त्रिकोणीय घटक के योग में और एक सख्त ऊपरी त्रिकोणीय घटक :
का उलटा है:
अब हम पा सकते हैं:
अब हमारे पास है और और हम उनका उपयोग सदिश प्राप्त करने के लिए कर सकते हैं पुनरावर्ती रूप से।
सबसे पहले हमें चुनना होगा : हम केवल अनुमान लगा सकते हैं. अनुमान जितना बेहतर होगा, एल्गोरिदम उतनी ही तेजी से निष्पादित होगा।
हम कल्पना करते हैं:
फिर हम गणना कर सकते हैं:
यदि हम अभिसरण के लिए परीक्षण करते हैं तो हम पाएंगे कि एल्गोरिदम अलग हो जाता है। वास्तव में, मैट्रिक्स ए न तो विकर्ण रूप से प्रभावशाली है और न ही सकारात्मक निश्चित है।
फिर, सटीक समाधान के लिए अभिसरण
इसकी गारंटी नहीं है और, इस मामले में, घटित नहीं होगा।
समीकरण संस्करण के लिए एक उदाहरण
मान लीजिए दिया है k समीकरण जहां xn इन समीकरणों के सदिश और प्रारंभिक बिंदु x हैं0.
पहले समीकरण से x के लिए हल करें1 के अनुसार अगले समीकरण के लिए xs के पिछले मानों को प्रतिस्थापित करें।
इसे स्पष्ट करने के लिए एक उदाहरण पर विचार करें।
के लिए समाधान और देता है:
मान लीजिए हम चुनते हैं (0, 0, 0, 0) प्रारंभिक सन्निकटन के रूप में, फिर पहला सन्निकटन समाधान दिया जाता है
प्राप्त अनुमानों का उपयोग करते हुए, वांछित सटीकता तक पहुंचने तक पुनरावृत्ति प्रक्रिया दोहराई जाती है। चार पुनरावृत्तियों के बाद अनुमानित समाधान निम्नलिखित हैं।
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).
===पायथन और NumPy=== का उपयोग करने वाला एक उदाहरण
निम्नलिखित संख्यात्मक प्रक्रिया केवल समाधान वेक्टर उत्पन्न करने के लिए पुनरावृत्त होती है।
importnumpyasnpITERATION_LIMIT=1000# initialize the matrixA=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 vectorb=np.array([6.0,25.0,-11.0,15.0])print("System of equations:")foriinrange(A.shape[0]):row=[f"{A[i,j]:3g}*x{j+1}"forjinrange(A.shape[1])]print("[{0}] = [{1:3g}]".format(" + ".join(row),b[i]))x=np.zeros_like(b,np.float_)forit_countinrange(1,ITERATION_LIMIT):x_new=np.zeros_like(x,dtype=np.float_)print(f"Iteration {it_count}: {x}")foriinrange(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]ifnp.allclose(x,x_new,rtol=1e-8):breakx=x_newprint(f"Solution: {x}")error=np.dot(A,x)-bprint(f"Error: {error}")
↑Bagnara, Roberto (March 1995). "जैकोबी और गॉस-सीडेल विधियों के अभिसरण के लिए एक एकीकृत प्रमाण". SIAM Review. 37 (1): 93–97. doi:10.1137/1037008. JSTOR2132758.