【Python】二分法求函数零点

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()

静态图

猜你喜欢

转载自blog.csdn.net/sinat_36907262/article/details/78218848