Решите для аргумента функции, которая будет производить конкретное возвращаемое значение
Предположим, у меня есть функция Python y
из x
, где x
должно быть числом, а возвращаемое значение всегда является числом. y
является математической функцией одной переменной.
Есть ли функция в Python (то есть, в numpy
, scipy
и т. д.), которые можно было бы решить для конкретного значения (й) для x
который производит желаемое возвращаемое значение - используя, например, градиентный спуск?
Я ищу magic_function
что бы сделать что-то вроде этого:
>>> from my_module import y
>>> from magic_package import magic_function
>>> desired = 10
>>> x = magic_function(y, desired)
>>> y(x)
10
1 ответ
Решение
Вы можете обернуть свою функцию 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)