您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:python二分法查找函数底值

51自学网 2022-02-21 10:36:59
  python
这篇教程python二分法查找函数底值写得很实用,希望能帮到您。

假设连续函数f(x)在区间(a,b)上有一个底值m,且在该底值下的函数输出值为M,即f(m)=M,利用二分法查找该底值:(s为足够小的数)

令t=(a+b)/2,若|f(t)-M|<=s,则m=t,若|f(t)-M|>s,如果(f(t)-M)和(f(a)-M)同号,a=t,反之b=t,继续二分法t=(a+b)/2...直到|f(t)-M|<=s,则m=t。

例如:一项一年期投资,每个季度初投入10000元,期满时收入44163.225,求内部收益率(已设定为0.04)。

收益函数为:

f(x)=10000/sum_{k=1}^{4}(1+i)^{k}

从(0,1)区间中查找该内部收益率,用二分法令t=(0+1)/2=0.5,比较发现|f(t)-44163.225|>10**(-10),并且f(t)-44163.225和f(1)-44163.225同号,则继续令t=(0+0.5)/2=0.25,,,直到查找出内部收益率为0.03999999445689362,约等于0.04

def f(i):    y = 10000 * (1 + i) ** 4 + 10000 * (1 + i) ** 3 + 10000*(1+i)**2+10000*(1+i)**1    return ydef division(a,b,M,n):    #a,b为自选值范围,(f(a)-M)*(F(b)-M)<或=0    #M为f(x)输出值,n为输出值精度要求小数位数    while True:        t = (a + b) / 2        if abs(f(t) - M) <= 10 ** (-n):            m = t            break        if (f(t) - M) / abs(f(t) - M) == (f(a) - M) / abs(f(a) - M):            a = t        else:            b = t    return my=division(0,1,44163.225,10)print(y)

到此这篇关于python二分法查找函数底值的文章就介绍到这了,更多相关python函数底值内容请搜索51zixue.net以前的文章或继续浏览下面的相关文章希望大家以后多多支持51zixue.net!


Python读取CSV文件并计算某一列的均值和方差
Python实现四个经典小游戏合集
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。