回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<pre><code>def fx(x):
v = float(x*x*x - 5*x - 7)
return v
err = int(input("Enter zeroes in approxiamtion in solution: "))
b = float(input("Enter upper limit for root: "))
a = float(input("Enter lower limit for root: "))
c = 0.0
while fx(c) > (1 * 10 ** -err):
c = b - ((b - a)/(fx(b) - fx(a))) * fx(b)
print(a, b, c, sep=', ')
a = b
b = c
# c = 0
print()
print("The root is approximately = ", b)
</code></pre>
<p>为什么我在执行这段代码时会出现零除法错误,即使循环给出了正确的值,尽管有错误?你知道吗</p>
<p>编辑:我把^运算符改为**,去掉了c=0,但现在答案甚至不接近实际答案。^接线员奇怪地给了我正确的答案。你知道吗</p>
<p>带**运算符的输出:</p>
<pre><code>Enter zeroes in approxiamtion in solution: 3
Enter upper limit for root: 2
Enter lower limit for root: 1
The root is approximately = 2.0
</code></pre>
<p>使用^运算符输出:</p>
<pre><code>Enter zeroes in approxiamtion in solution: 3
Enter upper limit for root: 2
Enter lower limit for root: 1
1.0, 2.0, 6.5
Traceback (most recent call last):
2.0, 6.5, 2.1658986175115205
File "C:/Users/anves/PycharmProjects/nt/nt.py", line 46, in <module>
c = b - (((b - a)/(fx(b) - fx(a))) * fx(b))
6.5, 2.1658986175115205, 2.302797651275858
ZeroDivisionError: float division by zero
2.1658986175115205, 2.302797651275858, 2.934211734811194
2.302797651275858, 2.934211734811194, 2.705017710718186
2.934211734811194, 2.705017710718186, 2.7438299655247143
2.705017710718186, 2.7438299655247143, 2.7474171932954787
2.7438299655247143, 2.7474171932954787, 2.7473464241055843
2.7474171932954787, 2.7473464241055843, 2.7473465403033757
2.7473464241055843, 2.7473465403033757, 2.747346540307211
2.7473465403033757, 2.747346540307211, 2.747346540307211
</code></pre>
<p>最后一个值是未打印的正确值?你知道吗</p>