求解将产生特定 return 值的函数的参数
Solve for the argument to a function that will produce a particular return value
假设我有一个 Python 函数 y
of x
,其中 x
必须是一个数字,而 return 值总是一个数字. y
是一个变量的数学函数。
Python 中是否有一个函数(即 numpy
、scipy
等)能够求解 [=] 的特定值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)
假设我有一个 Python 函数 y
of x
,其中 x
必须是一个数字,而 return 值总是一个数字. y
是一个变量的数学函数。
Python 中是否有一个函数(即 numpy
、scipy
等)能够求解 [=] 的特定值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)