Académique Documents
Professionnel Documents
Culture Documents
SCILAB
SCILAB
Dr. M. DIOP
1
Table des matières
1 Calcul Matriciel 8
2.3.3 La commande if . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.1 Graphes 2D et 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2
4 APPLICATION DES METHODES NUMERIQUES AVEC SCILAB 40
3
INTRODUCTION
Scilab est un logiciel, un outil et en même temps un langage. C’est un logiciel interactif
de calculs numériques. Les domaines d’application sont très variés comme le traitement
vailler soit interactivement en passant des commandes directement au clavier (comme une
calculatrice) ; soit de réaliser des programmes (appelés scripts) ou de définir des fonctions.
Toutefois, les principales notions sont présentées et invitent l’étudiant à chercher par lui-
ENVIRONNEMENT DE SCILAB
• Pour lancer Scilab dans les environnements Windows ou MacOs, il suffit de cliquer sur
4
où on distingue 4 fenêtres :
2 : C’est la zone de commande (aussi appelé le terminal). Cette zone permet de taper les
commandes ou les expressions à évaluer à droite du prompt −− > puis taper < enter >
3 : C’est la zone des variables, des tableaux. Cette zone permet de visualiser les variables
4 : C’est la zone de l’historique des commandes. Il est possible de faire glisser ces com-
• Scilab est un langage interprété, c’est à dire qu’il exécute directement (sans compilation)
Exemple
−− > 2+5
ans =
Le résultat est mis automatiquement dans une variable appelée ans (answer). Celle-ci peut
5
être utilisée pour le calcul suivant.
Il peut être utile d’enregistrer le résultat d’un calcul dans une variable autre que ans. On
le fait en mettant le nom de la variable à gauche d’un signe égal qui à droite a le résultat
du calcul :
Exemple
−− > a=2+5
a=
• Scilab gère les nombres entiers, réels, complexes, les chaı̂nes de caractères ainsi que les
possible, et si plusieurs lignes d’instructions ont été tapées, les modifications ne sont pas
aisées.
• Pour ouvrir l’éditeur à partir de la console, cliquez sur la première icone dans la barre
d’outils ou sur Applications>SciNotes dans la barre de menus. (ou dans la console edit).
L’éditeur s’ouvre avec un fichier par défaut qui s’intitule « sans titre 1 »
6
• Pour compiler le fichier on clique sur Exécuter dans la barre de menus, trois options
sont proposées :
a) fichier sans écho : le fichier est exécuté sans que le programme ne s’écrive dans la
c) jusqu’au curseur, avec écho : réécrit la sélection choisie avec la souris dans la console
et l’exécute.
• L’aide sur SciLab est caractérisé par la fonction ”help” qui va afficher l’aide général.
Pour avoir une aide spécifique, il faut renseigner à la fonction ”help” ce que nous voulons
chercher réellement.
• Le logiciel Scilab est essentiellement basé sur le calcul matriciel numérique. Tous les
objets utilisés dans Scilab sont donc définis au travers de matrices ou vecteurs.
7
Chapitre 1
Calcul Matriciel
Les composantes d’une même ligne sont séparées par un espace ou une virgule. Les
lignes sont séparées par un point virgule. La matrice est déterminée par des crochets,
-->A = [1 2;3 4]
A =
1. 2.
3. 4.
Les composantes d’une matrice peuvent être des nombres réels, complexes ou d’un
v =
8
Afin d’alléger l’affichage, un point-virgule « ; » en fin de commande empêche le renvoie
−− > v(i)
Soit A une matrice, l’élément en troisième ligne et quatrième colonne s’obtient par :
» A(3,4)
−− > A(i, :)
−− > A( :,j)
On peut aussi facilement extraire des sous matrices d’une matrice à l’aide de cette syntaxe
Pour mettre sous forme d’un vecteur colonne les colonnes de A les unes après les autres,
on écrit :
−− > A( :)
Enfin, pour supprimer des lignes ou des colonnes d’une matrice, on les remplace par une
A([1 2], :) ou A(1 :2, :) fournit la matrice composée des 2 premières lignes de A
9
TP Soit
0 −8 6 6
A= ∈ M4 (R)
−1 −8 7 −8
1 −14 11 1
1. créer la matrice A.
A(2,3), A(2, :), A( :,3), A(2 :3, :),A(1 :2,3 :4), A([1,3],[2,4]),A( :,1)=[], A(2, :)=[], A=[A,[0 ;0]],A( :,4)=
NB : Plusieurs commandes peuvent être écrites sur une ligne. Elles seront alors séparées
Le symbole % dans une ligne a pour effet que le reste de la ligne ne sera pas exécuté (ceci
Remarque
Dans Scilab, il existe des fonctions qui permettent de générer automatiquement des
matrices particulières.
La fonction ones(m,n) construit une matrice de taille m × n dont toutes les composantes
-->A=ones(3,5)
A =
1. 1. 1. 1. 1.
10
1. 1. 1. 1. 1.
1. 1. 1. 1. 1.
De façon similaire, on peut définir une matrice de composantes nulles avec zeros(m,n).
-->A=zeros(5,3)
A =
0. 0. 0.
0. 0. 0.
0. 0. 0.
0. 0. 0.
0. 0. 0.
La fonction eye(m,n) construit une matrice dont les éléments diagonaux sont égaux à
-->A=eye(3,4)
A =
1. 0. 0. 0.
0. 1. 0. 0.
0. 0. 1. 0.
v=linspace(1,5,3)
v =
1. 3. 5.
11
Nous présentons dans la suite (TP) un ensemble de fonctions usuelles liées à l’utilisation
des matrices.
max(A) , min(A) , rank(A) , det(A) , diag(A) , triu(A) tril (A), inv(A) et spec(A)
Pour obtenir les dimensions d’un vecteur, on peut utiliser les fonctions size ou length.
-->p=[1 2 3 4]
p =
1. 2. 3. 4.
-->q=p’
q =
1.
2.
3.
4.
Maintenant pour
-->length(p)
ans =
12
4.
-->length(q)
ans =
4.
De même,
-->size(p)
ans =
1. 4.
-->size(q)
ans =
4. 1.
0
p est la transposée de p. La fonction length peut aussi être utilisée pour les matrices.
Les opérations usuelles entre matrices et entre matrices et vecteurs sont aussi possibles.
-->A=[1 2;3 4]
A =
1. 2.
3. 4.
13
-->B=[4 3;2 1]
B =
4. 3.
2. 1.
-->A+B
ans =
5. 5.
5. 5.
-->A-B
ans =
- 3. - 1.
1. 3.
-->A*B
ans =
8. 5.
20. 13.
0
La transposée d’une matrice est obtenue avec . Par exemple, C = AT s’obtient avec
-->C=A’
C =
14
1. 3.
2. 4.
-->P=A.*B
P =
4. 6.
6. 4.
construit une matrice P = (pij ) ayant les mêmes dimensions et définie par
De même
-->Q=A./B
Q =
0.25 0.6666667
1.5 4.
15
max(A) , min(A) , rank(A) , det(A) , diag(A) , triu(A) tril (A) et inv(A)
Description
colonne.
colonne.
2. En utilisant uniquement les commandes ones et zeros donner les instructions qui per-
l’élément a1,3 .
NB Les dimensions des matrices intervenant dans les opérations doivent évidemment être
compatibles pour l’opération envisagée. Si tel n’est pas le cas, un message d’erreur sera
16
1.1.4 Systèmes linéaires
L’algorithme d’élimination de Gauss est implémenté pour résoudre les systèmes linéaires.
A =
1. - 1. 2.
7. - 3. 2.
1. 8. 5.
-->b=[0; 2; -5]
b =
0.
2.
- 5.
-->x=A\b
x =
0.1833333
- 0.45
- 0.3166667
17
Il existe d’autres fonctions fonctions numériques pour résoudre les systèmes linéaires
x = A\b par
-->A1=inv(A)
A1 =
-->x=A1*b
x =
0.1833333
- 0.45
- 0.3166667
x + 2y − z = 1
−x + 3y − z = 0
−x + 2y − 5z = 0
TP Soit
0 1 1
A=
1 0 1
1 1 0
18
3. Si oui, Calculer son inverse A−1 .
0 2 −1
A=
−1 3 −1
−1 2 0
1. Déterminer le spectre de A.
2y − z = 1
−x + 3y − z = 0
−x + 2y = 0
Remarque
Les commandes effectuées jusqu’à maintenant ont créé des variables qui sont stockées
19
Chapitre 2
lab. Parmi les fonctions fréquemment utilisées, on peut noter les suivantes :
20
−− > conj : complexe conjugué,
principale d’un programme. Scilab a son propre éditeur, mais n’importe quel éditeur de
text suffit.
prédéfinie, mais à coté de ses fonctions prédéfinies, Scilab offre à l’utilisateur la possibi-
lité de définir ses propres fonctions : La première méthode permet de définir des fonctions
simples sur une ligne de commande. La seconde, beaucoup plus générale permet de définir
♠ Commande deff()
créer la fonction directement dans l’espace de travail courant, sans utiliser un m-file .
deff(’y=f(x)’,’y=expression’)
Remarque
L’expression mathématique qui constitue le corps de la fonction ainsi que les variables
21
sont considérées par Scilab comme des chaines de caractères et doivent donc être tapées
entre apostrophes.
♠ Les fonctions
Pour définir une fonction en Scilab, la méthode la plus courante est de l’écrire dans un
fichier dont le nom comporte l’extension .sci, dans lequel on pourra d’ailleurs mettre plu-
y1 =
y2 =
..
.
yn =
endfunction
où les variables arg1 , arg2 , · · · argn sont les variables d’entrées et ils ne doivent pas être
Les variables y1 , y2 , ...yn sont les arguments de sortie, la fonction doit affecter une valeur
pour y1 , y2 , ...yn .
Le rôle d’une fonction est d’effectuer des opération sur une ou plusieurs entrée pour ob-
Une fonction est appelé depuis un script (un programme principal) ou dans une fenêtre
» nom fonction( )
TP : définir une fonction avec function où f (x) = x2 +x+1 et calculer f(2), f(-1), f(0),f(10)
function[y] = lmi(x)
22
y = x.∧ 2 + x + 1
end
Les instructions de contrôle sont à la base de tout calcul numérique. En Scilab, les
boucles for et while sont très utilisées pour les processus itératifs. Leur utilisations est le
premier pas dans la programmation. Il est donc indispensable de les bien comprendre.
La boucle for / end répète une instruction un certain nombre de fois. Sa forme
générique est :
for i = 1 : n
instruction 1
instruction 2
instruction k
end
for i = 1 : 2 : n
instruction 1
23
instruction 2
instruction k
end
Ici 2 est la valeur du pas. Ainsi les valeurs correspondantes de i sont 1, 3, 5, 7 et 9. Par
-->A=zeros(5,5);
-->for i=1:5
-->A(i,i)=1;
-->end
-->for i=1:4
-->A(i,i+1)=2;
-->end
-->disp(A)
1. 2. 0. 0. 0.
0. 1. 2. 0. 0.
0. 0. 1. 2. 0.
0. 0. 0. 1. 2.
0. 0. 0. 0. 1.
24
for est associée à une variable, et exécute un processus plusieurs fois en prenant à chaque
Exemple Soit A=[1 1 2 3] utilise la boucle for pour soustraire à tous les éléments (sauf
on écrit
−− > for i = 2 : 4
A(i)=A(i)-A(1)
end
TP Calculer
100
i2
X
S=
i=1
−− > S=0
−− > S = S + i2
−− > end
La boucle while / end répète une instruction jusqu’à ce qu’une condition, ou un groupe
while condition
instruction
end
-->A=eye(5,5);
25
-->i=1;
-->while i<5
--> A(i,i+1) = 2;
--> i = i + 1;
-->end
-->disp(A)
1. 2. 0. 0. 0.
0. 1. 2. 0. 0.
0. 0. 1. 2. 0.
0. 0. 0. 1. 2.
0. 0. 0. 0. 1.
TP Calculer
100
i2
X
S=
i=1
» S=0
» i=1
» while i <=100
» S = S + i2 ;
»i=i+1
» end
26
TP Soient la matrice et les vecteurs colonnes suivants
1 2 2 1 5
A=
1 −1 ,b =
1
, u0 =
0
2
5 1 −2 5 −4
1. Construire une fonction suite.sci calculant les premiers termes de la suite un . Cette
fonction aura comme arguments d’entrée les données suivantes : la matrice A, le second
2.3.3 La commande if
Les instructions conditionnés, enfin, permettent d’ effectuer une action si une certaine
condition est satisfaite. La plus simple est if, qui exécute des commandes seulement si
une condition est remplie (par exemple un test préalable renvoie la valeur VRAI). Dans
sa version la plus complète la structure if permet aussi de prévoir ce que l’on fait si la
condition n’est pas remplie (par exemple le test renvoie la valeur FAUX).
if condition 1
expression 1
else if condition 2
expression 2
else
expression 3
end
27
-->A=zeros(5,5);
-->for i=1:5
-->for j=1:5
--> A(i,j) = 2;
-->elseif j==i
--> A(i,j) = 1;
-->end
-->end
-->end
-->disp(A)
1. 2. 0. 0. 0.
0. 1. 2. 0. 0.
0. 0. 1. 2. 0.
0. 0. 0. 1. 2.
0. 0. 0. 0. 1.
D’autres instructions de contrôle telles que switch, break, continue, et error sont dispo-
nibles. Vous pourrez consulter la documentation avec la commande help suivi du nom de
la commande.
== égal
< inférieur à
>supérieur à
28
>= supérieur ou égal à
| ou
∼ non
TP
Faire un programme sous Scilab qui trouve les racines d’une équation de second degré
ax2 + bx + c=0
TP
x six < 0
1. y = x2 six > 0
10 six = 0
x six < 0
2. y=
x2 six ≥ 0
TP
TP Soit
Xn+1 = AXn + b
X0 donné
29
1 2 −1 1
Avec A =
−1 3 −1
et b=
1
−1 2 0 1
1
Calculer X1 , X2 , X3 , X4 , X5 , X6 , X7 . Prenez X0 =
0
1
• Nous pouvons calculer le temps CPU d’exécution d’un programme. Il suffit de faire
l’instruction tic au début du script et ensuite de faire toc en fin du script pour avoir le
30
Chapitre 3
données en Scilab
Dans cette partie, nous allons présenter les principes de base indispensable pour des-
siner des courbes sous Scilab. Les graphiques, crées peuvent être visualiser en TP.
3.1 Graphes 2D et 3D
La commande de base utilisée est la commande plot. Dans sa syntaxe la plus simple,
Exemple : Pour obtenir le graphe de la fonction sin(x) sur l’intervalle [0, 2π], nous com-
−− > x = [0 : .5 : 2π] ;
−− > y=sin(x) ;
−− > plot(x,y)
Remarque
31
Si une figure existe déjà, elle trace le graphe sur cette figure sinon SCILAB crée automa-
Exemple :
−− > figure(1) ;
−− > f=cos(x) ;
−− > plot(x,f)
−− > figure(2) ;
−− > g=sin(x) ;
−− > plot(x,g)
Ces deux séquences construisent deux fenêtres, la première contenant le graphe de cos(x),
TP :
−− > x=[0 : .1 : 2 ∗ π] ;
−− > f=cos(x) ;
−− > g=sin(x) ;
−− > plot(x,f)
−− > plot(x,g)
Les deux graphes, celui de cos(x) et celui de sin(x), apparaissent dans la même fenêtre et
−− > x=[0 : .1 : 2 ∗ π]
−− > plot(x,f,x,g)
param3d
32
Exemple
−− > x = 4*sin(t) ;
−− > y =4*cos(t) ;
−− > z =2*t ;
−− > param3d3(x,y,z)
Exemple
−− >y = sin(t) ;
−− > plot3(x,y,t)
−− > title(’Helice’)
On a différents plot :
plot2d4 flèches
Lorsque plusieurs tracés ont lieu dans la même fenêtre, il peut être intéressant d’utiliser
un style différent pour distinguer les différents tracés. Pour cela on ajoute un troisième
comme suit :
33
couleurs symboles Tracés continus
g vert * étoiles
b bleu d diamants
Exemple
Exemple
−− > f=cos(x) ;
−− > g=sin(x) ;
−− > plot(x,f,’o’,x,g,’*’)
Exemple
34
3.1.2 Annotation de figure
Les différentes fonctions suivantes permettent de gérer les labels des axes et commen-
taires sur les figures, ainsi que diverses fonctions pour manipuler les graphiques.
√
Pour donner un titre à une figure, on utilise la fonction title comme suit :
suit :
suit :
−− > xgrid
√
La légende (surtout en cas de plusieurs graphes) peut être affichée en utilisant la com-
Exemple de programmation
TP :
−− > y = sin(x) ;
−− > plot(X,Y)
−− > xgrid
Exercice
Soit un vecteur x contenant des valeurs comprises entre 0 et 10 avec un pas de 0.05. 1.
35
Ecrire le fichier (f.sci) qui crée la fonction f (x) = x exp(−x2 ) − 0.2/x3
2. Ecrire (prog.sci) qui trace le graphe de f (x), Ajouter le libellé des axes (titres) et don-
Exercice
Soit un vecteur x contenant des valeurs comprises entre −6π et 6π avec un pas de 0.001.
Soit deux fonctions f et g définie par : f (x) = sin( π4 x) et g(x) = cos( π4 x).
(Veillez à ce que ce graphe ait un titre, des noms aux axes, une légende).
Il est possible de décomposer une fenêtre en sous-fenêtres et d’afficher une figure différente
TP :
1. Soit un vecteur x contenant des valeurs comprises entre 0 et 2π avec un pas de 0.1.
2. Utiliser la fonction subplot pour tracer ces courbes dans la même fenêtre (Veillez à ce
que chaque graphe ait un titre, des noms aux axes, une légende).
TP :
x(t) = A cos(t)
avec 0 ≤ t ≤ 2π
y(t) = B sin(t)
36
TP :
+∞
X
f (t) = an cos(nwt)
n=1
Avec an = 2A
nπ
sin(n π2 ) et w = 2π
T
valeurs de n.
•Surfaces : le tracé d’une surface dans l’espace se base sur : la fonction mesh(X,Y,Z) ou
surf(X,Y,Z)
−− > y = x ;
−− > surf(X,Y,Z) ( donne une représentation où les mailles sont colorées).
Exemple :
−− > x = [- pi :0.2 : pi ] ;
−− > y = [- pi :0.2 : pi ] ;
37
3.2 Autres types de graphes
Scilab ne permet pas uniquement l’affichage des point pour tracer des courbes, mais
Les calculs statistiques de base peuvent être effectués avec Scilab. Pour des calculs plus
Application
Pour des véhicules légers on a relevé les consommations moyenne de carburant en fonction
Vitesse (km/h) 10 20 30 40 50 60 70 80 90
2. Calculer les moyennes arithmétiques, les variances, les écart type, la covariance de x y
suit :
−− > plot(X,Y)
√
Pour la moyenne on utilise la fonction mean comme suit :
38
• La fonction barh dessine les bâtons horizontalement et Parmi les fonction de dessin, on
39
Chapitre 4
allons voir dans ce qui suit, comment utiliser Scilab comme un véritable langage de pro-
grammation.
4) créer l’algorithme de calcul : que va-t-on vouloir faire étape par étape
6) évaluer chaque étape : lancer le programme à chaque étape et voir la cohérence des
résultats.
40
4.1 Problèmes aux limites
et mécaniques.
u(a) = ga , (4.2)
u(b) = gb (4.3)
(4.4)
Où c(x) ∈ L∞ (]a, b[) un coefficient qui dépend des propriétés du matériau (module de
problème modélise la déformation u d’un fil élastique de longueur b − a avec (a < b) fixé
Diffusion de la chaleur
∂T (x, t) ∂ 2 T (x, t)
−α = f (x, t), ∀x ∈]a, b[ , ∀t > 0 (4.5)
∂t ∂x2
T (x, 0) = T0 (x), ∀x ∈]a, b[, (4.6)
41
Où T est la température de la barre métallique de longueur l([a, b]) = b − a, α > 0 le
Es
Où b(x) = Ep Ip (x)
, Es module de réaction du sol, Ep le module d’élasticité du pieu, Ip (x)
l’inertie du pieu, f ∈ L2 (]a, b[) et 0 < b ∈ L∞ (]a, b[). Ce problème modélise la déformation
Tous ces problèmes sont des appelés ”problèmes aux limites” et leur résolution analytique
est très complexe et généralement impossible. Nous allons dans ce chapitre proposer une
méthode d’approximation à savoir la méthode des différences finies pour trouver la solution
La méthode est basée sur l’approximation des dérivées par leur quotient différentiel. En
u(x + h) − u(x)
u0 (x) = lim
h→0 h
u(x+h)−u(x)
. Pour h ≪ 0 on pose u0 (x) approximativement égale à son quotient différentiel h
i.e
u(x + h) − u(x)
u0 (x) '
h
42
pour h ”très petit” (h ≪ 0). On utilise le développement limité de u autour de x à l’ordre
2. on a alors
h2 (2)
u(x + h) = u(x) + hu0 (x) + u (η)
2!
u(x + h) − u(x) h
− u0 (x) = u(2) (η) → 0
h 2!
u(x + h) − u(x)
u0 (x) '
h
u(x + h) − u(x)
u0 (x) '
h
u(x) − u(x − h)
u0 (x) '
h
u(x + h) − u(x − h)
u0 (x) '
2h
43
par :
u(x + h) − 2u(x) + u(x − h)
u00 (x) '
h2
par :
u(x − 2h) − 4u(x − h) + 6u(x) − 4u(x + h) + u(x + 2h)
u(4) (x) '
h4
suivante :
u(xi + h) − 2u(xi ) + u(xi − h)
u00 (xi ) ' ;
h2
avec fi la valeur approchée de f au point xi . Les conditions aux bords sont discrétisées
44
ui+1 − 2ui + ui−1
− + ci ui = fi , ∀i ∈ {1, 2, . . . N } (4.12)
h2
u0 = ga (4.13)
uN +1 = gb , (4.14)
approchant le modèle (M1 ). On dit usuellement qu’on a discrétisé le problème par une
2
aii = + ci , ∀i ∈ {1, 2, . . . N }
h2
−1
aij = h2
, ∀(i, j) ∈ ({1, 2, . . . N })2 et |i − j| = 1 ,
aij = 0, ailleurs
u1
u2
.
Uh =
.
.
uN
et
ga
f1 + h2
f2
.
Fh =
.
.
.
gb
fN + h2
45
Pour déterminer la solution discrète Uh , il suffit donc de résoudre le système d’équation
linéaire Ah Uh = Fh .
1
− u00 (x) + u(x) = p, ∀x ∈]0, 1[ (4.15)
EI
u(a) = 0, (4.16)
u(b) = 0 (4.17)
(4.18)
qui traduit la déformation d’une poutre en flexion fixée à ses extrémités, où le module de
on va résoudre le système Ah Uh = Fh .
Dans cette partie, nous allons réaliser sous Scilab, des calculs symboliques ( opération
sur les polynômes, recherche des racines, dérivation, intégration, résolution d’équations
46
comme résultat. N’ayant pas été abordée au cours théorique, la collection de fonctions
Scilab permettant la réalisation de ces types de calcul se trouve dans la boite à outil
47