Nवें रूट एल्गोरिदम को स्थानांतरित करना: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 1: Line 1:
{{DISPLAYTITLE:Shifting ''n''th root algorithm}}
{{DISPLAYTITLE:Shifting ''n''th root algorithm}}
शिफ्टिंग ''एन''वें रूट [[कलन विधि]] एक सकारात्मक [[वास्तविक संख्या]] के एनवें रूट|''एन''वें रूट को निकालने के लिए एक एल्गोरिदम है, जो मूलांक के ''एन'' [[संख्यात्मक अंक]] में बदलाव से शुरू होकर पुनरावृत्त रूप से आगे बढ़ता है। सबसे महत्वपूर्ण, और लंबे विभाजन के समान तरीके से, प्रत्येक पुनरावृत्ति पर मूल का एक अंक उत्पन्न करता है।


शिफ्टिंग ''एन''वें रूट [[कलन विधि]] एक सकारात्मक [[वास्तविक संख्या]] के एनवें रूट|''एन''वें रूट को निकालने के लिए एक एल्गोरिदम है, जो मूलांक के ''एन'' [[संख्यात्मक अंक]] में बदलाव से शुरू होकर पुनरावृत्त रूप से आगे बढ़ता है। सबसे महत्वपूर्ण, और लंबे विभाजन के समान तरीके से, प्रत्येक पुनरावृत्ति पर मूल का एक अंक उत्पन्न करता है।
शिफ्टिंग Nवें रूट एल्गोरिदम एक सकारात्मक वास्तविक संख्या के Nवें रूट को निकालने के लिए एक एल्गोरिदम है जो मूलांक के Nअंकों में बदलाव करके पुनरावृत्त रूप से आगे बढ़ता है, सबसे महत्वपूर्ण से प्रारंभ होता है, और लंबे विभाजन के समान विधि से प्रत्येक पुनरावृत्ति पर रूट का एक अंक उत्पन्न करता है।


== एल्गोरिथम ==
== एल्गोरिथम ==
Line 7: Line 8:
=== संकेतन ===
=== संकेतन ===


होने देना <math>B</math> आपके द्वारा उपयोग की जा रही संख्या प्रणाली का [[मूलांक]] हो, और <math>n</math> निकाले जाने वाली जड़ की डिग्री हो. होने देना <math>x</math> अब तक संसाधित रेडिकैंड बनें, <math>y</math> अब तक निकाली गई जड़ हो, और <math>r</math> शेष रहें. होने देना <math>\alpha</math> अगले हो <math>n</math> मूलांक के अंक, और <math>\beta</math> मूल का अगला अंक हो. होने देना <math>x'</math> का नया मान हो <math>x</math> अगले पुनरावृत्ति के लिए, <math>y'</math> का नया मान हो <math>y</math> अगले पुनरावृत्ति के लिए, और <math>r'</math> का नया मान हो <math>r</math> अगले पुनरावृत्ति के लिए. ये सभी [[पूर्णांक]] हैं.
मान लीजिए कि आप जिस संख्या प्रणाली का उपयोग कर रहे हैं उसका आधार <math>B</math> है और निकाले जाने वाले मूल की डिग्री <math>n</math> है। मान लीजिए कि अब तक संसाधित किया गया मूलांक <math>x</math> है, अब तक निकाली गई जड़ <math>y</math> है और शेषफल <math>r</math> है। मान लीजिए <math>\alpha</math> मूलांक का अगला <math>n</math> अंक है, और <math>\beta</math> मूल का अगला अंक है। मान लीजिए <math>x'</math> अगले पुनरावृत्ति के लिए <math>x</math> का नया मान है, <math>y'</math> अगले पुनरावृत्ति के लिए <math>y</math> का नया मान है, और <math>r'</math> अगले पुनरावृत्ति के लिए <math>r</math> का नया मान है। ये सभी पूर्णांक हैं.


=== अपरिवर्तनीय ===
=== अपरिवर्तनीय ===
प्रत्येक पुनरावृत्ति पर, इनवेरिएंट (कंप्यूटर विज्ञान) <math>y^n + r = x</math> रोक लेंगे। अपरिवर्तनीय <math>(y+1)^n>x</math> रोक लेंगे। इस प्रकार <math>y</math> से कम या उसके बराबर सबसे बड़ा पूर्णांक है <math>n</math>की जड़ <math>x</math>, और <math>r</math> शेष है.
प्रत्येक पुनरावृत्ति पर, अपरिवर्तनीय <math>y^n + r = x</math> कायम रहेगा। अपरिवर्तनीय <math>(y+1)^n>x</math> धारण करेगा। इस प्रकार <math>y</math>, x के nवें मूल से कम या उसके समान सबसे बड़ा पूर्णांक है, और r शेषफल है।


=== आरंभीकरण ===
=== आरंभीकरण ===
के प्रारंभिक मान <math>x, y</math>, और <math>r</math> 0 होना चाहिए. का मान <math>\alpha</math> पहले पुनरावृत्ति के लिए सबसे महत्वपूर्ण संरेखित ब्लॉक होना चाहिए <math>n</math> मूलांक के अंक. का एक संरेखित ब्लॉक <math>n</math> अंक का अर्थ है अंकों का एक समूह जो इस प्रकार संरेखित हो कि दशमलव बिंदु ब्लॉकों के बीच में जाए। उदाहरण के लिए, 123.4 में दो अंकों का सबसे महत्वपूर्ण संरेखित ब्लॉक 01 है, अगला सबसे महत्वपूर्ण 23 है, और तीसरा सबसे महत्वपूर्ण 40 है।
<math>x, y</math> और <math>r</math> का प्रारंभिक मान 0 होना चाहिए। पहले पुनरावृत्ति के लिए <math>\alpha</math> का मान मूलांक के n अंकों का सबसे महत्वपूर्ण संरेखित ब्लॉक होना चाहिए। <math>n</math>अंकों के एक संरेखित ब्लॉक का अर्थ है अंकों का एक ब्लॉक संरेखित करना जिससे दशमलव बिंदु ब्लॉकों के बीच आ जाए उदाहरण के लिए, 123.4 में दो अंकों का सबसे महत्वपूर्ण संरेखित ब्लॉक 01 है, अगला सबसे महत्वपूर्ण 23 है, और तीसरा सबसे महत्वपूर्ण 40 है।


=== मुख्य लूप ===
=== मुख्य लूप ===
प्रत्येक पुनरावृत्ति पर हम बदलाव करते हैं <math>n</math> मूलांक के अंक, तो हमारे पास है <math>x' = B^n x + \alpha</math> और हम मूल का एक अंक उत्पन्न करते हैं, इसलिए हमारे पास है <math>y' = B y + \beta </math>. प्रथम अपरिवर्तनीय का तात्पर्य यह है <math>r' = x' - y'^n</math>. हम चुनना चाहते हैं <math>\beta</math> ताकि ऊपर वर्णित अपरिवर्तनीयता कायम रहे। इससे पता चलता है कि हमेशा ऐसा ही एक विकल्प होता है, जैसा कि नीचे साबित किया जाएगा।
प्रत्येक पुनरावृत्ति पर हम मूलांक के <math>n</math>अंकों में बदलाव करते हैं, इसलिए हमारे पास <math>x' = B^n x + \alpha</math> है और हम मूल का एक अंक उत्पन्न करते हैं, इसलिए हमारे पास <math>y' = B y + \beta </math> है। पहला अपरिवर्तनीय तात्पर्य यह है कि <math>r' = x' - y'^n</math>. हम <math>\beta</math> चुनना चाहते हैं जिससे ऊपर वर्णित अपरिवर्तनीयता बनाय रहे। इससे पता चलता है कि सदैव  ऐसा ही एक विकल्प होता है, जैसा कि नीचे सिद्ध किया जाएगा।


{{Math proof|title=Proof of existence and uniqueness of <math>\beta</math>|drop=hidden|proof=
By definition of a digit, <math>0 \leq \beta < B</math>, and by definition of a block of digits, <math>0 \leq \alpha < B^n</math>


The first invariant says that:
: <math>x' = y'^n + r'</math>
or
: <math>B^n x + \alpha = (B y + \beta)^n + r'.</math>
So, pick the largest integer <math>\beta</math> such that
: <math>(B y + \beta)^n \le B^n x + \alpha.</math>
Such a <math>\beta</math> always exists, since <math>0 \leq \beta < B</math> and if <math>\beta = 0</math> then <math>B^n y^n \le B^n x + \alpha</math>, but since <math>y^n \le x</math>, this is always true for <math>\beta = 0</math>. Thus, there will always be a <math>\beta</math> that satisfies the first invariant
Now consider the second invariant.  It says:
: <math>(y'+1)^n > x'</math>
or
: <math>(B y + \beta + 1)^n>B^n x + \alpha.</math>
Now, if <math>\beta</math> is not the largest admissible <math>\beta</math> for the first invariant as described above, then <math>\beta + 1</math> is also admissible, and we have
:<math>(B y + \beta + 1)^n \le B^n x + \alpha.</math>
This violates the second invariant, so to satisfy both invariants we must pick the largest <math>\beta</math> allowed by the first invariant.  Thus we have proven the existence and uniqueness of <math>\beta</math>.
}}
संक्षेप में, प्रत्येक पुनरावृत्ति पर:
संक्षेप में, प्रत्येक पुनरावृत्ति पर:
# होने देना <math>\alpha</math> मूलांक से अंकों का अगला संरेखित ब्लॉक बनें
# मान लीजिए <math>\alpha</math> मूलांक से अंकों का अगला संरेखित ब्लॉक बनें
# होने देना <math>x' = B^n x + \alpha</math>
# मान लीजिए <math>x' = B^n x + \alpha</math>
# होने देना <math>\beta</math> सबसे बड़ा हो <math>\beta</math> ऐसा है कि <math>(B y + \beta)^n \le B^n x + \alpha</math>
# मान लीजिए <math>\beta</math> सबसे बड़ा हो <math>\beta</math> ऐसा है कि <math>(B y + \beta)^n \le B^n x + \alpha</math>
# होने देना <math>y' = B y + \beta</math>
# मान लीजिए <math>y' = B y + \beta</math>
# होने देना <math>r' = x' - y'^n</math>
# मान लीजिए <math>r' = x' - y'^n</math>
अब, उस पर ध्यान दें <math>x = y^n + r</math>, तो हालत
अब, उस पर ध्यान दें <math>x = y^n + r</math>, तो स्थिति
: <math>(B y + \beta)^n \le B^n x + \alpha</math>
: <math>(B y + \beta)^n \le B^n x + \alpha</math>
के बराबर है
के समान है
: <math>(B y + \beta)^n - B^n y^n \le B^n r + \alpha</math>
: <math>(B y + \beta)^n - B^n y^n \le B^n r + \alpha</math>
और
और
: <math>r' = x' - y'^n = B^n x + \alpha - (B y + \beta)^n</math>
: <math>r' = x' - y'^n = B^n x + \alpha - (B y + \beta)^n</math>
के बराबर है
के समान है
: <math>r' = B^n r + \alpha - ((B y + \beta)^n - B^n y ^n).</math>
: <math>r' = B^n r + \alpha - ((B y + \beta)^n - B^n y ^n).</math>
इस प्रकार, हमें वास्तव में इसकी आवश्यकता नहीं है <math>x</math>, और तबसे <math>r = x - y^n</math> और <math>x<(y+1)^n</math>, <math>r<(y+1)^n-y^n</math> या <math>r<n y^{n-1}+O(y^{n-2})</math>, या <math>r<n x^{{n-1}\over n} + O(x^{{n-2}\over n})</math>, तो उपयोग करके <math>r</math> के बजाय <math>x</math> हम 1/ के कारक से समय और स्थान बचाते हैं<math>n</math>. यह भी <math>B^n y^n</math> हम नए परीक्षण में घटाते हैं, उसमें से एक को रद्द कर देते हैं <math>(B y + \beta)^n</math>, तो अब की सर्वोच्च शक्ति <math>y</math> हमें इसका मूल्यांकन करना होगा <math>y^{n-1}</math> इसके बजाय <math>y^n</math>.
 
 
इस प्रकार, हमें वास्तव में <math>x</math> की आवश्यकता नहीं है, और चूँकि <math>r = x - y^n</math> और <math>x<(y+1)^n</math>, <math>r<(y+1)^n-y^n</math>या <math>r<n y^{n-1}+O(y^{n-2})</math>, या <math>r<n x^{{n-1}\over n} + O(x^{{n-2}\over n})</math> इसलिए x के अतिरिक्त <math>r</math> का उपयोग करके हम 1/<math>n</math> के कारक द्वारा समय और स्थान बचाते हैं। साथ ही, नए परीक्षण में हम जो <math>B^n y^n</math> घटाते हैं, वह <math>(B y + \beta)^n</math> में से एक को समाप्त कर देता है, इसलिए अब <math>y</math> की उच्चतम शक्ति जिसका हमें मूल्यांकन करना है वह <math>y^n</math> के अतिरिक्त <math>y^{n-1}</math> है।


=== सारांश ===
=== सारांश ===
# आरंभ करें <math>r</math> और <math>y</math> से 0.
#r और y को 0 से प्रारंभ करें।
# वांछित [[दशमलव परिशुद्धता]] प्राप्त होने तक दोहराएँ:
# वांछित [[दशमलव परिशुद्धता]] प्राप्त होने तक दोहराएँ:
## होने देना <math>\alpha</math> मूलांक से अंकों का अगला संरेखित ब्लॉक बनें।
## मान लीजिए <math>\alpha</math> मूलांक से अंकों का अगला संरेखित ब्लॉक बनें।
## होने देना <math>\beta</math> सबसे बड़ा हो <math>\beta</math> ऐसा है कि <math>(B y + \beta)^n - B^n y^n \le B^n r + \alpha.</math>
## मान लीजिए <math>\beta</math> सबसे बड़ा हो <math>\beta</math> ऐसा है कि <math>(B y + \beta)^n - B^n y^n \le B^n r + \alpha.</math>
## होने देना <math>y' = B y + \beta</math>.
## मान लीजिए <math>y' = B y + \beta</math>.
## होने देना <math>r' = B^n r + \alpha - ((B y + \beta)^n - B^n y^n).</math>
## मान लीजिए <math>r' = B^n r + \alpha - ((B y + \beta)^n - B^n y^n).</math>
## सौंपना <math>y \leftarrow y'</math> और <math>r \leftarrow r'.</math>
## नियुक्‍त करें <math>y \leftarrow y'</math> और <math>r \leftarrow r'.</math>
# <math>y</math> ऐसा सबसे बड़ा पूर्णांक है <math>y^n<x B^k</math>, और <math>y^n+r=x B^k</math>, कहाँ <math>k</math> दशमलव बिंदु के बाद रेडिकैंड के अंकों की संख्या है जो उपभोग की गई है (एक नकारात्मक संख्या यदि एल्गोरिदम अभी तक दशमलव बिंदु तक नहीं पहुंचा है)।
#<math>y</math> सबसे बड़ा पूर्णांक है जैसे कि <math>y^n<x B^k</math>, और <math>y^n+r=x B^k</math>, , जहां <math>k</math> दशमलव बिंदु के बाद मूलांक के अंकों की संख्या है जो उपभोग किया गया है (एक ऋणात्मक संख्या यदि एल्गोरिदम अभी तक दशमलव बिंदु तक नहीं पहुंचा है)।


==कागज-और-पेंसिल nवाँ मूल ==
==कागज-और-पेंसिल nवाँ मूल ==
Line 92: Line 73:
             59 720 728 576
             59 720 728 576


ध्यान दें कि पहले या दो पुनरावृत्तियों के बाद प्रमुख पद हावी हो जाता है
ध्यान दें कि पहले या दो पुनरावृत्तियों के बाद प्रमुख पद <math>(B y + \beta)^n - B^n y^n</math> पर हावी होता है, इसलिए हम <math>B^n r + \alpha</math> को <math>n B^{n-1} y^{n-1}</math> से विभाजित करके <math>\beta</math> पर अधिकांशतः सही पहला अनुमान प्राप्त कर सकते हैं।
<math>(B y + \beta)^n - B^n y^n</math>, इसलिए हम अक्सर पहला अनुमान सही प्राप्त कर सकते हैं <math>\beta</math> विभाजित करके <math>B^n r + \alpha</math> द्वारा <math>n B^{n-1} y^{n-1}</math>.


== प्रदर्शन ==
== प्रदर्शन ==
प्रत्येक पुनरावृत्ति पर, सबसे अधिक समय लेने वाला कार्य चयन करना है <math>\beta</math>. हम जानते हैं कि वहाँ हैं <math>B</math> संभावित मान, ताकि हम पा सकें <math>\beta</math> का उपयोग करते हुए <math>O(\log(B))</math> तुलना. प्रत्येक तुलना के लिए मूल्यांकन की आवश्यकता होगी <math>(B y +\beta)^n - B^n y^n</math>. केवें पुनरावृत्ति में, <math>y</math> है <math>k</math> अंक, और बहुपद का मूल्यांकन किया जा सकता है <math>2 n - 4</math> तक का गुणनफल <math>k(n-1)</math> अंक और <math>n - 2</math> तक का अतिरिक्त <math>k(n-1)</math> अंक, एक बार जब हम की शक्तियां जान लेते हैं <math>y</math> और <math>\beta</math> के माध्यम से <math>n-1</math> के लिए <math>y</math> और <math>n</math> के लिए <math>\beta</math><math>\beta</math> इसकी एक सीमित सीमा है, इसलिए हम इसकी शक्तियां प्राप्त कर सकते हैं <math>\beta</math> निरंतर समय में. की शक्तियां हम प्राप्त कर सकते हैं <math>y</math> साथ <math>n-2</math> तक का गुणनफल <math>k(n-1)</math> अंक. यह मानते हुए <math>n</math>-अंकों के गुणन में समय लगता है <math>O(n^2)</math> और जोड़ने में समय लगता है <math>O(n)</math>, हम समय लेते हैं
प्रत्येक पुनरावृत्ति पर, सबसे अधिक समय लेने वाला कार्य <math>\beta</math> का चयन करना है। हम जानते हैं कि <math>B</math> संभावित मान हैं, इसलिए हम <math>O(\log(B))</math> तुलनाओं का उपयोग करके <math>\beta</math> पा सकते हैं। प्रत्येक तुलना के लिए <math>(B y +\beta)^n - B^n y^n</math> का मूल्यांकन करना आवश्यक होगा। Kवें पुनरावृत्ति में, <math>y</math> में <math>k</math> अंक हैं, और बहुपद का मूल्यांकन <math>k(n-1)</math> अंकों तक के <math>2 n - 4</math> गुणन और <math>k(n-1)</math> अंकों तक <math>n - 2</math> जोड़ के साथ किया जा सकता है, एक बार जब हम <math>y</math> के लिए <math>n-1</math> और <math>\beta</math> के लिए n के माध्यम से y और <math>\beta</math> की शक्तियों को जान लेते हैं। <math>\beta</math> की एक प्रतिबंधित सीमा है, इसलिए हम स्थिर समय में <math>\beta</math> की शक्तियां प्राप्त कर सकते हैं। हम <math>k(n-1)</math> अंकों तक <math>n-2</math> गुणन के साथ y की शक्तियाँ प्राप्त कर सकते हैं। यह मानते हुए कि n-अंकीय गुणन में <math>O(n^2)</math> समय लगता है और जोड़ने में <math>O(n)</math> समय लगता है, हम प्रत्येक तुलना के लिए समय <math>O(k^2 n^2)</math> लेते हैं, या <math>\beta</math> चुनने के लिए समय <math>O(k^2 n^2 \log(B))</math> लेते हैं। एल्गोरिथ्म का शेष भाग जोड़ और घटाव है जिसमें <math>O(k)</math> समय लगता है, इसलिए प्रत्येक पुनरावृत्ति में <math>O(k^2 n^2 \log(B))</math> लगता है। सभी <math>k</math> अंकों के लिए, हमें समय <math>O(k^3 n^2 \log(B))</math> चाहिए।
<math>O(k^2 n^2)</math> प्रत्येक तुलना या समय के लिए <math>O(k^2 n^2 \log(B))</math> लेना <math>\beta</math>. एल्गोरिथ्म का शेष भाग जोड़ और घटाव है जिसमें समय लगता है <math>O(k)</math>, तो प्रत्येक पुनरावृत्ति लेता है <math>O(k^2 n^2 \log(B))</math>. सभी के लिए <math>k</math> अंक, हमें समय चाहिए <math>O(k^3 n^2 \log(B))</math>.


केवल आंतरिक भंडारण की आवश्यकता है <math>r</math>, जो है <math>O(k)</math> kth पुनरावृत्ति पर अंक। इस एल्गोरिदम में सीमित मेमोरी उपयोग नहीं है, अंकगणित के अधिक प्राथमिक एल्गोरिदम के विपरीत, मानसिक रूप से गणना की जा सकने वाली अंकों की संख्या पर ऊपरी सीमा लगा दी गई है। दुर्भाग्य से, आवधिक इनपुट वाली कोई भी बाउंडेड मेमोरी स्टेट मशीन केवल आवधिक आउटपुट उत्पन्न कर सकती है, इसलिए ऐसे कोई एल्गोरिदम नहीं हैं जो तर्कसंगत संख्याओं से अपरिमेय संख्याओं की गणना कर सकें, और इस प्रकार कोई बाउंडेड मेमोरी रूट निष्कर्षण एल्गोरिदम नहीं हैं।
एकमात्र आंतरिक संचयन की आवश्यकता <math>r</math> है, जो kवें पुनरावृत्ति पर <math>O(k)</math> अंक है। इस एल्गोरिदम में सीमित मेमोरी उपयोग नहीं है, अंकगणित के अधिक प्राथमिक एल्गोरिदम के विपरीत, मानसिक रूप से गणना की जा सकने वाली अंकों की संख्या पर ऊपरी सीमा लगा दी गई है। दुर्भाग्य से, आवधिक इनपुट वाली कोई भी बाउंडेड मेमोरी स्टेट मशीन केवल आवधिक आउटपुट उत्पन्न कर सकती है, इसलिए ऐसे कोई एल्गोरिदम नहीं हैं जो तर्कसंगत संख्याओं से अपरिमेय संख्याओं की गणना कर सकें, और इस प्रकार कोई बाउंडेड मेमोरी रूट निष्कर्षण एल्गोरिदम नहीं हैं।


ध्यान दें कि आधार बढ़ाने से चयन करने में लगने वाला समय बढ़ जाता है <math>\beta</math> के एक कारक द्वारा <math>O(\log(B))</math>, लेकिन एक ही कारक द्वारा दी गई सटीकता प्राप्त करने के लिए आवश्यक अंकों की संख्या कम हो जाती है, और चूंकि एल्गोरिदम अंकों की संख्या में घन समय है, आधार बढ़ाने से समग्र गति मिलती है <math>O(\log^2(B))</math>. जब आधार रेडिकैंड से बड़ा होता है, तो एल्गोरिदम बाइनरी खोज में बदल जाता है, इसलिए यह इस प्रकार है कि यह एल्गोरिदम कंप्यूटर के साथ जड़ों की गणना के लिए उपयोगी नहीं है, क्योंकि यह हमेशा बहुत सरल बाइनरी खोज से बेहतर प्रदर्शन करता है, और इसमें समान मेमोरी जटिलता होती है।
ध्यान दें कि आधार बढ़ाने से <math>O(\log(B))</math> के कारक द्वारा <math>\beta</math> चुनने के लिए आवश्यक समय बढ़ जाता है, किंतु उसी कारक द्वारा दी गई स्पष्टता  प्राप्त करने के लिए आवश्यक अंकों की संख्या घट जाती है, और चूंकि एल्गोरिदम अंकों की संख्या में घन समय है, आधार बढ़ाने से <math>O(\log^2(B))</math> की समग्र गति मिलती है। जब आधार रेडिकैंड से बड़ा होता है, तो एल्गोरिदम बाइनरी खोज में बदल जाता है, इसलिए यह इस प्रकार है कि यह एल्गोरिदम कंप्यूटर के साथ जड़ों की गणना के लिए उपयोगी नहीं है, क्योंकि यह सदैव बहुत सरल बाइनरी खोज से उत्तम प्रदर्शन करता है, और इसमें समान मेमोरी जटिलता होती है।


== उदाहरण ==
== उदाहरण ==

Revision as of 12:30, 25 July 2023

शिफ्टिंग एनवें रूट कलन विधि एक सकारात्मक वास्तविक संख्या के एनवें रूट|एनवें रूट को निकालने के लिए एक एल्गोरिदम है, जो मूलांक के एन संख्यात्मक अंक में बदलाव से शुरू होकर पुनरावृत्त रूप से आगे बढ़ता है। सबसे महत्वपूर्ण, और लंबे विभाजन के समान तरीके से, प्रत्येक पुनरावृत्ति पर मूल का एक अंक उत्पन्न करता है।

शिफ्टिंग Nवें रूट एल्गोरिदम एक सकारात्मक वास्तविक संख्या के Nवें रूट को निकालने के लिए एक एल्गोरिदम है जो मूलांक के Nअंकों में बदलाव करके पुनरावृत्त रूप से आगे बढ़ता है, सबसे महत्वपूर्ण से प्रारंभ होता है, और लंबे विभाजन के समान विधि से प्रत्येक पुनरावृत्ति पर रूट का एक अंक उत्पन्न करता है।

एल्गोरिथम

संकेतन

मान लीजिए कि आप जिस संख्या प्रणाली का उपयोग कर रहे हैं उसका आधार है और निकाले जाने वाले मूल की डिग्री है। मान लीजिए कि अब तक संसाधित किया गया मूलांक है, अब तक निकाली गई जड़ है और शेषफल है। मान लीजिए मूलांक का अगला अंक है, और मूल का अगला अंक है। मान लीजिए अगले पुनरावृत्ति के लिए का नया मान है, अगले पुनरावृत्ति के लिए का नया मान है, और अगले पुनरावृत्ति के लिए का नया मान है। ये सभी पूर्णांक हैं.

अपरिवर्तनीय

प्रत्येक पुनरावृत्ति पर, अपरिवर्तनीय कायम रहेगा। अपरिवर्तनीय धारण करेगा। इस प्रकार , x के nवें मूल से कम या उसके समान सबसे बड़ा पूर्णांक है, और r शेषफल है।

आरंभीकरण

और का प्रारंभिक मान 0 होना चाहिए। पहले पुनरावृत्ति के लिए का मान मूलांक के n अंकों का सबसे महत्वपूर्ण संरेखित ब्लॉक होना चाहिए। अंकों के एक संरेखित ब्लॉक का अर्थ है अंकों का एक ब्लॉक संरेखित करना जिससे दशमलव बिंदु ब्लॉकों के बीच आ जाए उदाहरण के लिए, 123.4 में दो अंकों का सबसे महत्वपूर्ण संरेखित ब्लॉक 01 है, अगला सबसे महत्वपूर्ण 23 है, और तीसरा सबसे महत्वपूर्ण 40 है।

मुख्य लूप

प्रत्येक पुनरावृत्ति पर हम मूलांक के अंकों में बदलाव करते हैं, इसलिए हमारे पास है और हम मूल का एक अंक उत्पन्न करते हैं, इसलिए हमारे पास है। पहला अपरिवर्तनीय तात्पर्य यह है कि . हम चुनना चाहते हैं जिससे ऊपर वर्णित अपरिवर्तनीयता बनाय रहे। इससे पता चलता है कि सदैव ऐसा ही एक विकल्प होता है, जैसा कि नीचे सिद्ध किया जाएगा।


संक्षेप में, प्रत्येक पुनरावृत्ति पर:

  1. मान लीजिए मूलांक से अंकों का अगला संरेखित ब्लॉक बनें
  2. मान लीजिए
  3. मान लीजिए सबसे बड़ा हो ऐसा है कि
  4. मान लीजिए
  5. मान लीजिए

अब, उस पर ध्यान दें , तो स्थिति

के समान है

और

के समान है


इस प्रकार, हमें वास्तव में की आवश्यकता नहीं है, और चूँकि और , या , या इसलिए x के अतिरिक्त का उपयोग करके हम 1/ के कारक द्वारा समय और स्थान बचाते हैं। साथ ही, नए परीक्षण में हम जो घटाते हैं, वह में से एक को समाप्त कर देता है, इसलिए अब की उच्चतम शक्ति जिसका हमें मूल्यांकन करना है वह के अतिरिक्त है।

सारांश

  1. r और y को 0 से प्रारंभ करें।
  2. वांछित दशमलव परिशुद्धता प्राप्त होने तक दोहराएँ:
    1. मान लीजिए मूलांक से अंकों का अगला संरेखित ब्लॉक बनें।
    2. मान लीजिए सबसे बड़ा हो ऐसा है कि
    3. मान लीजिए .
    4. मान लीजिए
    5. नियुक्‍त करें और
  3. सबसे बड़ा पूर्णांक है जैसे कि , और , , जहां दशमलव बिंदु के बाद मूलांक के अंकों की संख्या है जो उपभोग किया गया है (एक ऋणात्मक संख्या यदि एल्गोरिदम अभी तक दशमलव बिंदु तक नहीं पहुंचा है)।

कागज-और-पेंसिल nवाँ मूल

जैसा कि ऊपर उल्लेख किया गया है, यह एल्गोरिथ्म लंबे विभाजन के समान है, और यह स्वयं को उसी अंकन के लिए उधार देता है:

1. 4 4 2 2 4

    ——————————————————————
_ 3/ 3.000 000 000 000 000
 \/  1                        = 3(10×0)2×1     +3(10×012+13
     —
     2 000
     1 744                    = 3(10×1)2×4     +3(10×142+43
     —————
       256 000
       241 984                = 3(10×14)2×4    +3(10×1442+43
       ———————
        14 016 000
        12 458 888            = 3(10×144)2×2   +3(10×14422+23
        ——————————
         1 557 112 000
         1 247 791 448        = 3(10×1442)2×2  +3(10×144222+23
         —————————————
           309 320 552 000
           249 599 823 424    = 3(10×14422)2×4 +3(10×1442242+43
           ———————————————
            59 720 728 576

ध्यान दें कि पहले या दो पुनरावृत्तियों के बाद प्रमुख पद पर हावी होता है, इसलिए हम को से विभाजित करके पर अधिकांशतः सही पहला अनुमान प्राप्त कर सकते हैं।

प्रदर्शन

प्रत्येक पुनरावृत्ति पर, सबसे अधिक समय लेने वाला कार्य का चयन करना है। हम जानते हैं कि संभावित मान हैं, इसलिए हम तुलनाओं का उपयोग करके पा सकते हैं। प्रत्येक तुलना के लिए का मूल्यांकन करना आवश्यक होगा। Kवें पुनरावृत्ति में, में अंक हैं, और बहुपद का मूल्यांकन अंकों तक के गुणन और अंकों तक जोड़ के साथ किया जा सकता है, एक बार जब हम के लिए और के लिए n के माध्यम से y और की शक्तियों को जान लेते हैं। की एक प्रतिबंधित सीमा है, इसलिए हम स्थिर समय में की शक्तियां प्राप्त कर सकते हैं। हम अंकों तक गुणन के साथ y की शक्तियाँ प्राप्त कर सकते हैं। यह मानते हुए कि n-अंकीय गुणन में समय लगता है और जोड़ने में समय लगता है, हम प्रत्येक तुलना के लिए समय लेते हैं, या चुनने के लिए समय लेते हैं। एल्गोरिथ्म का शेष भाग जोड़ और घटाव है जिसमें समय लगता है, इसलिए प्रत्येक पुनरावृत्ति में लगता है। सभी अंकों के लिए, हमें समय चाहिए।

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

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

उदाहरण

बाइनरी में 2 का वर्गमूल

      1. 0 1 1 0 1
    ------------------
_ /10.00 00 00 00 00 1
 \/1+1
     ----- ----
      1 00 100
         0 + 0
     -------- -----
      1 00 00 1001
        10 01 + 1
     -------- ------
         1 11 00 10101
         1 01 01 + 1
         ------- -------
            1 11 00 101100
                  0 + 0
            -------- --------
            1 11 00 00 1011001
            1 01 10 01 1
            ----------
               1 01 11 शेष

3 का वर्गमूल

     1. 7 3 2 0 5
    ----------------------
_ / 3.00 00 00 00 00
 \/ 1 = 20×0×1+1^2
     -
     2 00
     1 89 = 20×1×7+7^2 (27 x 7)
     ----
       11 00
       10 29 = 20×17×3+3^2 (343 x 3)
       -----
          71 00
          69 24 = 20×173×2+2^2 (3462 x 2)
          -----
           1 76 00
                 0 = 20×1732×0+0^2 (34640 x 0)
           -------
           1 76 00 00
           1 73 20 25 = 20×17320×5+5^2 (346405 x 5)
           ----------
              2 79 75

5 का घनमूल

     1. 7 0 9 9 7
    ----------------------
_ 3/ 5. 000 000 000 000 000
 \/ 1 = 300×(0^2)×1+30×0×(1^2)+1^3
     -
     4 000
     3 913 = 300×(1^2)×7+30×1×(7^2)+7^3
     -----
        87 000
             0 = 300×(17^2)×0+30×17×(0^2)+0^3
       -------
        87 000 000
        78 443 829 = 300×(170^2)×9+30×170×(9^2)+9^3
        ----------
         8 556 171 000
         7 889 992 299 = 300×(1709^2)×9+30×1709×(9^2)+9^3
         -----------------
           666 178 701 000
           614 014 317 973 = 300×(17099^2)×7+30×17099×(7^2)+7^3
           ---------------
            52 164 383 027

7 का चौथा मूल

     1. 6 2 6 5 7
    ----------------------
_ 4/ 7.0000 0000 0000 0000 0000
 \/ 1 = 4000×(0^3)×1+600×(0^2)×(1^2)+40×0×(1^3)+1^4
     -
     6 0000
     5 5536 = 4000×(1^3)×6+600×(1^2)×(6^2)+40×1×(6^3)+6^4
     ------
       4464 0000
       3338 7536 = 4000×(16^3)×2+600×(16^2)×(2^2)+40×16×(2^3)+2^4
       ---------
       1125 2464 0000
       1026 0494 3376 = 4000×(162^3)×6+600×(162^2)×(6^2)+40×162×(6^3)+6^4
       --------------
         99 1969 6624 0000
         86 0185 1379 0625 = 4000×(1626^3)×5+600×(1626^2)×(5^2)+
         ----------------- 40×1626×(5^3)+5^4
         13 1784 5244 9375 0000
         12 0489 2414 6927 3201 = 4000×(16265^3)×7+600×(16265^2)×(7^2)+
         ---------------------- 40×16265×(7^3)+7^4
          1 1295 2830 2447 6799

यह भी देखें

बाहरी संबंध