Programmation avec SCILAB
Rappel
Prof. : Hicham ATATRI Classe : ECT-2-eme
Email:
[email protected] Centre : CPGE Omar EL Khayam.
Contents
1 MISE EN ROUTE 2
2 LES STRUCTURES CONDITIONNELLES EN SCILAB 2
3 LES BOUCLES EN SCILAB 3
4 LES FONCTIONS EN SCILAB 5
5 CONSTRUCTION DE VECTEURS ET DE MATRICES NUMERIQUES 6
5.1 Vecteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
5.2 Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
page 1 of 8
Statistique en Scilab October 24, 2019
Programmation avec SCILAB
Rappel
Prof. : Hicham ATATRI Classe : ECT-2-eme
Email:
[email protected] Centre : CPGE Omar EL Khayam.
1 MISE EN ROUTE
1. Premiers pas
La ligne de commande dans la console permet de taper des opérations élémentaires, comme pour une
calculatrice scientifique. Il faut taper tous les opérateurs, et bien mettre des parenthèses autour de la
formule.
Une fois la formule correctement entrée, appuyer sur la touche ”entrée” affiche le résultat.
Par exemple :
1 --> 1+1
2 ans =
3 2.
2. Variables
Scilab permet de stocker, manipuler et récupérer des valeurs. Ces valeurs sont stockées dans des
variables, désignées par un nom, et qui possèdent un contenu. Le nom d’une variable doit toujours
commencer par une lettre, et peut contenir des chiffres, des lettres et le symbole , mais pas d’espace,
caractères accentués ou autre symbole. La commande x = 9 permet à Scilab de créer une variable de
nom x (si elle n’existe pas déjà), et de stocker dans celle-ci la valeur 9. L’opérateur d’affectation est
ainsi =, et la formule générale est
1 --> nom = contenu
Les variables peuvent contenir divers types de valeurs : des entiers, des réels, des chaı̂nes de caractères,
des vecteurs, des matrices, etc....
ans est l’abréviation de answer, il s’agit du nom de la variable où la réponse est stockée. Remarque :
On peut effectuer plusieurs commandes sur une même ligne : pour cela on sépare deux commandes
successives par un ; si on ne désire pas que le résultat s’affiche à l’écran (lorsqu’on effectue un calcul
intermédiaire par exemple). Si au contraire on veut voir le résultat affiché, il faut séparer les deux
commandes par un ,
1 --> a=2; b=2;3*a+8*b^3 // le resultat de ce dernier calcul sera affiche
2 ans =
3 70.
2 LES STRUCTURES CONDITIONNELLES EN SCILAB
1. Structure conditionnelle if :
L’instruction if permet d’exécuter une instruction si une condition est satisfaite. if utilise une variable
booléenne pour effectuer son choix : si le booléen est vrai, alors l’instruction est exécutée.
Une condition est fermée lorsque le mot clé end est rencontré.
page 2 of 8
Statistique en Scilab October 24, 2019
1 if ( \%t ) then\\
2 disp("Bonjour !");\\
3 end;\\
Si la condition n’est pas satisfaite, l’instruction else permet d’exécuter une instruction alternative,
comme dans le script suivant.
1 if ( \%f ) then\\
2 disp("Hello !");\\
3 else\\
4 disp("Goodbye !");\\
5 end;\\
Lorsque nous devons combiner plusieurs conditions, l’instruction elseif est utile.
1 i=input("saisir un nombre")\\
2 if ( i == 1 ) then\\
3 disp("Bonjour !");\\
4 elseif ( i == 2 ) then\\
5 disp("Goodbye !");\\
6 elseif ( i == 3 ) then\\
7 disp("Tchao !");
8 else\\
9 disp("Au Revoir !");\\
10 end;\\
3 LES BOUCLES EN SCILAB
Une structure répétitive, également appelée structure itérative ou encore boucle, permet de répéter
plusieurs fois l’ exécution d’une ou plusieurs instructions. On identifie en règle générale deux types de
répétitive :
• for
• while
1. Boucle for
L’instruction for permet d’effectuer des boucles, c’est-à-dire d’effectuer une action donnée plusieurs
fois. La plupart du temps, une boucle est effectuée sur des valeurs entières, qui vont d’une valeur
d’index de départ à une valeur d’index de fin.
• Syntaxe
1 for compteur=debut:pas:fin
2 instructions ..
3 end
Dans le script Scilab suivant, nous affichons la valeur de i, de 1 à 5.
1 for i = 1 : 5
2 disp(i)
3 end
page 3 of 8
Statistique en Scilab October 24, 2019
Nous pouvons utiliser une forme plus complète afin d’afficher les entiers impairs de 1 à 5. Pour ce
faire, nous définissons le pas
1 for i = 1 : 2 : 5
2 disp(i)
3 end
2. Boucle while
L’instruction while permet d’effectuer une boucle tant qu’une expression booléenne est vraie. Au
début de la boucle,si l’expression est vraie, les instructions dans le corps de la boucle sont exécutées.
Lorsque l’expression devient fausse (unévénement qui doit survenir à un certain moment), la boucle
est terminée.
• Syntaxe
while(condition) //instructions si la condition est vraie end Dans le script suivant, nous calculons la
somme des nombres de 1 à 10 avec une instruction while.
1 s=0
2 i=1
3 while ( i<= 10 )
4 s=s+i
5 i=i+1
6 end
3. Instructions break et continue
L’instruction break permet d’interrompre une boucle. Habituellement, nous utilisons cette instruction
dans les boucles où, une fois que certaines conditions sont satisfaites, les boucles ne doivent pas être
continuées.
L’instruction continue permet de passer à la boucle suivante, de sorte que les instructions dans le corps
de la boucle ne sont pas exécutées cette fois. Lorsque l’instruction continue est exécutée, Scilab ig-
nore les autres instructions et passe directementà l’instruction while ou for et évalue la boucle suivante.
• Exemple
1 disp("debut")
2 for i=1:10
3 if(i==5)then
4 break
5 end
6 disp(i)
7 end
8 disp("fin")
le programme affichera :
1 debut
2 1
3 2
4 3
5 4
6 fin
page 4 of 8
Statistique en Scilab October 24, 2019
4 LES FONCTIONS EN SCILAB
1. Définition d’une fonction
Pour définir une fonction (ou procédures) en Scilab, la méthode la plus courante est de l’écrire dans
un fichier, dans lequelon pourra d’ailleurs mettre plusieurs fonctions (en regroupant par exemple les
fonctions qui correspondent à un même thèmeou une même application). Chaque fonction doit com-
mencer par l’instruction :
1 function [y1,y2,...,yn]=nomfonction(x1,x2,...,xp)\\
2 <instructions>\\
3 endfunction\\
où les xi sont les arguments d’entrée (ou paramètres), les yj étant les arguments de sortie (ou résultats).
Une fonction peutavoir 0, 1 ou plusieurs paramètres (placés entre parenthèses) ainsi que 0, 1 ou
plusieurs résultats (placés entre crochets).Dans l’exemple suivant, nous définissons la fonction myfunc-
tion, qui prend l’argument d’entrée x, le multiplie par 2, et renvoie la valeur dans l’argument de sortie y.
1 function y = myfunction ( x )
2 z=2*x
3 endfunction
l’instruction function y = myfunction (x) est l’en-tête de la fonction tandis que le corps de la fonction
est constitué de l’instruction y = 2 * x. Le corps d’une fonction peut contenir une, deux ou plusieurs
instructions.
Supposons que la fonction simplef est définie avec 2 arguments d’entrée et 2 arguments de sortie,
comme suit.
1 function [y1 , y2] = simplef ( x1, x2 )
2 y1 = 2 * x1
3 y2 = 3 * x2
4 endfunction
En fait, le nombre d’arguments de sortie d’une telle fonction peut être 0, 1 ou 2. Lorsqu’il n’y a pas
d’argument de sortie,la valeur du premier argument de sortie est stockée dans la variable ans. Nous
pouvons également définir la variable y1 uniquement. Enfin, nous pouvons utiliser tous les arguments
de sortie, comme prévu. l’exemple suivant présente toutes ces séquences d’appel.
1 --> simplef ( 1 , 2 )
2 ans =
3 2.
4
5 --> y1 = simplef ( 1 , 2 )
6 y1 =
7 2.
8
9 --> [y1,y2] = simplef ( 1 , 2 )
10 y2 =
11 6.
12 y1 =
13 2.
page 5 of 8
Statistique en Scilab October 24, 2019
2. Instruction return
Dans le corps d’une fonction, return permet de revenir immédiatement, c’est-à-dire qu’elle quitte
immédiatement lafonction en cours. Cette déclaration peut être utilisée dans les cas où le reste de
l’algorithme n’est pas nécessaire.
La fonction suivante calcule la somme des entiers de istart à iend. Dans des situations normales, il
utilise la fonction sum poureffectuer son travail. Mais si la variable istart est négative ou si la con-
dition istart ¡= iend n’est pas satisfaite, la variablede sortie y est mise à 0 et la fonction retourne
immédiatement.
1 function y = mysum ( istart , iend )
2 if ( istart < 0 ) then
3 y=0
4 return
5 end
6 if ( iend < istart ) then
7 y=0
8 return
9 end
10 y = sum ( istart : iend )
11 endfunction
l’exemple suivant permet de vérifier que l’instruction return est correctement utilisée par la fonction
mysum.
1 --> mysum ( 1 , 5 )
2 ans =
3 15.
4
5 --> mysum ( -1 , 5 )
6 ans =
7 0.
8
9 --> mysum ( 2 , 1 )
10 ans =
11 0.
5 CONSTRUCTION DE VECTEURS ET DE MATRICES NUMERIQUES
5.1 Vecteurs
1. Création d’un vecteur en donnant la liste des éléments
Pour définir un vecteur de petite taille, on donne la liste des éléments du vecteur entre crochets,
séparés par des virgules (ou des espaces) pour un vecteur ligne et séparés par des points-virgules pour
un vecteur colonne.
Par exemple :
1 --> v=[2,-3*%pi,7] // vecteur ligne
2 v =
3 2. - 9.424778 7.
4 --> w=[2;-3*%pi;7] // vecteur colonne
5 w =
page 6 of 8
Statistique en Scilab October 24, 2019
6 2.
7 - 9.424778
8 7.
La commande ’ permet de basculer d’un vecteur ligne à un vecteur colonne (et réciproquement).
1 --> w=[2,-3*%pi,7]’ // vecteur transpose
2 w =
3 2.
4 - 9.424778
5 7.
2. Création d’un vecteur dont les éléments forment une suite arithmétique
Pour un vecteur ligne v dont les éléments forment une suite arithmétique de premier terme a, de raison
r et ne dépassant pas b, on utilise la commande : v = a : r : b.
Par exemple :
1 --> v=-3:2:14 //vecteur increment constant
2 v =
3 - 3. - 1. 1. 3. 5. 7. 9. 11. 13.
3. Création d’un vecteur avec linspace
Pour un vecteur ligne de pas constant (pas forcément déterminé à l’avance mais que Scilab calcule),
dont le nombre de termes, le premier terme et le dernier terme sont imposés, on utilise la commande
v=linspace(début, fin, nombre de valeurs).
1 --> v=linspace(-5,8,6)
2 v =
3 - 5. - 2.4 0.2 2.8 5.4 8
5.2 Matrices
1. Création d’une matrice de petite taille
Pour définir une matrice de petite taille, on donne la liste des éléments de la matrice entre crochets,
les éléments de chaque ligne étant séparés par des virgules (ou des espaces) et les lignes étant séparées
par des points-virgules.
Par exemple :
1 --> A=[1,2,3;4,5,6]
2 A =
3 1. 2. 3.
4 4. 5. 6.
2. Création d’une matrice de grande taille
Pour une matrice de grande taille, on peut lorsque c’est possible, définir chaque ligne comme on définit
un vecteur, les lignes étant toujours séparées par des points-virgules.
1 --> A=[1:4;2:5;3:6]
2 A =
3 1. 2. 3. 4.
4 2. 3. 4. 5.
5 3. 4. 5. 6.
3. Matrices prédéfinies
page 7 of 8
Statistique en Scilab October 24, 2019
• ones(n,m) matrice à n lignes et m colonnes dont tous les éléments sont égaux à 1.
• zeros(n,m) matrice à n lignes et m colonnes dont tous les éléments sont égaux à 0.
• eye(n,m) matrice à n lignes et m colonnes avec des 1 sur la diagonale et des 0 ailleurs.
4. Opérations sur les matrices
La concaténation :
permet de juxtaposer vecteurs et matrices dont les formats sont compatibles.
Par exemple :
1 --> u=1:3; v=[u,u,u]
2 v =
3 1. 2. 3. 1. 2. 3. 1. 2. 3.
Remqraue : Il ne faut pas confondre virgule et point-virgule.
1 --> u=1:3; v=[u;u;u]
2 v =
3 1. 2. 3.
4 1. 2. 3.
5 1. 2. 3.
Opérations arithmétiques classiques
On considère deux matrices A et B, pour lesquelles les opérations ci-dessous sont possibles, un réel k
et un entier n.
1 --> A=[1,0,0;0,2,0;0,0,3]; B=[1,1,1;2,2,2;3,3,3]; A+B, A*B
2 ans =
3 2. 1. 1.
4 2. 4. 2.
5 3. 3. 6.
6 ans =
7 1. 1. 1.
8 4. 4. 4.
9 9. 9. 9.
Opérations arithmétiques pointées
Ce sont des opérations élément à élément. On considère deux matrices A = (ai,j ) et B = (bi,j ) de
même format et un entier n.
1 --> A=[1,0,0;0,2,0;0,0,3]; B=[1,1,1;2,2,2;3,3,3]; A.*B, A./B
2 ans =
3 1. 0. 0.
4 0. 4. 0.
5 0. 0. 9.
6 ans =
7 1. 0. 0.
8 0. 1. 0.
9 0. 0. 1.
Partie 2 : Simulation des lois de probabilite