微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何解决二等分法中的数学域错误

如何解决如何解决二等分法中的数学域错误

我正在尝试使用对分法求解非线性方程。但是,出现数学域错误。有人可以帮助我解决错误吗?

import math as m
def bisection(f,a,b): 
    fa=f(a)
    fb=f(b)
    
    if fa*fb>0:
        print("f(a) and f(b)must have different signs.")
        return None
    
    for _ in range (100):
        c=(a+b)/2
        fc=f(c)
        if f(c)==0:break
        
        if fa*fc>0:
            a,fa=c,fc
        if fb*fc>0:
            b,fb=c,fc
    return c
F0=1.13
x=0.77/2
P=m.log(1+(1-x)*F0)
G=((P*(1+(17/450)*P**2))/(1+P**2/100))+P**2/4
func=lambda x:-m.log(1-x)-0.00012*m.log(1-x)-0.121428+0.188*(1.3398-G)
a=0
b=0.77

x=bisection(func,b)
print("solution found:{}".format(x))

谢谢 阿罗克

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。