lsqnonlin
Moindres carrés non linéaires.
📝Syntaxe
x = lsqnonlin(fun, x0)
[x, resnorm, residual, exitflag, output, lambda, jacobian] = lsqnonlin(fun, x0, lb, ub, options)
[x, resnorm, residual, exitflag, output, lambda, jacobian] = lsqnonlin(fun, x0, lb, ub, A, b, Aeq, beq, nonlcon, options)
x = lsqnonlin(problem)
📥Arguments d'entrée
Paramètre Description
fun fonction retournant un tableau de résidus.
x0 point initial.
lb, ub bornes, éventuellement vides.
A, b, Aeq, beq contraintes linéaires d'inégalité et d'égalité, éventuellement vides.
nonlcon fonction de contraintes non linéaires retournant [c, ceq], éventuellement vide.
options options du solveur.
📤Arguments de sortie
Paramètre Description
x solution estimée, avec la forme de x0.
resnorm norme carrée du résidu sum(fun(x).^2).
residual résidu en x, avec la forme retournée par fun.
exitflag raison de l'arrêt : 1 (gradient sous la tolérance), 2 (pas inférieur à StepTolerance), 3 (variation du résidu inférieure à FunctionTolerance), 4 (direction de recherche inférieure à StepTolerance), 0 (limite d'itérations ou d'évaluations), -1 (arrêt par la fonction de sortie), -2 (bornes incohérentes).
output structure avec les champs firstorderopt, iterations, funcCount, cgiterations, algorithm, stepsize, message, bestfeasible et constrviolation.
lambda structure des multiplicateurs de Lagrange avec les champs lower, upper, eqlin, ineqlin, eqnonlin et ineqnonlin.
jacobian jacobienne finale, approchée ou fournie par l'utilisateur.
📄Description

lsqnonlin résout des problèmes de moindres carrés non linéaires min sum(fun(x).^2), éventuellement soumis à des bornes et des contraintes.

L'option Algorithm sélectionne le moteur : 'trust-region-reflective' (défaut), 'levenberg-marquardt' (accepte aussi les bornes) ou 'interior-point'. Les contraintes linéaires ou non linéaires utilisent automatiquement l'algorithme interior-point.

Le défaut de MaxFunctionEvaluations est 100*numberOfVariables, MaxIterations vaut 400 et FunctionTolerance et StepTolerance valent 1e-6. L'option Display accepte 'off', 'none', 'final', 'final-detailed', 'notify', 'notify-detailed', 'iter' et 'iter-detailed'.

Si Jacobian vaut 'on' ou si SpecifyObjectiveGradient vaut true, fun doit aussi retourner la jacobienne des résidus.

💡Exemples
fun = @(x) [x(1) - 2; x(2) + 1];
[x, resnorm] = lsqnonlin(fun, [0; 0])
🔗Voir aussi
fsolvelsqnonneg
Used Functions
optimoptions
📚Bibliographie
K. Levenberg, "A method for the solution of certain non-linear problems in least squares", Quarterly of Applied Mathematics, 1944. D. W. Marquardt, "An algorithm for least-squares estimation of nonlinear parameters", SIAM Journal on Applied Mathematics, 1963.
🕔Historique des versions
Version Description
2.0.0 version initiale
Modifier cette page sur GitHub