问题描述
我正在尝试使用对分法求解非线性方程。但是,出现数学域错误。有人可以帮助我解决错误吗?
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 (将#修改为@)