мне нужна помощь с этим кодом:Входная функция для SciPy расчетов
import numpy
import math
from scipy.optimize import fmin_slsqp
def f(x, sign=-1.0):
tmp = exec('(' + str(input()) + ')')
return tmp
res = fmin_slsqp(f, [5, 5], iter = 10000)
print(res)
Я пытаюсь минимизировать функцию из пользовательского ввода. Пример функции: 20*x[0]**0.3*x[1]**0.4 - 2*x[0] - 3*x[1]
. Но что-то пошло не так, и я получаю TypeError: unsupported operand type(s) for -: 'NoneType' and 'NoneType'
Я потратил много времени, чтобы заставить его работать, но не могу решить эту проблему. Что я делаю неправильно?
Ну, eval работает, спасибо большое! Но тогда у меня есть еще одна ошибка: 'не удалось преобразовать 8-й аргумент g из _slsqp.slsqp в массив C/Fortran'. Это похоже на ошибку scipy модуля, и у нее нет решения. Ничто не меняется от разных представлений функций. Так что scipy не полезен? – Mental
Есть вероятность, что '('+ input() +')' не вернет скаляр (требуется slsqp. Попробуйте с помощью 'return eval (input())' –