【发布时间】:2018-05-28 14:39:20
【问题描述】:
我正在尝试通过在 Python 中使用 scipy.optimize.least_squares 函数来解决(非线性最小二乘)玩具问题。
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])
'''
如果我使用 Levenberg-Marquardt 方法 method='lm',则会收到错误 TypeError: integer argument expected, got float。我是否缺少least_squares 的输入参数?我没有关于该问题的任何进一步信息,例如雅可比矩阵,所以我不确定这个方法是否特别适合这个问题。
【问题讨论】:
标签: python optimization scipy nonlinear-optimization