« Découvrir Scilab/Optimisation d'une fonction » : différence entre les versions

Contenu supprimé Contenu ajouté
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 ==
 
Ici,L'optimisation lanon fonctionlinéaire ƒest dele <math>\mathbb{R}^ncas \to \mathbb{R}</math> est non linéairegénéral. On utilise pour cela la fonction <code>optim</code> :
<source lang="scilab">
[fopt, xopt] = optim(costf, x0)
</source>
* <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>
* <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 ==