Решите для аргумента функции, которая будет производить конкретное возвращаемое значение

Предположим, у меня есть функция 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)
Другие вопросы по тегам