python写二分法求函数零点
#coding:utf-8
import math
import numpy as np
import matplotlib.pyplot as plt
def f(x):
y = 0.5*x**2 - 2
#y = math.log10(x)
return y
def bin():
a = input("a = ")
b = input("b = ")
c = input("c = ")
while(1):
plt.plot([a, b], [f(a), f(b)])
print a, b
x = (a + b)/2
if f(x)==0:
break
elif ( f(x)*f(a)<0 ):
b = x
elif ( f(x)*f(a)>0 ):
a = x
elif (a > b):
print "a,b范围内无解"
if abs(a - b)< c:
break
print "二分法估计解为:x = ",x
#draw
x = np.linspace(-1,15,500) #给定x值的范围,并给予y函数赋值
plt.figure(figsize = (7,4)) #设置图的尺寸
plt.plot(x,f(x))
plt.axis([-1,10,-4,35]) #设置x,y坐标起始点
plt.xlabel("x")
plt.ylabel("y")
plt.title("Binary search")
plt.grid(True) #绘制网格
bin()
plt.show()