利用二分法求单调函数解---python

物联网园丁
• 阅读 1184

一个简单的python二分法求解函数

# 二分法
from typing import Callable

def 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 mid

def f(x:float)->float:
    return x**3-2*x-5

if __name__=="__main__":
    print(bisection(f,1,1000))

    import doctest

    doctest.testmod()    
点赞
收藏
评论区
推荐文章
qchen qchen
3年前
如何正确使用float和double?
1、典型问题问题一:条件判断超预期javaSystem.out.println(1f0.9999999f)//falseSystem.out.println(1f0.99999999f)//true问题二:数据转换超预期javafloatf1.1f;doubled(double)f;System.out.println(
Easter79 Easter79
3年前
vue+element+echarts饼状图+可折叠列表
html:<divid"echartsDiv"style"width:48%;height:430px;float:left;"</div<divid"tableDiv"style"width:52%;float:left;"<eltable:d
Wesley13 Wesley13
3年前
java 知识点 小结
1. Java8种基本类型:byte char shortint long double float booleanByte:8位Short:16位Int:32位Long:64位Float:32位Double:64位2. ListsetmapList:有序;
Bill78 Bill78
4年前
python的round函数使用
碰到的问题:对float进行精确两位显示出来。解决的方法:round(3.32342,2)3.32.round函数概念:英文:圆,四舍五入是python内置函数,它在哪都能用,对数字取四舍五入。round(number\,ndigits\)round对传入的数据进行四舍五入,如果ngi
Souleigh ✨ Souleigh ✨
4年前
python实现——最优化算法(二分法、格点法、黄金分割法、牛顿法等)
二分法函数详见rres,此代码使该算法运行了两次pythondefasdf(x):rres8x32x27x3returnrresi2left0right1whilei0:ii1ans0.1mid1(leftrightans)/2
Stella981 Stella981
3年前
Golang math基本数学函数
三角函数正弦函数,反正弦函数,双曲正弦,反双曲正弦funcSin(xfloat64)float64funcAsin(xfloat64)float64funcSinh(xfloat64)float64funcAsinh(xfloat64)float64一次性返回sin,cos
Stella981 Stella981
3年前
Golang语言排序的几种方式
1.Ints,float64s,strings使用以如函数实现基本类型sort.Intssort.Float64ssort.Stringss:int{4,2,3,1}sort.Ints(s)fmt.Println(s)//1234
Wesley13 Wesley13
3年前
C语言 函数
1.返回值类型51.有一个函数原型如下所示,则该函数的返回类型为()。Cabc(floatx,floaty);A.voidB.doubleC.intD.float3151.有一个函数原型如下所示,则该函数的返回类型为()
Wesley13 Wesley13
3年前
CSS浮动和清除浮动
1.浮动float  div配合float浮动来做页面的布局,浮动最常用的地方就是用来做布局。只有一个标签设置了浮动float属性,就会变成块级标签。!(https://img2018.cnblogs.com/blog/1468469/201901/1468469201901061724118811574074745.png)<!
Stella981 Stella981
3年前
CSS之清除浮动 && float属性
DIV层内的元素在使用了float属性后无法自动改变高度的解决办法:有的时候为了让外侧层根据内容自动调整,没有设置高度或宽度,一般都会正常显示。但如果层内元素使用了float属性,就会使那些元素脱离文件流,就无法再扩充容器层,就会导致外层大小无法根据内容自动调整。关于这个问题,总结出以几种在当下几种主流浏览器都兼容的方法,供大家参考。1.清除浮动在层
布局王 布局王
1个月前
鸿蒙Next仓颉开发语言中的数据类型总结分享
大家好,今天总结一下仓颉中的数据类型。数字仓颉中的数字类型复杂多样,首先分为整型和浮点型两种,也就是Int类型和Float类型,Int类型有Int、Int8、Int32、Int64几种类型,Float也有Float16、Float32和Float64几种类
物联网园丁
物联网园丁
Lv1
远书归梦两悠悠,只有空床敌素秋。
文章
3
粉丝
0
获赞
0