我已经确定了一个要使用的区间(从Python绘制的图中)——我的区间是[4,6]。我已经写了一个程序(没有完全完成),因此1)我取区间的中点(leftintervalwall,rightintervalwall),看看它是否给我0作为输出。2) 否则,该中点现在将成为新的leftintervalwall(RightIntervalWall保持不变)
我已经更新了代码:但是,当我在找到根时计算函数的输出时,得到的值为1.014,这是不正确的。它应该接近于0。所以我不确定代码中的漏洞在哪里。非常感谢
def continousfunction(xpoint):
output = float(np.power(xpoint, 2) - np.log1p(1 + xpoint) - 30)
return output;
def processinterval(a, b):
intervalmidpoint = (a + b) / 2
return intervalmidpoint;
def findroot(a, b, accuracy):
if(continousfunction(a) < 0 and continousfunction(b) > 0):
bisection(a, b, accuracy)
def bisection(a, b, accuracy):
intervalmidpoint = processinterval(a,b)
if(continousfunction(intervalmidpoint) < 0):
a = intervalmidpoint
return bisection(intervalmidpoint, b, accuracy)
print(continousfunction(intervalmidpoint))
def main():
a = 4
b = 6
accuracy = 0.002
findroot(a, b, accuracy)
main()
这里是一个关于如何实现二分法的示例。为了避免递归错误,我添加了一个精度参数。我还对另一个函数test1做了额外的测试
[您的递归打印始终在同一时间间隔内]
输出
相关问题 更多 >
编程相关推荐