Я пытаюсь решить игрушечную задачу (нелинейных наименьших квадратов) с помощью функции scipy.optimize.least_squares
в Python.
import numpy as np
from scipy.optimize import least_squares
a = 2
b = -1
def myfun(x,a,b):
return [a*x[0]-x[1]-np.exp(-x[0]), b*x[0]+2*x[1]-np.exp(-x[1])]
x0 = [-5,-5]
sol = least_squares(myfun,x0,method='lm',ftol=1e-9,xtol=1e-9, \
max_nfev=1e6,args=(a,b))
print(sol)
'''
method='trf' solution: x = array([0.56714329,0.56714329])
'''
Если я использую метод Левенберга-Марквардтаmethod='lm'
тогда я получаю ошибку TypeError: integer argument expected, got float
.Я пропускаю входной аргумент для least_squares
?У меня нет никакой дополнительной информации по этой проблеме, например, матрицы Якоби, поэтому я не уверен, что этот метод особенно подходит для этой проблемы.