求解将产生特定 return 值的函数的参数

Solve for the argument to a function that will produce a particular return value

假设我有一个 Python 函数 y of x,其中 x 必须是一个数字,而 return 值总是一个数字. y 是一个变量的数学函数。

Python 中是否有一个函数(即 numpyscipy 等)能够求解 [=] 的特定值13=] 产生所需的 return 值——例如使用梯度下降?

我正在寻找可以执行以下操作的 magic_function:

>>> from my_module import y
>>> from magic_package import magic_function
>>> desired = 10
>>> x = magic_function(y, desired)
>>> y(x)
10

您可以包装函数 y(x),使其偏移所需的值。这是一个简单的演示,说明了如何做到这一点:

def y(x):
    return x*x

def offset_function(f, desired=0):
    def newf(x):
        return f(x) - desired
    return newf

y9 = offset_function(y, 9)

for x in range(5):
    print x, y(x), y9(x)

输出

0 0 -9
1 1 -8
2 4 -5
3 9 0
4 16 7

但是,使用 lambda:

更简单
y9 = lambda x: y(x) - 9

您可以像这样将它传递给您的寻根者:

scipy.optimize.root(lambda x: y(x) - 9, xguess)