def f(x):
# y = 2 - x**2 # 函数表达式
y = x**3 - 2*x + 2
return y
def main():
print("请输入左右端点值:a、b")
a = float(input("左端点a = "))
b = float(input("右端点b = "))
while f(a)*f(b) > 0:
print("请重新输入左右端点值:a、b")
a = float(input("左端点a = "))
b = float(input("右端点b = "))
e = 0.00000001 # 精度要求
x1 = (a+b)/2 # 区间中点
# while abs(f(x1)) > e: # 判断误差
while abs(b - a) > e:
if f(a)*f(x1) < 0:
b = x1 # 重置右端点
else:
a = x1 # 重置左端点
x1 = (a+b)/2 # 重置区间中点
print("*******************************")
print("函数零点近似值:x1 =", x1)
print("b-a =", b - a)
print("将x1代入,y =", f(x1)) # 代入零点近似值,得函数值
if __name__ == '__main__':
main()
运行效果:
请输入左右端点值:a、b
左端点a = -2
右端点b = 0
*******************************
函数零点近似值:x1 = -1.76929235085845
b-a = 7.450580596923828e-09
将x1代入,y = 2.498355122781959e-08