簡體   English   中英

方程中 x 值的迭代

[英]Iteration for x value in equation

我已經設置了一個任務來迭代計算給定公式的 x 值: x 3 - 3x + 4 = 0** 使用反復試驗。 代碼將首先插入 -1.5 作為它的第一次猜測,然后從那里向上或向下工作以嘗試得到答案 0。每次將數字插入等式時,代碼應輸出“答案 ## 太大/太小” ”

我已經啟動了代碼,但我有點卡住了,因為它只執行兩次然后停止。 我使用了一個 while 循環,但我認為我沒有正確使用它或者它可能是解決這個問題的錯誤方法。 任何建議/代碼片段將不勝感激。

import cmath
end = ''

num = 0
guess = -1.5
calculation = (guess**3 - guess * 3 + 4)
print(calculation)
while calculation < 0:
    print("Guess is too small")
else:
    print("Guess is too large")

while calculation != 0 and calculation < 0:
    guess = guess + 0.1 
    calculation = (guess**3 - guess * 3 + 4)
else:
    guess = guess-0.1
    calculation = ((guess**3)-3*guess+4)
    print(calculation)

你混淆了whileif的概念。 你需要兩者......好吧,對於我認為你正在嘗試做的事情,請嘗試以下大綱。

while calculation != 0:
    if calculation < 0:
        # Guess is too small; print message and adjust guess
    else:
        # Guess is too large; print message and adjust guess

我認為您可以為“if”的每個分支填寫邏輯。 請特別注意,只有在您得到確切答案時,這才會終止。 如果您想以一點寬容度工作,則必須調整退出條件calculation != 0以獲得一點“擺動空間”。

不清楚你在找什么,但這應該讓你開始:

import cmath

guess = -1.5

#put calculations that you use more than once in a function
def calc(a): 
    return round((a**3-a*3+4),1) #round your result

calculation=calc(guess)

while calculation !=0:
    if calculation<0:
        print('Number is too small')
        guess+=0.1
        calculation=calc(guess)
    elif calculation>0:
        print('Number is too large')
        guess-=0.1
        calculation=calc(guess)

我認為您需要將所有內容都放在一個while循環中,在其中檢查您的計算是否與預期結果匹配,如果不匹配則調整猜測,如果是,則中斷循環。

guess = -1.5

while True:
    calculation = ((guess**3)-3*guess+4)
    print(calculation)

    if abs(calculation - 0) < 0.1:
        print("Correct guess: ", guess)
        break

    elif calculation < 0:
        print("Guess is too small")
        guess = guess + 0.1 

    elif calculation > 0:
        print("Guess is too large")
        guess = guess - 0.1

請注意,我不比較calculation == 0因為當您為guess選擇步長0.1 ,您的計算不太可能正好是0 換句話說, calculation == 0將始終為false ,循環將永遠不會停止。 因此,我使用0.1的容差值(與使用的步驟相同)檢查calculation是否足夠接近0 在 python 3.5 或更高版本中,您可以使用 math 模塊中的math.isclose來執行相同的檢查。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM