利用二分法求单调函数解---python
【利用二分法求单调函数解---python】一个简单的python二分法求解函数
# 二分法
from typing import Callabledef bisection(function:Callable[[float],float],a:float,b:float)->float:
# Callable表示回调函数
# 找出令函数在[a,b]区间内是0的值
start:float=a
end:float=b
if function(a)==0:
return a
elif function(b)==0:
return b
elif(
function(a)*function(b)>0
):
raise ValueError("找不到解")
else:
mid:float=start+(end-start)/2.0
while abs(start-mid)>10**-7:#这个循环就是不断二分的过程。最细精度控制在10的-7次
if function(mid)==0:
return mid
elif function(mid)*function(start)<0:
end=mid
else:
start=mid
mid=start+(end-start)/2.0
return middef f(x:float)->float:
return x**3-2*x-5if __name__=="__main__":
print(bisection(f,1,1000))import doctestdoctest.testmod()
推荐阅读
- EffectiveObjective-C2.0|EffectiveObjective-C2.0 笔记 - 第二部分
- 遇到一哭二闹三打滚的孩子,怎么办┃山伯教育
- 赢在人生六项精进二阶Day3复盘
- 2019年12月24日
- 陇上秋二|陇上秋二 罗敷媚
- 一百二十三夜,请嫁给我
- 迷失的世界(二十七)
- 我要我们在一起(二)
- 基于|基于 antd 风格的 element-table + pagination 的二次封装
- (二)ES6第一节变量(let|(二)ES6第一节变量(let,const)