INSTITUT UNIVERSITAIRE 2IE
--------------------
01 BP 594 OUAGADOUGOU 01
Téléphone : 00 226 25 49 28 00
Fax : 00 226 25 49 28 01
2ie@[Link]
ANNEE ACADEMIQUE: 2024 - 2025
SEMESTRE : S7
NIVEAU : MASTER
FILIERE : GEE, GC– BPT, GEAAH
COURS : TP OPTIMISATION
ENSEIGNANT : Dr TAPSOBA Gilbert
VOLUME HORAIRE : 6h / groupe
PERIODE D’ENSEIGNEMENT : mai à juin
NOMBRE ET TYPE D’EVALUATION :
TABLE DES MATIÈRES
Table des figures ii
Liste des tableaux iii
1 familiarisation avec le logiciel Scilab 1
1.1 Description du logiciel scilab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Environnement de travail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Opérateurs Scilab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3.1 variable, affectation, affichage . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3.2 la ponctuation avec scilab . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3.3 les opérations de calculs scilab . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3.4 les fonctions de scilab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3.5 comparaison avec scilab . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3.6 Opérateurs graphique scilab . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4 Vocabulaire de programmation Scilab . . . . . . . . . . . . . . . . . . . . . . . . 6
1.5 Vocabulaire graphique Scilab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2 optimisation d’une fonction : une variable 8
2.1 travaux pratiques 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2 travaux pratiques 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3 optimisation d’une fonction : deux variables 12
3.1 travaux pratiques 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2 travaux pratiques 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4 optimisation d’une fonction : sous contrainte 16
5 Travaux Dirigés 1 17
ii
TABLE DES FIGURES
1.1 environnement de travail principal . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 éditeur de text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1 script scilab pour le calcul d’un optimum : une variable . . . . . . . . . . . . . 9
2.2 script scilab pour le calcul d’un optimum : une variable . . . . . . . . . . . . . 10
2.3 script scilab pour le calcul d’un optimum : une variable . . . . . . . . . . . . . 11
3.1 optimum d’une fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2 optimum d’une fonction suite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.3 programmation à l’aide de la méthode du gradient . . . . . . . . . . . . . . . . 15
iii
LISTE DES TABLEAUX
1.1 opérateurs graphiques scilab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 les ponctuations de scilab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 les opérations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4 les fonctions scilab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.5 les opérateurs de comparaison . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.6 opérateurs graphiques scilab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.7 les structures de programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.8 les structures de programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
iv
CHAPITRE 1
FAMILIARISATION AVEC LE LOGICIEL
SCILAB
1.1 Description du logiciel scilab
Scilab est un logiciel de calcul numérique développé par l’INRIA. Il est entièrement libre et
gratuit, contrairement au logiciel commercial Matlab. On peut le télécharger par exemple à
l’adresse "[Link]". contrairement à Maple, Scilab n’est pas un logiciel de calcul formel
ou exact, mais un logiciel de calcul approché.
L’espace de travail utile dans Scilab est constitué de :
– la console pour faire des calculs.
– l’éditeur pour écrire des programmes.
– la fenêtre graphique pour afficher les graphiques.
– l’aide
La programmation informatique est la capacité à donner à un ordinateur ou une intelligence
artificielle la possibilité d’accomplir des taches souhaitées. Dans le monde de la programma-
tion, il existe une grande variété de languages telles que le language python, le language
matlab, le language scilab qui ont chacune des particularités spécifiques et similaires adap-
tés à des systèmes d’exploitation tels que Windows, Linux, Mac Os et j’en passe.
1
1.2. Environnement de travail
F IGURE 1.1 – environnement de travail principal
1.2 Environnement de travail
Dans l’utilisation du logiciel Scilab, on distingue deux environnements de travail et trois
fenêtres d’affichage :
– les deux environnements de travail sont la console et d’éditeur de texte.
– les trois fenêtre d’affichage sont le navigateur de variable, l’historique des commandes et
la fenêtre d’affichage graphique.
Après avoir doublé - cliqué sur l’icône de Scilab pour lancer le logiciel, l’environnement de
travail principale de Scilab affiche les fenêtres suivantes :
• la console qui présente le symbole " 99K ", ce symbole précède toute ligne de commande,
les autres lignes sont des retours (résultats de calcul). Dans la console, après l’invite
de commande 〈99K〉, il suffit de saisir une commande et d’appuyer sur la touche Entrée
(Windows) du clavier pour obtenir le résultat correspondant (ans).
• le navigateur de variable permet de retrouver toutes les variables utilisées précédemment
au cours de la même session.
• l’historique des commandes permet de retrouver toutes les commandes des sessions pré-
cédentes et de la session courante.
Le second environnement de travail sur scilab est l’éditeur de text (figure 1.2) dont l’icône
est un cal peint avec un stylo, il ouvre avec un fichier par défaut intitulé "sans titre 1" .
Dans notre cas, nous allons l’utiliser pour élaborer des programmations avec les opérateurs
de programmation comme if, for, while. l’indentation (décalage du début de chaque ligne)
après chaque ligne d’instruction est automatique lorsque qu’on commerce une boucle ou
TAPSOBA Gilbert/LANIBIO/UJKZ 2
1.2. Environnement de travail
F IGURE 1.2 – éditeur de text
un test (dans le cas où il y a absence d’indentation clique sur "format" puis sur "corriger
indentation")
Dans la manipulation du logiciel Scilab, nous constatons :
• Une fenêtre d’affichage du graphique après chaque instruction graphique dans l’éditeur
de text.
• Pour placer une fenêtre dans une autre, on repère d’abord la barre horizontale bleue sous
windows, cliquez sur cette barre avec le bouton gauche de la souris, et, en maintenant
ce bouton enfoncé, déplacez la flèche de la souris dans la fenêtre souhaitée, un rectangle
apparaît indiquant le positionnement futur de la fenêtre. lorsque la position est celle
souhaitée, relâchez le bouton de la souris.
• Il est possible de revenir en arrière à tout moment, avec les flèches du clavier (←↑→↓) ou
avec la souris, les touches gauche et droite permettant de modifier les instructions, et les
touches haut et bas donnant la possibilité de revenir sur une commande précédemment
exécutée.
TAPSOBA Gilbert/LANIBIO/UJKZ 3
1.3. Opérateurs Scilab
1.3 Opérateurs Scilab
1.3.1 variable, affectation, affichage
le sens de la variable, de l’affectation et de l’affichage est donné dans le tableau suivant :
TABLE 1.1 – opérateurs graphiques scilab
vocabulaire scilab analyse
la variable est désigné par une lettre ou un groupe de lettre a qui on
affecte une valeur donnée
l’affectation est traduit par le symbole "=" sur scilab et permet de
designer une valeur par une lettre ou un groupe de lettre
l’affichage toute commande ne se terminant par le symbole " ;" permet un
affichage du résultât de la commande
disp(" ") permet d’afficher une chaîne de caractère
1.3.2 la ponctuation avec scilab
les ponctuations sont les symboles qui ont pour rôle d’organiser la compréhension de la
commande pour l’ordinateur :
TABLE 1.2 – les ponctuations de scilab
syntaxe scilab interprétation de la syntaxe scilab
"," la virgule peut se mettre à la fin d’une commande et permet
de mettre plusieurs commandes sur une même ligne.
" ;" le point - virgule à la fin d’une commande, permet d’exécuter
la commande sans afficher le résultat.
".." les deux points servent à mettre une commande sur plusieurs
lignes
"¿À " les guillemets servent à délimiter une chaîne de caractère
"//" le double slash permet de faire les commentaires car tout ce qui suit
ce symbole ne sera pas considéré par Scilab
"." le point correspond à la virgule des décimaux
"[ ]" le crochet permet d’écrire une matrice avec :
un point virgule " ;" séparant les lignes de la matrice
une virgule séparant les éléments de chaque ligne
" :" l’incrémentation permet de définir des vecteurs dont
les coordonnées sont en suite arithmétique
(première valeur :pas :dernière valeur)
, si le pas n’est pas mentionné, la valeur est 1 par défaut
remarque importante :
– En pratique, on utilise le point - virgule pour les calculs intermédiaires et on ne met pas
de point - virgule pour afficher le résultat final.
– On évite aussi de mettre une commande sur plusieurs lignes ou trop de commandes par
ligne pour des raisons de lisibilité.
– Dans un programme, on prendra l’habitude de mettre un point-virgule de façon systé-
matique après chaque commande. En effet, un simple oubli de point - virgule dans une
boucle peut entraîner l’affichage de plusieurs centaines de lignes.
TAPSOBA Gilbert/LANIBIO/UJKZ 4
1.3. Opérateurs Scilab
1.3.3 les opérations de calculs scilab
la syntaxe des opérations avec scilab est résumée dans le tableau suivant
TABLE 1.3 – les opérations
syntaxe scilab interprétation de la syntaxe scilab
"+" l’addition
"−" la soustraction
"∗" la multiplication
"/" la division
"" exposant
"0 " l’apostrophe permet de faire la transposer d’une matrice
1.3.4 les fonctions de scilab
les fonctions scilab permettent de calculer, de faire des programmation et d’effectuer des
constructions géométriques de dimension deux et trois.
TABLE 1.4 – les fonctions scilab
syntaxe scilab interprétation de la syntaxe scilab
" sqrt( x)" la racine carrée de x
"abs( x)" la valeur absolue de x
" log( x)" le logarithme népérien de x
" real ( x), imag( x)" partie réelle de x , partie imaginaire de x
" cos( x), sin( x), tan( x), cotg( x)" cosinus, sinus, tangente, cotangenre
"acos( x), asin( x), atan( x)" arccosinus,arcsinus,arctangente
"height"floor(x)" la partie entière de x (entier n tel que n ≤ x ≤ n + 1)
"int(x)" la troncature de x (entier avant la virgule)
"spec(A)" donne la liste des valeurs propres de A
" [V , l ]" donne la liste des valeurs propres et des vecteurs propres de A
"bdiag(A)" la décomposition de jordan de A
"round(x)" le plus proche entier
"ceil(x)" la partie entière de x (entier n tel que n − 1 < x < n
"factorial(n)" donne la factorielle de n avec n entier positif ou nul
"grand(1,p,"unin",m,n)" donne un vecteur de p tirages entiers pris entre m
et n avec p entier positif tel que m ≤ n
"grand(1,p,"unf",a,b)" donne un vecteur de p tirages réels pris entre a et b
avec p entier positif tel que a ≤ b.
"sum(n)" donne la somme des valeurs du vecteurs n
(sert à calculer un effectif total)
"prod(v)" donne le produit de tous les éléments du vecteur ou de la matrice v
"cumsum(n)" donne le vecteur des valeurs cumulées croissantes du vecteur n
(sert à calculer les effectifs cumulés croissants)
"lenght(v) donne le nombre de coordonnées du vecteur v
"gsort(v)" donne un trie du vecteur dans l’ordre décroissant
"mean(v)" donne la moyenne du vecteur de nombre v
"stdev(v)" donne l’écart - type du vecteur de nombre v
"rand()" donne un nombre réel pris aléatoirement entre 0 et 1
"disp("phrase")" affiche ce qui est écrit entre les guillemets
"disp(A)" affiche le tableau des valeurs de A, A est une matrice
"disp(x,y,...)" affiche les valeurs de ses arguments dans la console
"string(x)" transforme le nombre x en chaîne de caractères
"zeros(n,p)" donne une matrice n × p ne contenant que des 0.
"grand(1,p,"uin",m,n)" permet de définir un vecteur de p tirages entiers aléatoires pris entre m et m=n
"unique(A)" garde une fois les valeurs qui apparaissent plusieurs fois dans A
function...endfunction definir une fonction
coeff(P) la liste des coefficients de P
roots(P) la liste des racines de P
horner(P,2) renvoie la valeur P(2)
x=poly(0,’x’) ; une astuce pour travailler avec la variable x au lieu de la variable % s
size(A) nombre de ligne et de colonne de la matrice A
rosenbrock() est utilisée pour définir la fonction de Rosenbrock,
une fonction de test non-linéaire couramment utilisée dans l’optimisation.
expectedf permet de calculer l’espérance mathématique d’une variable aléatoire,
qui est une valeur moyenne pondérée de tous les résultats possibles de la variable.
index est utilisé pour accéder à un élément spécifique d’un tableau (vector, matrice, ou tableau multi-dimensionnel).
TAPSOBA Gilbert/LANIBIO/UJKZ 5
1.4. Vocabulaire de programmation Scilab
1.3.5 comparaison avec scilab
les syntaxes de comparaison de scilab sont donné dans le tableau suivant :
TABLE 1.5 – les opérateurs de comparaison
syntaxe scilab interprétation de la syntaxe scilab
"==" signifie l’égalité ou à équivalence
"<>" signifie différent
"<" signifie inférieur
">" signifie supérieur
"<=" signifie inférieur ou égal
">=" signifie supérieur ou égal
"%T" signifie vrai
"%F" signifie faux
"&" signifie et
" |" signifie ou
""˜ signifie non
1.3.6 Opérateurs graphique scilab
TABLE 1.6 – opérateurs graphiques scilab
syntaxe scilab interprétation
clf "clear figure", efface la figure présente sur la fenêtre graphique
plot permet de tracer des courbes ou des nuages de points en
dimension 2
surf( ) permet de tracer des surfaces en dimension 3 avec trois variable x, y et z
plot(X,Y,"∗") trace le nuage des points de coordonnées (X(i),Y(i)) sous
forme d’étoile. on peut préciser la couleur
plot(Y,"+") trace le nuage des points de coordonnées ( i, Y ( i )) sous forme de croix
bar(X,Y) X et Y sont des vecteurs, dessine le diagramme en bâtons de la série
des valeurs de X ayant pour effectifs les valeurs de y
"b","k","r","g","Y","W" respectivement bleu, noir, rouge, vert, jaune, blanc
".", "+", " ∗ " les points sont reliés respectivement sous la forme de points, de +, de ∗
x=linspace(a,b,n) permet de construire une fonction dont x est compris entre a et b avec n valeurs
disp( ) calculées, mettre " ;" à la fin sinon n valeurs de x s’afficheront
param3d permet de tracer une courbe dans l’espace avec l’abscisse x, l’ordonnée y et la cote z
f solve( x0 , f ) résoudre le système f ( x) = 0
ode( y0 , t 0 , T, f ) donne la solution de l’équation différentielle
y0 ( t) = f ( t, y( t)) , y( t 0 ) = y0
1.4 Vocabulaire de programmation Scilab
les syntaxes de programmation sont regroupés en deux groupes, ceux qui traduisent la
condition et ceux qui traduisent les boucles.
TABLE 1.7 – les structures de programmation
structure de boucle scilab interprétation
for...end pour...fin de pour (boucle simple)
while...end tant que ...fin de tant que (boucle)
on l’utilise dans le cas d’une répétition d’actions
if...then...else...end si...alors...sinon...fin de si (condition)
if...then...elseif...then...else...end si...alors...ou si...alors...ou
...fin de si (condition)
Remarque :"if...then", "elseif...then" doivent s’écrire sur la même ligne
TAPSOBA Gilbert/LANIBIO/UJKZ 6
1.5. Vocabulaire graphique Scilab
1.5 Vocabulaire graphique Scilab
les syntaxes de programmation scilab pour construire un graphique sont regroupés en deux
groupes, ceux qui sont utilisés pour construire en deux dimension et ceux qui sont utilisés
pour construire en trois dimension 1.8.
TABLE 1.8 – les structures de programmation
Opérateurs scilab interprétation
plot Permet de tracer des courbes en deux dimensions
fplot3d Permet de tracer des courbes en trois dimensions
surf() Permet de tracer une surface en trois dimensions
linspace(a,b,n) permet de définir un vecteur allant de a à b
feval() permet d’évaluer une fonction sur une matrice d’arguments.
utile pour calculer des valeurs de fonctions sur des ensembles de points ou sur des matrices.
TAPSOBA Gilbert/LANIBIO/UJKZ 7
CHAPITRE 2
OPTIMISATION D’UNE FONCTION :
UNE VARIABLE
2.1 travaux pratiques 1
Pour la fonction f ( x) = 4 x2 − exp ( x)
1. Calculer à l’aide de script Scilab les images de −2, −1, 0, 1, 2 par f. (2.1,2.2).
2. Proposer un script scilab qui donne l’optimum de la solution f sur [−2; 2 ] (2.1) .
3. Proposer un script scilab qui donne la représentation graphique de f. (2.1)
2.2 travaux pratiques 2
Pour la fonction f ( x) = 4 x2 − exp ( x). Proposer un script scilab qui donne l’optimum de la
solution f. (2.3)
8
2.2. travaux pratiques 2
F IGURE 2.1 – script scilab pour le calcul d’un optimum : une variable
TAPSOBA Gilbert/LANIBIO/UJKZ 9
2.2. travaux pratiques 2
F IGURE 2.2 – script scilab pour le calcul d’un optimum : une variable
TAPSOBA Gilbert/LANIBIO/UJKZ 10
2.2. travaux pratiques 2
F IGURE 2.3 – script scilab pour le calcul d’un optimum : une variable
TAPSOBA Gilbert/LANIBIO/UJKZ 11
CHAPITRE 3
OPTIMISATION D’UNE FONCTION :
DEUX VARIABLES
3.1 travaux pratiques 1
On considère la fonction f définie sur R 2 par : f ( x; y) = 2( y − x2 ) + ( x − 1)2 .
1. Déterminer le points critique de f à l’aide d’un script scilab. (3.1)
2. déterminer la nature du point critique à l’aide d’un script scilab. (3.1, 3.2)
3. représenter la fonction f à l’aide de la fonction "surf" de scilab. (3.2)
3.2 travaux pratiques 2
On considère la fonction f définie sur R 2 par f ( x; y) = 2( y − x2 ) + ( x − 1)2 . à l’aide d’un script
scilab :
1. Déterminer l’optimum de f à l’aide de la méthode du gradient à point descendant. (3.3)
2. Déterminer l’optimum de f à l’aide de la méthode du gradient à point fixe.
3. Déterminer l’optimum de f à l’aide de la méthode de newton.
12
3.2. travaux pratiques 2
F IGURE 3.1 – optimum d’une fonction
TAPSOBA Gilbert/LANIBIO/UJKZ 13
3.2. travaux pratiques 2
F IGURE 3.2 – optimum d’une fonction suite
TAPSOBA Gilbert/LANIBIO/UJKZ 14
3.2. travaux pratiques 2
F IGURE 3.3 – programmation à l’aide de la méthode du gradient
TAPSOBA Gilbert/LANIBIO/UJKZ 15
CHAPITRE 4
OPTIMISATION D’UNE FONCTION :
SOUS CONTRAINTE
16
CHAPITRE 5
TRAVAUX DIRIGÉS 1
Exercice 1
p p
Pour chaque fonction f ( x) = 4 x2 − x + 3 + exp ( x) g( x) = 2 x3 + 34 ln(− x + 3) et h( x) = xx++32
1. Calculer à l’aide de script Scialab les images de −10, −5, 0, 6, 35, 15, 25 par f, g et h.
2. construire la courbe de chaque fonction f, g et h sur [−2; 2 ] .
3. proposer un scrip scialab qui donne l’optimum de f, g et h.
4. construire simultanément les courbes des fonctions f et g puis des fonctions g et h et
enfin des fonctions f et h.
Exercice 2
Pour chaque fonction f ( x, y) = 2( y − x2 ) + ( x − 1)2 et g( x, y) = 5 x2 − 6 x y + 2 x + 2 y2 − 2 y + 1
1. déterminer le point critique et l’extremum de chaque fonction
2. construire la surface de chaque fonction sur [−2; 2 ]× [−2; 2 ]
Exercice 3
On définit sur R 2 la fonction f par : f ( x; y) = ( x − 1)2 + 10( x2 − y)2 .
1. Trouver les points critiques de f.
2. démontrer que f admet un unique minimum global qu’elle atteint en X ∗ = (1, 1).
17
Chapitre 5. Travaux Dirigés 1
3. construire la surface de la fonction sur [−2; 2 ]× [−2; 2 ]
Exercice 4
On considère la fonction f définie sur R 2 par : f ( x; y) = 12 x2 + 72 y2
1. Déterminer les points critiques de f et donner leur nature.
2. Représenter la surface représentative de la fonction f sur le pavé [−5, 5 ]× [−5, 5 ] à
l’aide de la Fonction surf .
3. L’objectif ici est de minimiser la fonction f par les méthodes de gradient à pas optimal
et à pas fixe. Pour ce faire, on choisit de démarrer les algorithmes à coder au point de
coordonnées (0, 3; 0, 5).
TAPSOBA Gilbert/LANIBIO/UJKZ 18