等式中x值的迭代

问题描述 投票:-3回答:3

我已经设置了一个任务,迭代计算给定公式的x的值:x3 - 3x + 4 = 0 **使用反复试验。代码将首先插入-1.5作为其第一个猜测,然后从那里开始或向下工作以尝试获得答案0.每次在公式中插入数字时代码应输出“Answer ##太大/小“

我已经启动了代码但是我有点卡住,因为它只执行了两次然后停止。我使用了一个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)
python iteration python-3.4 equation equation-solving
3个回答
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)

0
投票

你混淆了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以获得一点“摆动空间”。


0
投票

我认为您需要将所有内容放在一个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,因为当你为0.1选择guess的一步时,你的计算不太可能是0。换句话说,calculation == 0将永远是false,循环永远不会停止。因此,我使用calculation的公差值(与所用步骤相同)检查0是否足够接近0.1。在python 3.5或更高版本中,您可以使用数学模块中的math.isclose执行相同的检查。

© www.soinside.com 2019 - 2024. All rights reserved.