如何解决如何解决二等分法中的数学域错误
我正在尝试使用对分法求解非线性方程。但是,出现数学域错误。有人可以帮助我解决错误吗?
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 举报,一经查实,本站将立刻删除。