« Découvrir Scilab/Optimisation d'une fonction » : différence entre les versions
Contenu supprimé Contenu ajouté
m →= Optimisation non linéaire : typo |
Aucun résumé des modifications |
||
Ligne 7 :
Soit une fonction ƒ de <math>\mathbb{R}^n \to \mathbb{R}</math>. L'optimisation consiste à trouver le vecteur '''x''' (vecteur à ''n'' composantes) donnant la valeur minimale de ƒ.
== Optimisation non linéaire ==▼
<source lang="scilab">▼
[fopt, xopt] = optim(costf, x0)▼
</source>▼
où▼
* <code>costf</code> est la « fonction de coût » de ƒ ; c'est une fonction qui renvoit la valeur de la fonction ƒ en '''x''' et le gradient de ƒ en '''x''', défini sous la forme<br /><code>function [f, g, ind] = costf(x, ind)</code><br />où <code>f</code> désigne ƒ('''x'''), <code>g</code> est le gradient et <code>ind</code> est un index, un entier permettant de modifier le comportement de <code>costf</code> ;▼
* <code>x0</code> est une estimation de la solution ;▼
* <code>xopt</code> est le vecteur trouvé ;▼
* <code>fopt</code> = ƒ(<code>xopt</code>), valeur estimée du minimum.▼
On peut indiquer des bornes inférieures et supérieure de '''x''', sous al forme de vecteurs '''x'''<sub>inf</sub> et '''x'''<sub>sup</sub> :▼
<source lang="scilab">▼
[fopt, xopt] = optim(f, x0, "b", xinf, xsup)▼
</source>▼
La fonction <code>optim()</code> est une [[w:fr:Méthode de quasi-Newton|méthode de quasi-Newton]] utilisant les [[w:fr:Critères de Wolfe|critères de Wolfe]].▼
Par exemple :
<source lang="scilab">
function [f, g, ind] = cout(x, ind)
f = x.*x + 5*sin(x);
g = 2*x + 5*cos(x)
endfunction
n = 40;
x = linspace(-2*%pi, 2*%pi, n);
y = cout(x);
x0 = 0;
[fopt, xopt] = optim(cout, x0)
plot(x, y)
plot(xopt, fopt, "k+")
</source>
== Optimisation linéaire ==
Ligne 84 ⟶ 122 :
; Voir aussi
* {{lien web | url = https://wiki.scilab.org/Linear%20Programming%20Examples%20in%20Scilab | titre = Linear Programming Examples in Scilab | langue = en | site = wiki.scilab.org | consulté le = 2017-02-13 | auteur = Michael Baudin et coll.}}
▲== Optimisation non linéaire ==
▲Ici, la fonction ƒ de <math>\mathbb{R}^n \to \mathbb{R}</math> est non linéaire. On utilise pour cela la fonction <code>optim</code> :
▲<source lang="scilab">
▲[fopt, xopt] = optim(costf, x0)
▲</source>
▲où
▲* <code>costf</code> est la « fonction de coût » de ƒ ; c'est une fonction qui renvoit la valeur de la fonction ƒ en '''x''' et le gradient de ƒ en '''x''', défini sous la forme<br /><code>function [f, g, ind] = costf(x, ind)</code><br />où <code>f</code> désigne ƒ('''x'''), <code>g</code> est le gradient et <code>ind</code> est un index, un entier permettant de modifier le comportement de <code>costf</code> ;
▲* <code>x0</code> est une estimation de la solution ;
▲* <code>xopt</code> est le vecteur trouvé ;
▲* <code>fopt</code> = ƒ(<code>xopt</code>), valeur estimée du minimum.
▲On peut indiquer des bornes inférieures et supérieure de '''x''', sous al forme de vecteurs '''x'''<sub>inf</sub> et '''x'''<sub>sup</sub> :
▲<source lang="scilab">
▲[fopt, xopt] = optim(f, x0, "b", xinf, xsup)
▲</source>
▲La fonction <code>optim()</code> est une [[w:fr:Méthode de quasi-Newton|méthode de quasi-Newton]] utilisant les [[w:fr:Critères de Wolfe|critères de Wolfe]].
== Optimisation quadratique ==
|