我想在等式中求解x(最多6个小数位):n ** x + x =0。我想使用二进制搜索进行此操作。
我使用下面的代码来获取正整数'n'的平方根。需要采用相同的逻辑以某种方式解决上述问题。
n=int(input())
#find square root of n here
def sqroot(n):
l = 0
r = n
while abs(l-r) > 10**(-5):
mid = (l+r)/2
if mid**2 > n:
r = mid
else:
l = mid
return round(mid,4)
print('%.4f' % sqroot(n))
该函数似乎在单调增加,因此可以以与平方根相同的方式应用二进制搜索。
在您的函数中,n
为目标,现在为0,n
为参数。
请注意,此函数的负数似乎为零,因此请不要忘记扩展搜索空间。
n = int(input())
def binarySearch(n):
# n is the parameter
l = -10
r = 10
while abs(l - r) > 10**(-5):
mid = (l + r) / 2
# Compute the value of the function and compare against 0.0
if (n**middle + middle) > 0.0:
r = mid
else:
l = mid
return round(mid,4)
print('%.4f' % sqroot(n))