Académique Documents
Professionnel Documents
Culture Documents
Initiation ` a Scilab
El Miloud ZAOUI
c
erale - 2013
Table des mati`eres
0.1 Scilab dans lenvironnement WINDOWS . . . . . . . . . . . . . . . . . . . . . . 3
0.2 Denition et manipulation des objets Scilab . . . . . . . . . . . . . . . . . . . . 3
0.2.1 Nombres reels et complexes . . . . . . . . . . . . . . . . . . . . . . . . . 3
0.2.2 Chanes de caract`eres . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
0.2.3 Booleens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
0.3 Objets vectoriels et matriciels . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
0.3.1 Construction de vecteurs et de matrices . . . . . . . . . . . . . . . . . . 6
0.3.2 Extraction et insertion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
0.3.3 Operations vectorielles et matricielles . . . . . . . . . . . . . . . . . . . 10
0.4 Programmation de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
0.4.1 Script Scilab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
0.5 Boucles et instructions de controle . . . . . . . . . . . . . . . . . . . . . . . . . 12
0.5.1 Instruction for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
0.5.2 Boucle while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
0.5.3 Instruction de controle if . . . . . . . . . . . . . . . . . . . . . . . . . . 13
0.5.4 Instruction de controle select-case . . . . . . . . . . . . . . . . . . . . . 14
0.6 Fonctions Scilab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
0.6.1 Fonction en ligne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
0.6.2 Fonction dans un chier . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2
Initiation `a Scilab
0.1 Scilab dans lenvironnement WINDOWS
En cliquant sur licone Scilab, une fenetre XScilab va apparatre.
`
A linterieur de cette fenetre, on peut rentrer une suite dinstructions apr`es linvite > qui
attend vos commandes.
En passant une commande, Scilab linterpr`ete, levalue, donne le resultat puis redonne linvite
( >).
Pour explorer Scilab, on peut commencer par examiner les exemples, ce qui se fait, sousWin-
dows, en cliquant sur le bouton ? puis Demonstrations Scilab.
Pour la documentation en ligne on utilise les commandes help o` u apropos :
* On utilise la commande help quand on connait le nom exact de la fonction :
> help det
* On utilise apropos dans le cas o` u on ne dispose que dun mot cle :
> apropos(min).
0.2 Denition et manipulation des objets Scilab
0.2.1 Nombres reels et complexes
Les variables Scilab nont pas besoin de declaration de type ni dallocation de memoire
avant leur utilisation ; Les variables sont cree au vol par aectation, par exemple, si on veut
declarer la variable x et lui aecter la valeur 100 on tape :
> x = 100.
puis on tape entrer pour avoir :
x =
100.
On peut faire de meme pour la variable a
> a = 10. ;
Pour verier si une variable est dej`a declaree, on utilise la commande exists. Si la variable
concernee existe, exists renvoie 1 sinon elle renvoie 0.
> exists(x)
ans =
1.
3
Pour verier le type dune variable, on utilise type. Cette fonction retourne le type de la va-
riable :
> type(x)
La commande clear supprime de lenvironnement les variables dont les noms sont species :
>clear x ;
supprime la variable x de lespace de travail.
Sans argument clear supprime toutes les variables sauf celles qui ont ete protegees par pre-
def :
>clear ;
Pour declarer un nombre complexe, on utilise la variable reservee %i :
> z=1+5*%i
ans =
z =
1. + 5.i
real et imag renvoient respectivement les parties reelle et imaginaire :
>real(z)
>imag(z)
Scilab fournit les operations mathematiques habituelles : addition, soustraction, multipli-
cation, division, . . . et les fonctions elementaires comme sinus, cosinus, exponentielle, ....
Remarque 1 *) Scilab dispose des variables reservees, taper who pour plus de details.
*)
`
A defaut dune assignation `a gauche, le resultat est stocke dans la variable temporaire
de nom ans qui est conservee tant quelle nest pas redenie.
> 2012 ;
> ans
ans =
2012.
*) Dans Scilab, les valeurs numeriques sont codees en double precision (64 bits). Par
consequent, les nombres sont representes avec une precision relative de lordre de 10
16
:
>%eps %eps =
2.220D-16
>1 + %eps
ans = 1.
*) Pour eviter lachage `a lecran, on utilise le ( ;) `a la n de linstruction.
0.2.2 Chanes de caract`eres
On utilise des apostrophes ( )ou des guillemets ( )pour denir une chane de caract`eres :
> je suis une chaine de caracteres
ans =
4
je suis une chaine de caracteres
Doubler les apostrophes ou les guillemets, si la chane les contient dej`a :
> Je m appelle Scilab
ans =
Je mappelle Scilab
Les operations de base sur les chanes de caract`eres sont :
la concatenation + :
> chaine = Scilab est + bon logiciel
chaine =
Scilab est bon logiciel
La soustraction
> part(str, 14 :20)
ans =
Scilab
La fonction part permet dextraire dune chane chaine une souschane :
>chaine =123456789
chaine =
123456789
Pour extraire la sous-chane chaine se trouvant entre les positions 5 et 7 :
> chaine1 = part(chaine, 5 :7)
chaine1 =
567
>expression = sin(3)+1
expression =
sin(3)+1
(0.5)
ans =
1. 1.4142136
0. 1.7320508
> 2 .
(0 :8)
ans =
1. 2. 4. 8. 16. 32. 64. 128. 256.
11
0.4 Programmation de base
0.4.1 Script Scilab
*) Un programme Scilab est une suite dinstructions. Ces instructions peuvent etre placees
dans un chier (que lon appelle un script) `a laide dun editeur de texte tel que Scipad
(son propre editeur).
*) Lexecution se fait `a laide de linstruction : exec(nom-chier.sce).
*) Exemple, si le chier sappelle test.sce et contient :
a = [1, 2, 3;
4 5 6;
7 8 9];
b=2 ;
*) On peut executer le script par : exec(test.sce)
0.5 Boucles et instructions de contr ole
0.5.1 Instruction for
Pour un nombre determine de fois inconditionnellement.
Syntaxe :
*) for variable=expression ,instruction, ,instruction,end
*) for variable=expression do instruction, ,instruction,end
> Nligne = 3 ;
> Ncologne = 4 ;
> for i=1 : Nligne
> for j=1 :Ncologne
> A(i,j) = i+j ;
> end
> end
>A
A =
2. 3. 4. 5.
3. 4. 5. 6.
4. 5. 6. 7.
Remarque 2 Si expression est une matrice ou un vecteur ligne, variable prend successivement
les valeurs de chaque colonne de la matrice.
> Tab = [1 3 5 7] ;
>for i=Tab
12
>somme = somme +i ;
>end
>somme
somme =
16.
0.5.2 Boucle while
Tant que son argument est un booleen vrai, la boucle while execute son contenu. Syntaxe :
*) while expr ,instructions,...[,else instructions], end
*) while expr do instructions,...[,else instructions], end
*) while expr then instructions,...[,else instructions], end
> x=1 ; while(1+x>1) do x=x/2 ; end
Remarque 3 *) Chaque mot-cle then ou do soit sur la meme ligne que le while corres-
pondant.
*) La construction, else instructions permet de specier des instructions `a executer si
lexpression expr est fausse.
0.5.3 Instruction de contr ole if
Linstruction de controle if permet dexecuter conditionnellement des instructions.
i=2 ;
for j = 1 :3
if i == j then a(i,j) = 2 ;
elseif abs(i-j) == 1 then a(i,j) = -1 ;
else a(i,j) = 0 ;
end ;
end
Syntaxe :
if expr-1 then instructions 1
elseif expr-i then instructions-i
....
else instructions
end
*) Si lexpression expr-1 est vraie, les instructions-1 sexecutent. Sinon, si expr-i est vraie
, les instructions-i sexecutent.
Sinon, les textitinstructions sexecutent.
13
0.5.4 Instruction de contr ole select-case
while %t do
n=round(10*rand(1,1))
select n
case 0 then
disp(0)
case 1 then
disp(1)
else
break
end
end
Syntaxe :
select expr,
case expr-1 then instructions-1,
case expr-2 then instructions-2,
.
.
.
case expr-n then instructions-n,
[ else instructions ] ,
end
Remarque 4 *) Les instructions-i sont executees si expr-i=expr.
*) Contrainte : chaque mot-cle then soit sur la meme ligne que le case correspondant.
0.6 Fonctions Scilab
0.6.1 Fonction en ligne
Exemple 1
> function y= RacineCarreeEx1(x)
> y = sqrt(x) ;
> endfunction
Pour tester la fonction de lexemple 1, on tape par exemple :
> RacineCarreeEx1(400)
Exemple 2
> de(y=RacineCarreeEx2(x),y=sqrt(x))
De meme, pour tester la fonction de lexemple 2, on tape par exemple :
> RacineCarreeEx2(100)
14
0.6.2 Fonction dans un chier
Syntaxe :
function [arguments-de-sortie] = nom-de-la-fonction(arguments-d-entree)
Denir la fonction.
endfunction
Exemple
*)
Ecrire une fonction Scilab dans le chier racines.sci avec trois arguments en entree
(les coecients a, b et c) et un argument en sortie, le vecteur R contenant les deux racines
du polynome. Dans le cas de racines doubles, mettre 2 fois la meme valeur dans R. Sil
ny a pas de racines reelles, mettre des %nan dans R.
*) Tester votre fonction avec les valeurs suivantes :
a = 1, b = 2, c = 1;
a = 1, b = 3, c = 2;
a = 1, b = 0, c = 1.
Programme test
function R = racines(a,b,c)
Delta = b*b - 4*a*c ;
if(Delta > 0.) then R(1)= (-b-sqrt(Delta))/(2*a) ;
R(2)= (-b+sqrt(Delta))/(2*a) ;
elseif (Delta < 0.) disp(Pas de solutions pour cette equation)
R=[%nan, %nan] ;
else then R(1)= -b/(2*a) ;
R(2)= -b/(2*a) ;
end ;
endfunction
15