सेकेंट मेथड (छेदिका विधि): Difference between revisions

From Vigyanwiki
No edit summary
Line 66: Line 66:
फिर इसे फलन का मूल ढूंढने के लिए लागू किया जाता है {{math|''f''(''x'') {{=}} ''x''<sup>2</sup> − 612}} प्रारंभिक बिंदुओं के साथ <math>x_0 = 10</math> और <math>x_1 = 30</math>
फिर इसे फलन का मूल ढूंढने के लिए लागू किया जाता है {{math|''f''(''x'') {{=}} ''x''<sup>2</sup> − 612}} प्रारंभिक बिंदुओं के साथ <math>x_0 = 10</math> और <math>x_1 = 30</math>


<सिंटैक्सहाइलाइट लैंग = पायथन3 >
<syntaxhighlight lang="python3">
def secant_method(f, x0, X1, पुनरावृत्तियों):
def secant_method(f, x0, x1, iterations):
      सेकेंट मेथड का उपयोग करके परिकलित मूल लौटाएँ।
    """Return the root calculated using the secant method."""
     रेंज (पुनरावृत्तियों) में i के लिए:
     for i in range(iterations):
         x2 = x1 - f(x1) * (x1 - x0) / फ्लोट(f(x1) - f(x0))
         x2 = x1 - f(x1) * (x1 - x0) / float(f(x1) - f(x0))
         x0, x1 = x1, x2
         x0, x1 = x1, x2
         # यहां एक रोक मानदंड लागू करें (नीचे देखें)
         # Apply a stopping criterion here (see below)
     वापसी x2
     return x2


def f_example(x):
def f_example(x):
     वापसी x ** 2 - 612
     return x ** 2 - 612


मूल = secant_method(f_example, 10, 30, 5)
root = secant_method(f_example, 10, 30, 5)


प्रिंट (एफ मूल: {मूल} ) # मूल: 24.738633748750722
print(f"Root: {root}") # Root: 24.738633748750722


</सिंटैक्सहाइलाइट>
</syntaxhighlight>


उपरोक्त एक अच्छा रोक मानदंड होना बहुत महत्वपूर्ण है, अन्यथा, फ़्लोटिंग पॉइंट संख्याओं की सीमित संख्यात्मक सटीकता के कारण, एल्गोरिदम बहुत अधिक पुनरावृत्तियों के लिए चलने पर गलत परिणाम दे सकता है। उदाहरण के लिए, उपरोक्त लूप तब रुक सकता है जब इनमें से कोई एक पहले पहुंच जाए: abs(x0 - x1) < tol, या abs(x0/x1-1) < tol, या abs(f(x1)) < tol. <ref>{{cite web | url=https://www.cfm.brown.edu/people/dobrush/am33/Matlab/ch3/secant.html | title=MATLAB TUTORIAL for the First Course. Part 1.3: Secant Methods }}</ref>
उपरोक्त एक अच्छा रोक मानदंड होना बहुत महत्वपूर्ण है, अन्यथा, फ़्लोटिंग पॉइंट संख्याओं की सीमित संख्यात्मक सटीकता के कारण, एल्गोरिदम बहुत अधिक पुनरावृत्तियों के लिए चलने पर गलत परिणाम दे सकता है। उदाहरण के लिए, उपरोक्त लूप तब रुक सकता है जब इनमें से कोई एक पहले पहुंच जाए: abs(x0 - x1) < tol, या abs(x0/x1-1) < tol, या abs(f(x1)) < tol. <ref>{{cite web | url=https://www.cfm.brown.edu/people/dobrush/am33/Matlab/ch3/secant.html | title=MATLAB TUTORIAL for the First Course. Part 1.3: Secant Methods }}</ref>


[[Category:Articles containing Latin-language text]]
[[Category:Created On 14/07/2023]]
[[Category:Machine Translated Page]]
[[Category:Pages with script errors]]
[[Category:Short description with empty Wikidata description]]
[[Category:Template documentation pages|Short description/doc]]
[[Category:Templates Vigyan Ready]]
[[Category:Templates that add a tracking category]]
[[Category:Templates that generate short descriptions]]
[[Category:Templates using TemplateData]]


==टिप्पणियाँ==
==टिप्पणियाँ==

Revision as of 13:34, 31 July 2023

सेकेंट मेथड के पहले दो पुनरावृत्तियाँ। लाल वक्र फलन f दिखाता है, और नीली रेखाएं छेदक हैं। इस विशेष मामले के लिए, सेकेंट मेथड दृश्य मूल में परिवर्तित नहीं होगी।

संख्यात्मक विश्लेषण में, सेकेंट मेथड (छेदिका विधि) एक रूट-फाइंडिंग एल्गोरिदम है जो फलन f की जड़ को बेहतर ढंग से अनुमानित करने के लिए सेकेंट लाइनों की जड़ों के उत्तराधिकार का उपयोग करता है। सेकेंट मेथड को न्यूटन की विधि का एक सीमित-अंतर सन्निकटन माना जा सकता है। हालाँकि, सेकेंट मेथड न्यूटन की विधि से 3000 वर्ष से भी अधिक पुरानी है।[1]

विधि

किसी फलन का शून्य ज्ञात करने के लिए f, सेकेंट मेथड को पुनरावृत्ति संबंध द्वारा परिभाषित किया गया है।

जैसा कि इस सूत्र से देखा जा सकता है, दो प्रारंभिक मान x0 और x1 ज़रूरत है। आदर्श रूप से, उन्हें वांछित शून्य के निकटम चुना जाना चाहिए।

विधि की व्युत्पत्ति

आरंभिक मानों से प्रारंभ करना x0 और x1, हम बिंदुओं के माध्यम से एक रेखा बनाते हैं (x0, f(x0)) और (x1, f(x1)), जैसा कि ऊपर चित्र में दिखाया गया है। ढलान-अवरोधन रूप में, इस रेखा का समीकरण है

इस रैखिक फलन का मूल, अर्थात् का मान है x ऐसा है कि y = 0 है

फिर हम इस नए मान का उपयोग करते हैं x जैसा x2 और प्रयोग करते हुए प्रक्रिया को दोहराएँ x1 और x2 के बजाय x0 और x1. हम समाधान करते हुए इस प्रक्रिया को जारी रखते हैं x3, x4, आदि, जब तक कि हम परिशुद्धता के पर्याप्त उच्च स्तर (के बीच पर्याप्त छोटा अंतर) तक नहीं पहुंच जाते xn और xn−1):


अभिसरण

पुनरावृत्त करता है सेकेंट मेथड का मूल में अभिसरण होता है यदि प्रारंभिक मान और मूल के पर्याप्त निकट हैं। अभिसरण का क्रम है , जहाँ

गोल्डेन रेश्यो हैl विशेष रूप से, अभिसरण सुपर रैखिक है, लेकिन पूरी तरह से द्विघात अभिसरण नहीं है।

तात्पर्य यह परिणाम केवल कुछ तकनीकी स्थितियों के तहत ही मान्य है, अर्थात् दो बार निरंतर अवकलनीय हो और प्रश्न में मूल सरल हो (अर्थात् बहुलता 1 के साथ)।

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

अन्य मूल-खोज विधियों के साथ तुलना

सेकेंट मेथड के लिए आवश्यक नहीं है कि मूल कोष्ठक में रखा जाए, जैसा कि द्विभाजन विधि में होता है, और इसलिए यह हमेशा अभिसरण नहीं होता है। मिथ्या स्थिति विधि या फॉल्स पोजीशन मेथड (या regula falsi) सेकेंट मेथड के समान सूत्र का उपयोग करता है। हालाँकि, यह फॉर्मूला लागू नहीं होता है और , सेकेंट मेथड की तरह, लेकिन चालू और अंतिम पुनरावृति पर ऐसा है कि और एक अलग संकेत है. इसका तात्पर्य यह है कि मिथ्या स्थिति विधि हमेशा अभिसरण करती है; हालाँकि, केवल अभिसरण के एक रैखिक क्रम के साथ है। सेकेंट मेथड के रूप में अभिसरण के सुपर-रेखीय क्रम के साथ ब्रैकेटिंग को मिथ्या स्थिति विधि में सुधार के साथ प्राप्त किया जा सकता है (देखें रेगुला फाल्सी # सुधार% 20in% 20रेगुला% 20 फाल्सी | रेगुला फाल्सी § रेगुला फाल्सी में सुधार) जैसे कि आईटीपी विधि या इलिनोइस विधि.

सेकेंट मेथड का पुनरावृत्ति सूत्र न्यूटन की विधि के सूत्र से प्राप्त किया जा सकता है

छोटे के लिए, परिमित-अंतर सन्निकटन का उपयोग करके :

सेकेंट मेथड की व्याख्या एक ऐसी विधि के रूप में की जा सकती है जिसमें व्युत्पन्न को एक सन्निकटन द्वारा प्रतिस्थापित किया जाता है और इस प्रकार यह एक अर्ध-न्यूटन विधि है।

यदि हम न्यूटन की विधि की तुलना सेकेंट मेथड से करते हैं, तो हम देखते हैं कि न्यूटन की विधि तेजी से अभिसरण करती है (φ≈1.6 के विरुद्ध क्रम 2)। हालाँकि, न्यूटन की पद्धति के लिए दोनों के मूल्यांकन की आवश्यकता है और इसका व्युत्पन्न प्रत्येक चरण पर, जबकि सेकेंट मेथड के लिए केवल मूल्यांकन की आवश्यकता होती है . इसलिए, सेकेंट मेथड कभी-कभी व्यवहार में तेज़ हो सकती है। उदाहरण के लिए, यदि हम मान लें कि मूल्यांकन कर रहे हैं इसके व्युत्पन्न का मूल्यांकन करने में जितना समय लगता है और हम अन्य सभी लागतों की उपेक्षा करते हैं, हम सेकेंट मेथड के दो चरण कर सकते हैं (त्रुटि के लघुगणक को एक कारक से घटाकर φ2 ≈ 2.6 ) न्यूटन की विधि के एक चरण के समान लागत के लिए (त्रुटि के लघुगणक को कारक 2 से कम करना), इसलिए सेकेंट मेथड तेज़ है। यदि, हालांकि, हम व्युत्पन्न के मूल्यांकन के लिए समानांतर प्रसंस्करण पर विचार करते हैं, तो न्यूटन की विधि समय में तेज़ होने के अतिरिक्त इसके लायक साबित होती है, हालांकि अभी भी अधिक कदम खर्च करती है।

सामान्यीकरण

ब्रोयडेन की विधि एक से अधिक आयामों के लिए सेकेंट मेथड का सामान्यीकरण है।

निम्नलिखित ग्राफ़ फलन f को लाल रंग में और अंतिम सेकंड लाइन को बोल्ड नीले रंग में दिखाता है। ग्राफ़ में, छेदक रेखा का x अंतःखंड, f के मूल का एक अच्छा सन्निकटन प्रतीत होता है।

Secant method example code result.svg

कम्प्यूटेशनल उदाहरण

नीचे, सेकेंट मेथड को पायथन (प्रोग्रामिंग लैंग्वेज) प्रोग्रामिंग लैंग्वेज में लागू किया गया है।

फिर इसे फलन का मूल ढूंढने के लिए लागू किया जाता है f(x) = x2 − 612 प्रारंभिक बिंदुओं के साथ और

def secant_method(f, x0, x1, iterations):
    """Return the root calculated using the secant method."""
    for i in range(iterations):
        x2 = x1 - f(x1) * (x1 - x0) / float(f(x1) - f(x0))
        x0, x1 = x1, x2
        # Apply a stopping criterion here (see below)
    return x2

def f_example(x):
    return x ** 2 - 612

root = secant_method(f_example, 10, 30, 5)

print(f"Root: {root}")  # Root: 24.738633748750722

उपरोक्त एक अच्छा रोक मानदंड होना बहुत महत्वपूर्ण है, अन्यथा, फ़्लोटिंग पॉइंट संख्याओं की सीमित संख्यात्मक सटीकता के कारण, एल्गोरिदम बहुत अधिक पुनरावृत्तियों के लिए चलने पर गलत परिणाम दे सकता है। उदाहरण के लिए, उपरोक्त लूप तब रुक सकता है जब इनमें से कोई एक पहले पहुंच जाए: abs(x0 - x1) < tol, या abs(x0/x1-1) < tol, या abs(f(x1)) < tol. [2]

टिप्पणियाँ

  1. Papakonstantinou, Joanna; Tapia, Richard (2013). "एक आयाम में सेकेंट विधि की उत्पत्ति और विकास". American Mathematical Monthly. 120 (6): 500–518. doi:10.4169/amer.math.monthly.120.06.500. JSTOR 10.4169/amer.math.monthly.120.06.500. S2CID 17645996 – via JSTOR.
  2. "MATLAB TUTORIAL for the First Course. Part 1.3: Secant Methods".

यह भी देखें

  • मिथ्या स्थिति विधि (फॉल्स पोजीशन मेथड)

संदर्भ

बाहरी संबंध