Я пытаюсь решить набор нелинейных уравнений, используя алгоритм доверия между собаками-ногами в Matlab и Python.Алгоритм оптимизации (trust-region dog-leg) в Matlab и Python
В Matlab есть fsolve, где этот алгоритм является значением по умолчанию, тогда как для Python мы укажем 'dogleg' в scipy.optimize.minimize. Мне не нужно указывать якобиан или гессиан для Matlab, тогда как Python должен либо решить проблему.
У меня нет якобиана/гессиана, есть ли способ решить эту проблему для Python? Или есть еще одна функция, которая выполняет эквивалент метода Dog-leg Matlab в fsolve
?
Да, вы правы! Спасибо, что вызвали меня. Я отредактировал мой ответ, а также добавил часть, в которой говорится, что минимизация вызовов 'approx_fprime' внутренне, если' jac = False' – lucianopaz
Я получаю сообщение об ошибке, когда я указываю 'jac = False':' ValueError: Jacobian требуется для минимизации dogleg'. –
Похоже на ошибку в обработке scipy [числовой оценки] (https://github.com/scipy/scipy/blob/v0.18.0/scipy/optimize/_minimize.py#L411-L416). Ошибка сохраняется в текущих версиях scipy, поэтому кажется, что нужно поместить билет с ошибкой или что-то еще. Чтобы решить вашу конкретную проблему, вам нужно будет создать вызываемый 'jac' с помощью' approx_fprime'. Я отредактировал свой ответ соответственно. – lucianopaz