我正在用Python编写博尔扎诺的算法。这是我现在的代码:
def Bolzano(fonction, a, b, tol=0.000001):
while abs(b-a)>tol:
m=(a+b)/2
if cmp(fonction(m))==cmp(fonction(a)):
a=m
else:
b=m
return a, b
它一直工作,直到遇到它无法识别的cmp。然而,我没有看到其他的方法,因为Python没有符号函数。还有其他方法可以提取数字的符号吗?
5条答案
按热度按时间vbopmzt11#
还有其他方法可以提取数字的符号吗?
写你自己的怎么样?
执行情况
示例
Ohh和cmp是一个内置的,需要两个参数(数字),并简单地比较它们,并检查其中哪个更大。你应该按如下方式使用它
slmsl1lt2#
可能用途:
lhcgjxsq3#
示例如下:
s3fp2yjn4#
我可以想到一个简单的解决办法:a//abs(a)
如果大于0,则返回1,如果小于0,则返回-1,但您可能会面临被0整除的风险,因此可能不是一个很好的解决方案。
e4eetjau5#
基于Shon_Shon的响应,这是一个不会引发ZeroDivisionError的版本: