'''
试值法求非线性方程
'''
def f(x):
return x ** 2 - 6 * x + 5
def FalsePosition(f, a, b, e):
'''
:param f: 函数
:param a: 下区间
:param b: 上区间
:param e: 误差
:return: 返回取0时的x
'''
fa=f(a)
fb=f(b)
if fa*fb>=0:
print('两端数值必须异号')
else:
for i in range(100): #这里默认最多迭代100次
c=b-fb*(b-a)/(fb-fa)
fc=f(c)
if fc==0: return c
elif fb*fc>0:
b=c
fb=fc
else:
a=c
fa=fc
if b-a<e:
return c
x=FalsePosition(f,1.2,5.1,0.00001)
print(x)
04-13
1748
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)