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)
| 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. |
| 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. |
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.
fun = @(x) [x(1) - 2; x(2) + 1];
[x, resnorm] = lsqnonlin(fun, [0; 0])
| Version | Description |
|---|---|
| 2.0.0 | version initiale |