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

问题描述

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

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 (将#修改为@)