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

静态图

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值