问题描述
我有以下简单的python程序,可以使用二分法找到方程的根:
from numpy import exp
#
def fun(x):
return 5.0+4.0*x-exp(x)
#
a=3
b=10.0
eps=1.0e-15
#
fa=fun(a)
fb=fun(b)
#
if fa*fb>0:
print("wrong interval!!!",fa,fb)
exit()
#
iter=1
while (b-a)>eps:
c=(a+b)/2.0
fc=fun(c)
if fc==0:
print("x = ",c)
exit()
if fc*fa>0:
a=c
fa=fc
else:
b=c
fb=fc
iter+=1
#
print("x = ",c)
print("accuracy = ",'{:.2e}'.format(b-a))
print("f(",c,") =",fun(c))
print(iter," iterations needed")
如果我输入了错误的时间间隔(例如a = 3),则表示这是错误的时间间隔,但是无论如何它都会继续给出(显然)错误的结果和四行
Morover,内核死亡(我正在使用jupyter)。你能帮我吗?
解决方法
这可能是因为您需要在if语句完成后说出是否为假,然后添加else语句,否则执行其余代码。
,您应该使用sys.exit("optional custom message")
而不是exit()
这会引发SystemExit
异常,而仅exit()
仅在解释器的上下文中有意义。
import sys
# logic here
if "something bad":
sys.exit("optional custom message")
差异在这里详细描述! https://stackoverflow.com/a/19747562/4541045