Вот два решения, второе, вероятно, более простой и правильный путь решения проблемы.
Фокус в том, что вы должны получить функцию f
, чтобы запомнить значения K и B. Один из способов сделать это - сделать его внутренней функцией другой функции. Внешняя функция используется для установки K и B. Они находятся в области переменных внутренней возвращаемой функции. Таким образом, внутренняя функция f
может запомнить значения. Возвращенная функция затем просто передается методу Ньютона-Рафсона и находит корень.
from scipy.misc import factorial
from scipy.optimize import newton
import numpy as np
def get_f(K=1, B=1):
def f(x):
return np.exp(-B*(np.power(B, x))-factorial(x)*K)
return f
f = get_f(K=2, B=3)
print newton(f, 3, maxiter=1000)
Пользователь отметил, что функция newton
имеет args
аргумент, который может быть использован для передачи дополнительных аргументов в функции Ньютона-Рафсона. Если функция имеет вид f (x, a, b, c ...), то a, b, c ... - дополнительные аргументы, которые могут быть заданы в args
.
же решение будет выглядеть следующим образом:
from scipy.misc import factorial
from scipy.optimize import newton
import numpy as np
def f(x, K, B):
return np.exp(-B*(np.power(B, x))-factorial(x)*K)
print newton(f, 3, args=(2, 3), maxiter=1000)
'Я пытался выяснить, как они работают, но у меня не очень bad' пожалуйста, покажите, что вы пробовали, а также включают в себя ошибки, которые вы получили. – cel
Нет смысла в том, что B и K являются константами, но они могут изменяться в соответствии с ранее установленным параметром. Я не могу понять, как я могу их установить. Я думал определить функцию def f (x, B, K), но я не знаю, может ли она работать. – haster8558
* «Я думал определить функцию def f (x, B, K), но я не знаю, может ли она работать». * Это стандартный способ сделать это с помощью scipy функций оптимизации. Дать ему шанс. –