इसका उत्तर देने में थोड़ी देर हो सकती है लेकिन वर्गमूल की गणना करने का सबसे सरल और सटीक तरीका न्यूटन की विधि है।
आपके पास एक संख्या है जिसे आप इसके वर्गमूल की गणना करना चाहते हैं (num)
और आपको इसके वर्गमूल का अनुमान है (estimate)
। अनुमान किसी भी संख्या में 0 से बड़ा हो सकता है, लेकिन एक संख्या जो समझ में आता है पुनरावर्ती कॉल गहराई को काफी कम कर देता है।
new_estimate = (estimate + num / estimate) / 2
यह रेखा उन 2 मापदंडों के साथ अधिक सटीक अनुमान की गणना करती है। आप फ़ंक्शन में new_estimate मान पास कर सकते हैं और एक और new_estimate की गणना कर सकते हैं जो पिछले एक की तुलना में अधिक सटीक है या आप इस तरह एक पुनरावर्ती फ़ंक्शन परिभाषा बना सकते हैं।
def newtons_method(num, estimate):
# Computing a new_estimate
new_estimate = (estimate + num / estimate) / 2
print(new_estimate)
# Base Case: Comparing our estimate with built-in functions value
if new_estimate == math.sqrt(num):
return True
else:
return newtons_method(num, new_estimate)
उदाहरण के लिए हमें 30 के वर्गमूल को खोजने की आवश्यकता है। हम जानते हैं कि परिणाम 5 और 6 के बीच है।
newtons_method(30,5)
संख्या 30 है और अनुमान है 5. प्रत्येक पुनरावर्ती कॉल से परिणाम हैं:
5.5
5.477272727272727
5.4772255752546215
5.477225575051661
अंतिम परिणाम संख्या के वर्गमूल का सबसे सटीक गणना है। यह बिल्ट-इन फ़ंक्शन math.sqrt () के समान ही है।