/ / पायथन में पायटा और एप्सिलॉन का उपयोग करके क्यूबेड रूट ढूंढना - अजगर, अजगर-एक्सएक्सएक्स

पायथन, अजगर, अजगर 3.x में डेल्टा और एप्सिलॉन का उपयोग करते हुए घनीभूत जड़ का पता लगाना

मैं एक प्रोग्राम लिखने की कोशिश कर रहा हूं जो डेल्टा और एप्सिलॉन का उपयोग करके क्यूबेड रूट पाता है लेकिन मैं "अटक" रहा हूं क्योंकि मैं यह पता नहीं लगा सकता हूं कि मेरा प्रोग्राम एक अनंत लूप में क्यों चलता है

    num = 100

epsilon = 0.01
guess = num/3.0


while abs(guess**3 - num) >= epsilon:
delta = abs(guess**3 - num)/100
if guess**3 > num:
guess = (guess - delta)
if guess**3 < num:
guess = (guess + delta)
print("Guess:", guess)

उत्तर:

जवाब के लिए 2 № 1

पहली बात, आपको उपयोग करना चाहिए if/elif अलग के बजाय if ब्लॉक।

निम्नलिखित को धयान मे रखते हुए: कब guess**3 > num है True, आप अपडेट करें guess इसके मूल्य को कम करके ताकि guess**3 < num (अगली अगर हालत) बन जाता है True फिर से, जो शुरुआती अपडेट को उलट देता है। संक्षेप में, का मान guess उस लूप में कभी नहीं बदला जाता है, और लूप अनंत तक घूमता है।

दूसरे आप नियमित करना चाहते हैं delta मूल्य (इसे दंडित करें) क्योंकि यह मूल्य के रूप में बड़ा खतरनाक हो सकता है num बढ़ती है।

num = 100

epsilon = 0.01
guess = num/3.0

while abs(guess**3 - num) >= epsilon:
delta = abs(guess**3 - num)/num
if guess**3 > num:
guess = (guess - delta*epsilon**0.5)
elif guess**3 < num:
guess = (guess + delta*epsilon**0.5)
print("Guess:", guess)