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अंकों में बदलाव करके पुनरावृत्त रूप से आगे बढ़ता है, सबसे महत्वपूर्ण से प्रारंभ होता है, और लंबे विभाजन के समान विधि से प्रत्येक पुनरावृत्ति पर रूट का एक अंक उत्पन्न करता है।
'''स्थानांतरण Nवें मूल एल्गोरिदम''' एक धनात्मक वास्तविक संख्या के Nवें मूल को निकालने के लिए एक एल्गोरिदम है जो मूलांक के Nअंकों में परिवर्तन करके पुनरावृत्त रूप से आगे बढ़ता है, अधिक महत्वपूर्ण से प्रारंभ होता है, और लंबे विभाजन के समान विधि से प्रत्येक पुनरावृत्ति पर मूल का एक अंक उत्पन्न करता है।


== एल्गोरिथम                                                                                                        ==
== एल्गोरिथम                                                                                                        ==
Line 9: Line 9:
मान लीजिए कि आप जिस संख्या प्रणाली का उपयोग कर रहे हैं उसका आधार <math>B                                                                                                                                                                                                           
मान लीजिए कि आप जिस संख्या प्रणाली का उपयोग कर रहे हैं उसका आधार <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> है और निकाले जाने वाले मूल की डिग्री <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>, x के nवें मूल से कम या उसके समान सबसे बड़ा पूर्णांक है, और r शेषफल है।
प्रत्येक पुनरावृत्ति पर, अपरिवर्तनीय <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> का मान मूलांक के n अंकों का सबसे महत्वपूर्ण संरेखित ब्लॉक होना चाहिए। <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>\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>
Line 35: Line 35:
: <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> इसलिए 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>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> है।


=== सारांश ===
=== सारांश ===
Line 46: Line 45:
## मान लीजिए <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वाँ मूल ==
जैसा कि ऊपर उल्लेख किया गया है, यह एल्गोरिथ्म लंबे विभाजन के समान है, और यह स्वयं को उसी अंकन के लिए उधार देता है:       
जैसा कि ऊपर उल्लेख किया गया है, यह एल्गोरिथ्म लंबे विभाजन के समान है, और यह स्वयं को उसी अंकन के लिए उधार देता है:       


{{Font color|red||1}}. {{Font color|green||4}}   {{Font color|blue||4}}   {{Font color|magenta||2}}   {{Font color|gold||2}}   {{Font color|cyan||4}}
{{Font color|red||1}}. {{Font color|green||4}} {{Font color|blue||4}} {{Font color|magenta||2}} {{Font color|gold||2}} {{Font color|cyan||4}}
    ——————————————————————
  ——————————————————————
  _ {{Font color|#444444||3}}/ 3.{{Font color|darkred||000}} {{Font color|darkgreen||000}} {{Font color|darkblue||000}} {{Font color|darkmagenta||000}} {{Font color|darkcyan||000}}
  _ {{Font color|#444444||3}}/ 3.{{Font color|darkred||000}} {{Font color|darkgreen||000}} {{Font color|darkblue||000}} {{Font color|darkmagenta||000}} {{Font color|darkcyan||000}}
   \/ {{Font color|red||1}}                       = {{Font color|#444444||3}}(10×{{Font color|gray||0}})<sup>2</sup>×{{Font color|red||1}}     +{{Font color|#444444||3}}(10×{{Font color|gray||0}})×{{Font color|red||1}}<sup>2</sup>+{{Font color|red||1}}<sup>3</sup>
   \/ {{Font color|red||1}} = {{Font color|#444444||3}}(10×{{Font color|gray||0}})<sup>2</sup>×{{Font color|red||1}} +{{Font color|#444444||3}}(10×{{Font color|gray||0}})×{{Font color|red||1}}<sup>2</sup>+{{Font color|red||1}}<sup>3</sup>
     
 
      2 {{Font color|darkred||000}}
  2 {{Font color|darkred||000}}
      1 744                   = {{Font color|#444444||3}}(10×{{Font color|red||1}})<sup>2</sup>×{{Font color|green||4}}     +{{Font color|#444444||3}}(10×{{Font color|red||1}})×{{Font color|green||4}}<sup>2</sup>+{{Font color|green||4}}<sup>3</sup>
  1 744 = {{Font color|#444444||3}}(10×{{Font color|red||1}})<sup>2</sup>×{{Font color|green||4}} +{{Font color|#444444||3}}(10×{{Font color|red||1}})×{{Font color|green||4}}<sup>2</sup>+{{Font color|green||4}}<sup>3</sup>
      —————
  —————
        256 {{Font color|darkgreen||000}}
  256 {{Font color|darkgreen||000}}
        241 984               = {{Font color|#444444||3}}(10×{{Font color|red||1}}{{Font color|green||4}})<sup>2</sup>×{{Font color|blue||4}}   +{{Font color|#444444||3}}(10×{{Font color|red||1}}{{Font color|green||4}})×{{Font color|blue||4}}<sup>2</sup>+{{Font color|blue||4}}<sup>3</sup>
  241 984 = {{Font color|#444444||3}}(10×{{Font color|red||1}}{{Font color|green||4}})<sup>2</sup>×{{Font color|blue||4}} +{{Font color|#444444||3}}(10×{{Font color|red||1}}{{Font color|green||4}})×{{Font color|blue||4}}<sup>2</sup>+{{Font color|blue||4}}<sup>3</sup>
        ———————
  ———————
        14 016 {{Font color|darkblue||000}}
  14 016 {{Font color|darkblue||000}}
        12 458 888           = {{Font color|#444444||3}}(10×{{Font color|red||1}}{{Font color|green||4}}{{Font color|blue||4}})<sup>2</sup>×{{Font color|magenta||2}}   +{{Font color|#444444||3}}(10×{{Font color|red||1}}{{Font color|green||4}}{{Font color|blue||4}})×{{Font color|magenta||2}}<sup>2</sup>+{{Font color|magenta||2}}<sup>3</sup>
  12 458 888 = {{Font color|#444444||3}}(10×{{Font color|red||1}}{{Font color|green||4}}{{Font color|blue||4}})<sup>2</sup>×{{Font color|magenta||2}} +{{Font color|#444444||3}}(10×{{Font color|red||1}}{{Font color|green||4}}{{Font color|blue||4}})×{{Font color|magenta||2}}<sup>2</sup>+{{Font color|magenta||2}}<sup>3</sup>
        ——————————
  ——————————
          1 557 112 {{Font color|darkmagenta||000}}
  1 557 112 {{Font color|darkmagenta||000}}
          1 247 791 448       = {{Font color|#444444||3}}(10×{{Font color|red||1}}{{Font color|green||4}}{{Font color|blue||4}}{{Font color|magenta||2}})<sup>2</sup>×{{Font color|gold||2}} +{{Font color|#444444||3}}(10×{{Font color|red||1}}{{Font color|green||4}}{{Font color|blue||4}}{{Font color|magenta||2}})×{{Font color|gold||2}}<sup>2</sup>+{{Font color|gold||2}}<sup>3</sup>
  1 247 791 448 = {{Font color|#444444||3}}(10×{{Font color|red||1}}{{Font color|green||4}}{{Font color|blue||4}}{{Font color|magenta||2}})<sup>2</sup>×{{Font color|gold||2}} +{{Font color|#444444||3}}(10×{{Font color|red||1}}{{Font color|green||4}}{{Font color|blue||4}}{{Font color|magenta||2}})×{{Font color|gold||2}}<sup>2</sup>+{{Font color|gold||2}}<sup>3</sup>
          —————————————
  —————————————
            309 320 552 {{Font color|darkcyan||000}}
  309 320 552 {{Font color|darkcyan||000}}
            249 599 823 424   = {{Font color|#444444||3}}(10×{{Font color|red||1}}{{Font color|green||4}}{{Font color|blue||4}}{{Font color|magenta||2}}{{Font color|gold||2}})<sup>2</sup>×{{Font color|cyan||4}} +{{Font color|#444444||3}}(10×{{Font color|red||1}}{{Font color|green||4}}{{Font color|blue||4}}{{Font color|magenta||2}}{{Font color|gold||2}})×{{Font color|cyan||4}}<sup>2</sup>+{{Font color|cyan||4}}<sup>3</sup>
  249 599 823 424 = {{Font color|#444444||3}}(10×{{Font color|red||1}}{{Font color|green||4}}{{Font color|blue||4}}{{Font color|magenta||2}}{{Font color|gold||2}})<sup>2</sup>×{{Font color|cyan||4}} +{{Font color|#444444||3}}(10×{{Font color|red||1}}{{Font color|green||4}}{{Font color|blue||4}}{{Font color|magenta||2}}{{Font color|gold||2}})×{{Font color|cyan||4}}<sup>2</sup>+{{Font color|cyan||4}}<sup>3</sup>
            ———————————————
  ———————————————
            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>B^n r + \alpha</math> को <math>n B^{n-1} y^{n-1}</math> से विभाजित करके <math>\beta</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>\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>r</math> है, जो kवें पुनरावृत्ति पर <math>O(k)</math> अंक है। इस एल्गोरिदम में सीमित मेमोरी उपयोग नहीं है, अंकगणित के अधिक प्राथमिक एल्गोरिदम के विपरीत, मानसिक रूप से गणना की जा सकने वाली अंकों की संख्या पर ऊपरी सीमा लगा दी गई है। दुर्भाग्य से, आवधिक इनपुट वाली कोई भी बाउंडेड मेमोरी स्टेट मशीन केवल आवधिक आउटपुट उत्पन्न कर सकती है, इसलिए ऐसे कोई एल्गोरिदम नहीं हैं जो तर्कसंगत संख्याओं से अपरिमेय संख्याओं की गणना कर सकें, और इस प्रकार कोई बाउंडेड मेमोरी रूट निष्कर्षण एल्गोरिदम नहीं हैं।
एकमात्र आंतरिक संचयन की आवश्यकता <math>r</math> है, जो kवें पुनरावृत्ति पर <math>O(k)</math> अंक है। इस एल्गोरिदम में सीमित मेमोरी उपयोग नहीं है, अंकगणित के अधिक प्राथमिक एल्गोरिदम के विपरीत, मानसिक रूप से गणना की जा सकने वाली अंकों की संख्या पर ऊपरी सीमा लगा दी गई है। दुर्भाग्य से, आवधिक इनपुट वाली कोई भी बाउंडेड मेमोरी स्टेट मशीन केवल आवधिक आउटपुट उत्पन्न कर सकती है, इसलिए ऐसे कोई एल्गोरिदम नहीं हैं जो तर्कसंगत संख्याओं से अपरिमेय संख्याओं की गणना कर सकें, और इस प्रकार कोई बाउंडेड मेमोरी मूल निष्कर्षण एल्गोरिदम नहीं हैं।


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


== उदाहरण ==
== उदाहरण ==
Line 86: Line 85:
=== बाइनरी में 2 का वर्गमूल ===
=== बाइनरी में 2 का वर्गमूल ===


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


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


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


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


== यह भी देखें ==
== यह भी देखें ==
*[[वर्गमूलों की गणना की विधियाँ]]
*[[वर्गमूलों की गणना की विधियाँ]]
* nवाँ रूट एल्गोरिथम
* nवे मूल एल्गोरिथम


== बाहरी संबंध ==
== बाहरी संबंध ==

Revision as of 10:25, 31 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

यह भी देखें

बाहरी संबंध