Python二分法求方程的根

Python二分法求方程的根

对于区间[a,b]上连续不断且f(a)·f(b)<0的函数y=f(x),通过不断地把函数f(x)的零点所在的区间一分为二,使区间的两个端点逐步逼近零点,进而得到零点近似值的方法叫二分法。
注意双击代码框可以横屏,更方便查看:)
下面用二分法求解方程x3-x2+x-1=0

def func(x):
    return x**3-x**2+x-1

a=-1
b=2
fa=func(a)
fb=func(b)
while a<=b:
    x0=(a+b)/2
    fx0=func(x0)   
    if abs(fx0)<10e-6:
        print('x0:',x0,fx0,'<10e-6')
        print(x0,'是用二分法求解方程的根')
        break`在这里插入代码片`
    if fa*fx0<0:
        b=x0
        fb=fx0
        print('解在左侧,a:',a,'  b:',b,'  x0:',x0)
    elif fb*fx0<0:
        a=x0
        fa=fx0
        print('解在右侧,a:',a,'  b:',b,'  x0:',x0)

运行结果

解在右侧,a: 0.5 b: 2 x0: 0.5
解在左侧,a: 0.5 b: 1.25 x0: 1.25
解在右侧,a: 0.875 b: 1.25 x0: 0.875
解在左侧,a: 0.875 b: 1.0625 x0: 1.0625
解在右侧,a: 0.96875 b: 1.0625 x0: 0.96875
解在左侧,a: 0.96875 b: 1.015625 x0: 1.015625
解在右侧,a: 0.9921875 b: 1.015625 x0: 0.9921875
解在左侧,a: 0.9921875 b: 1.00390625 x0: 1.00390625
解在右侧,a: 0.998046875 b: 1.00390625 x0: 0.998046875
解在左侧,a: 0.998046875 b: 1.0009765625 x0: 1.0009765625
解在右侧,a: 0.99951171875 b: 1.0009765625 x0: 0.99951171875
解在左侧,a: 0.99951171875 b: 1.000244140625 x0: 1.000244140625
解在右侧,a: 0.9998779296875 b: 1.000244140625 x0: 0.9998779296875
解在左侧,a: 0.9998779296875 b: 1.00006103515625 x0: 1.00006103515625
解在右侧,a: 0.999969482421875 b: 1.00006103515625 x0: 0.999969482421875
解在左侧,a: 0.999969482421875 b: 1.0000152587890625 x0: 1.0000152587890625
解在右侧,a: 0.9999923706054688 b: 1.0000152587890625 x0: 0.9999923706054688
x0: 1.0000038146972656 7.629423635080457e-06 <10e-6
1.0000038146972656 是用二分法求解方程的根

  • 21
    点赞
  • 151
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值