x = fminunc(fun, x0)
x = fminunc(fun, x0, options)
x = fminunc(problem)
[x, fval, exitflag, output, grad, hessian] = fminunc(___)
| Paramètre | Description |
|---|---|
| fun | Fonction objectif retournant un scalaire réel. Lorsque les options de gradient sont activées, elle peut aussi retourner le gradient et le Hessien. |
| x0 | Point initial scalaire, vectoriel ou matriciel. |
| options | Options créées avec optimoptions ou optimset. |
| problem | Structure contenant les champs objective, x0, solver et options. |
| Paramètre | Description |
|---|---|
| x | Minimiseur calculé. |
| fval | Valeur de l'objectif en x. |
| exitflag | Indicateur de terminaison. |
| output | Structure de diagnostics avec iterations, funcCount, stepsize, algorithm, firstorderopt et message. |
| grad | Gradient en x. |
| hessian | Hessien approché ou fourni par l'utilisateur en x. |
fminunc minimise une fonction objectif scalaire non linéaire sans contrainte.
L'algorithme par défaut quasi-newton utilise BFGS, DFP, la plus forte pente ou BFGS à mémoire limitée selon les options HessianApproximation et HessUpdate. L'algorithme trust-region utilise les gradients utilisateur, les Hessiennes objectif optionnelles, les fonctions de produit Hessien-vecteur et le gradient conjugué tronqué.
Les modes d'affichage acceptés sont off, none, final, final-detailed, notify, notify-detailed, iter et iter-detailed.
fun = @(x) 3*x(1)^2 + 2*x(1)*x(2) + x(2)^2 - 4*x(1) + 5*x(2);
[x, fval] = fminunc(fun, [1, 1])
function [f, g] = rosenwithgrad(x)
f = 100*(x(2) - x(1)^2)^2 + (1 - x(1))^2;
g = [-400*(x(2)-x(1)^2)*x(1) - 2*(1-x(1)); 200*(x(2)-x(1)^2)];
end
opts = optimoptions('fminunc', 'Algorithm', 'trust-region', 'SpecifyObjectiveGradient', true);
x = fminunc(@rosenwithgrad, [-1; 2], opts)
| Version | Description |
|---|---|
| 2.0.0 | version initiale |