x的解:使用二进制搜索,n ** x + x = 0

问题描述 投票:0回答:1

我想在等式中求解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))
python if-statement while-loop binary-search equation
1个回答
0
投票

该函数似乎在单调增加,因此可以以与平方根相同的方式应用二进制搜索。

在您的函数中,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))
© www.soinside.com 2019 - 2024. All rights reserved.