使用二进制搜索查找小于 1 的数字的立方根
Finding cube root of a number less than 1 using binary search
我在做MIT6.00.1x course on edX
,教授说"If x<1, search space is 0 to x but cube root is greater than x and less than 1"。
有两种情况:
1.数字x介于0和1之间
2.数字x小于0(负数)
在这两种情况下,x 的立方根都位于 x and 1
之间。我明白。但是 search space 呢?初始搜索 space 会位于 0 和 x 之间吗?我认为不是那样。我认为讲座中引用的粗体文本是一个缺陷!请赐教。
是的,你的导师的一个陈述是一个缺陷。对于 0 < x < 1,根将位于 x 和 1 之间。这适用于 (0, 1) 范围内的任何幂(根 > 1)。
你可以反面反映这个说法,因为这是奇数根。 -1 <= x <= 0 的立方根将在 [-1, x] 范围内。对于 x < -1,您的范围是 [x, -1]。这是阳性病例的 mirror-image。我完全不明白老师为什么要进行非对称分区。
我想我知道你说的问题。她这么说的唯一原因是她处理绝对差异:
while abs(guess**3 - cube) >= epsilon
但是,代码将需要另一行来一起处理负立方体,这将类似于:
if cube<0: guess = -guess
希望对您有所帮助。
我在做MIT6.00.1x course on edX
,教授说"If x<1, search space is 0 to x but cube root is greater than x and less than 1"。
有两种情况:
1.数字x介于0和1之间
2.数字x小于0(负数)
在这两种情况下,x 的立方根都位于 x and 1
之间。我明白。但是 search space 呢?初始搜索 space 会位于 0 和 x 之间吗?我认为不是那样。我认为讲座中引用的粗体文本是一个缺陷!请赐教。
是的,你的导师的一个陈述是一个缺陷。对于 0 < x < 1,根将位于 x 和 1 之间。这适用于 (0, 1) 范围内的任何幂(根 > 1)。
你可以反面反映这个说法,因为这是奇数根。 -1 <= x <= 0 的立方根将在 [-1, x] 范围内。对于 x < -1,您的范围是 [x, -1]。这是阳性病例的 mirror-image。我完全不明白老师为什么要进行非对称分区。
我想我知道你说的问题。她这么说的唯一原因是她处理绝对差异:
while abs(guess**3 - cube) >= epsilon
但是,代码将需要另一行来一起处理负立方体,这将类似于:
if cube<0: guess = -guess
希望对您有所帮助。