Vous êtes sur la page 1sur 33

Scilab

pour les vrais dbutants



Scilab Enterprises S.A.S - 143 bis rue Yves Le Coz - 78000 Versailles - www.scilab-enterprises.com







































Ce document a t co-crit par Scilab Enterprises et Christine Gomez, professeur de mathmatiques au lyce Descartes
Antony, Hauts-de-Seine.
2013 Scilab Enterprises. Tous droits rservs

Scilab pour les vrais dbutants - 2/33

Table des matires




Introduction
propos de ce document 4
Installation de Scilab 4
Liste de diffusion et dinformation 4
Ressources complmentaires 4

Chapitre 1 Se familiariser Scilab


Lenvironnement gnral et la console 5
Calculs numriques simples 6
La barre de menus 7
Lditeur 8
La fentre graphique 9
Grer les fentres et personnaliser son espace de travail 11

Chapitre 2 - Programmer
Variables, affectation et affichage 12
Les boucles 16
Les tests 17
Les tracs en 2 et 3 dimensions 18
Complments sur les matrices et les vecteurs 23
Problmes de prcision 29
Rsolutions dquations diffrentielles 30

Chapitre 3 Fonctions Scilab utiles


Pour lanalyse 32
Pour les probabilits et statistiques 32
Pour afficher et tracer 33
Utilitaires 33

Scilab pour les vrais dbutants - 3/33

Introduction

propos de ce document
Lobjectif de ce document est de vous guider pas pas dans la dcouverte des diffrentes
fonctionnalits de base du logiciel Scilab pour un utilisateur nayant jamais utilis un logiciel de
calcul. Cette prsentation se limite volontairement lessentiel pour permettre une prise en
main facilite de Scilab.
Les calculs, graphiques et illustrations sont raliss avec Scilab 5.4.0. Vous pouvez donc
reproduire toutes les commandes prsentes partir de cette version.

Installation de Scilab
Scilab est un logiciel de calcul numrique que chacun peut tlcharger gratuitement. Disponible
sous Windows, Linux et Mac OS X, Scilab est tlchargeable ladresse suivante :
http://www.scilab.org/
Vous pouvez tre averti des sorties de nouvelles versions du logiciel Scilab en vous inscrivant sur
notre canal de notification ladresse suivante : http://lists.scilab.org/mailman/listinfo/release

Liste de diffusion et dinformation


Pour faciliter lchange entre les utilisateurs de Scilab, des listes de diffusion leur sont ddies
(liste en franais, liste pour le monde de lducation, liste internationale en anglais). Le principe
est simple : les personnes inscrites peuvent communiquer les unes avec les autres par courrier
lectronique (questions, rponses, partage de documents, retour dexpriences...).
Pour consulter les listes disponibles et sinscrire, rendez-vous ladresse suivante :
http://www.scilab.org/communities/user_zone/mailing_list

Ressources complmentaires
Si vous disposez dune connexion Internet, vous pouvez accder au site Web de Scilab sur
lequel vous trouverez une rubrique consacre lutilisation de Scilab
(http://www.scilab.org/support/documentation), avec des liens et des documents utiles pouvant
tre tlchargs et imprims librement.

Scilab pour les vrais dbutants - 4/33

Chapitre 1 Se familiariser Scilab


Lespace de travail utile dans Scilab est constitu de plusieurs fentres :

La console pour faire des calculs,


Lditeur pour crire des programmes,
Les fentres graphiques pour afficher des graphiques,
Laide.

Lenvironnement gnral et la console


Aprs avoir double-cliqu sur licne de Scilab pour lancer le logiciel, l'environnement par dfaut
de Scilab prsente les fentres suivantes dockes - console, navigateurs de fichiers et de
variables, historiques des commandes (voir Grer les fentres et personnaliser son espace de
travail , page 11) :


Dans la console, aprs linvite de commande --> , il suffit de saisir une commande et
dappuyer sur la touche Entre (Windows et Linux) ou Retour (Mac OS X) du clavier pour obtenir
le rsultat correspondant.
--> 57/4
ans

=
14.25

--> (2+9)^5
ans

=
161051.

noter
Devant le rsultat, ans
saffiche pour answer
( rponse en anglais).


Il est possible de revenir en arrire tout moment, avec les flches 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 prcdemment excute.

Scilab pour les vrais dbutants - 5/33

Calculs numriques simples


Tous les calculs effectus par Scilab sont numriques. Scilab calcule avec des matrices (voir le
chapitre 2, page 23).
Les oprations se notent + pour laddition, - pour la soustraction, * pour la
multiplication, / pour la division, ^ pour les exposants. La virgule des nombres dcimaux
est note avec un point. Par exemple :
-->2+3.4
ans

=
5.4


Il est ncessaire de bien respecter la casse (majuscules et minuscules) pour que les calculs
seffectuent correctement. Par exemple, avec la commande sqrt qui permet de calculer la
racine carre :
-->sqrt(9)
ans

alors que :

-->SQRT(9)

!--error 4

3.

Variable non dfinie: SQRT


Des nombres particuliers
%e et %pi reprsentent respectivement e et :
--> %e
%e

--> %pi

%pi

2.7182818

=
3.1415927


%i reprsente la variable complexe i en entre et saffiche i en sortie :
--> 2+3*%i
ans

=
2. + 3.i


Pour ne pas afficher le rsultat
En ajoutant un point-virgule ; la fin dune ligne de commande, le calcul seffectue mais le
rsultat ne saffiche pas.
-->(1+sqrt(5))/2;

--> (1+sqrt(5))/2
ans

=
1.618034

Scilab pour les vrais dbutants - 6/33

Pour se rappeler le nom dune fonction


Les noms des principales fonctions sont rcapituls au chapitre 3 de ce document (page 32). Par
exemple :
--> exp(10)/factorial(10)
ans

=
0.0060699

noter
Les fonctions disponibles
sont galement listes dans
laide accessible en cliquant
sur ? > Aide de Scilab dans
la barre des menus.

Il est possible dutiliser la touche tabulation de son clavier pour complter len nom dune
fonction ou dune variable dont on a donn les premires lettres.
Par exemple, si lon tape dans la console :
-->fact

et que lon tape sur la touche tabulation, une petite fentre apparat permettant de choisir entre
toutes les fonctions et noms de variables commenant par fact, comme factorial et
factor. Il suffit alors de double-cliquer sur la fonction souhaite ou de la slectionner avec la
souris ou les touches et dappuyer sur la touche Entre (Windows et Linux) ou Retour (Mac
OS X) pour linsrer.

La barre de menus
Vous serez amen utiliser tout particulirement les menus lists ci-dessous.
Applications

Lhistorique des commandes permet de retrouver toutes les commandes des sessions
prcdentes et de la session courante.
Le navigateur de variables permet de retrouver toutes les variables utilises
prcdemment au cours de la mme session.

dition
Prfrences (dans le menu Scilab sous Mac OS X) permet de rgler et de personnaliser les
couleurs, les polices et la taille des caractres dans la console et dans lditeur, ce qui est trs
utile quand on projette sur un cran.
Cliquez sur Effacer la console pour effacer tout le contenu de la console. Dans ce cas, lhistorique
est conserv et les calculs effectus lors de la session restent en mmoire. Vous pourrez toujours
revenir sur une commande qui a t efface en utilisant les flches du clavier.
Contrle
Pour interrompre un programme en cours dexcution, on peut :

Taper pause dans le programme ou cliquer sur Contrle > Interrompre dans la barre
de menus (Ctrl X sous Windows et Linux ou Commande X sous Mac OS X), si le
programme est dj lanc. Dans tous les cas, linvite de commande --> se
transformera en -1-> , puis en -2-> , si lopration est rpte.
Pour revenir au moment de linterruption du programme, taper resume dans la
console ou cliquer sur Contrle > Reprendre.
Pour arrter dfinitivement un calcul sans possibilit de retour, taper abort dans la
console ou cliquer sur Contrle > Abandonner dans la barre de menus.

Scilab pour les vrais dbutants - 7/33

Lditeur
Taper directement dans la console a deux inconvnients : lenregistrement nest pas possible, et
si plusieurs lignes dinstructions ont t tapes, les modifications ne sont pas aises. Pour
enchaner plusieurs instructions, lditeur est loutil appropri.
Ouvrir lditeur
Pour ouvrir lditeur partir de la console, cliquez sur la premire icne
doutils ou sur Applications > SciNotes dans la barre de menus.

dans la barre

Lditeur souvre avec un fichier par dfaut qui sintitule Sans titre 1 .

crire dans lditeur
On tape du texte dans lditeur comme dans nimporte quel traitement de texte.
Dans lditeur de texte, lapparition des parenthses, ouvrantes et fermantes, et des commandes
de fin de boucle, de fonction et de test est automatique. On peut cependant dsactiver ces deux
fonctionnalits dans le menu Options > Compltion automatique, en cliquant sur les deux
entres ci-dessous actives par dfaut :

(,[,
if,function,


En principe, il faut aller la ligne aprs chaque instruction, mais il est possible de taper plusieurs
instructions sur une mme ligne en les sparant par un point-virgule ; .
Un dcalage de dbut de ligne appel indentation se fait automatiquement lorsquon commence
une boucle ou un test.
Dans lexemple suivant, on calcule 10 termes de la suite (! ) dfinie par :

! = 1

!!! = 2! 3


noter
- Pour crire des commentaires qui ne seront pas pris en compte dans les calculs, les faire prcder de // .
- Pour c hanger la police, cliquez sur Options > Prfrences.
- lcriture dun programme, lindentation est automatique. Si toutefois cela ntait pas le cas, cliquez sur Format > Corriger
lindentation pour la rtablir (Ctrl I sur Windows et Linux ou Commande I sur Mac OS X).

Scilab pour les vrais dbutants - 8/33

Enregistrer
Il est possible denregistrer tout fichier en cliquant sur Fichier > Enregistrer sous.
Lextension .sce la fin du nom de fichier dclenchera automatiquement le lancement de
Scilab louverture du fichier (except sous Linux et Mac OS X).
Copier dans la console, excuter le programme
En cliquant sur Excuter dans la barre de menus, trois options sont proposes :

Excuter fichier sans cho (Ctrl Maj E sous Windows et Linux, Cmd Maj E sous Mac
OS X) : le fichier est excut sans que le programme ne scrive dans la console (en
ayant enregistr le fichier au pralable).
Excuter fichier avec cho (Ctrl L sous Windows et Linux, Cmd L sous Mac OS X) :
rcrit le fichier dans la console et lexcute.
Excuter jusquau curseur, avec cho (Ctrl E sous Windows et Linux, Cmd E sous
Mac OS X) : rcrit la slection choisie avec la souris dans la console et lexcute ou
excute les donnes du fichier jusqu la position du curseur dfinie par lutilisateur).


On peut aussi utiliser le copier/coller classique.

La fentre graphique
Ouvrir une fentre graphique
Une fentre graphique souvre pour tout trac. Il est possible de tracer des courbes, des surfaces
et des nuages de points (voir le chapitre 2, page 18).
On obtient un exemple de courbe en tapant dans la console :
-->plot

noter
- Pour effacer le trac
prcdent, tapez clf
( clear figure en anglais).
- Pour ouvrir une autre
fentre graphique, tapez
scf; ( set current figure
en anglais).
Si plusieurs fentres
graphiques ont t
ouvertes, on peut choisir
celle dans laquelle on veut
faire son trac en tapant
scf(n); o n est le
numro de la fentre
(indiqu en haut gauche).

Scilab pour les vrais dbutants - 9/33

Modifier un trac
La loupe
permet de faire un zoom. Pour effectuer un zoom en deux dimensions, cliquez sur
licne et avec la souris crez un rectangle qui constituera la nouvelle vue agrandie. Pour
effectuer un zoom en trois dimensions, cliquez sur licne et crez le paralllpipde qui
constituera la nouvelle vue agrandie. Il est galement possible de zoomer en utilisant la mollette
de la souris. Pour revenir lcran initial, cliquez sur lautre loupe

Licne permet de faire tourner la figure (particulirement utile en 3D) avec des actions de
clic droit qui seront guides par des messages en bas de la fentre.
Pour des modifications plus prcises, cliquez sur dition > Proprits de la figure ou Proprits
des axes et laissez-vous guider (cette option nest pas encore disponible sous Mac OS X).

Laide en ligne
Pour accder laide en ligne, cliquez sur ? > Aide Scilab dans la barre de menus, ou tapez dans
la console :
-->help


noter
Une partie de laide est
disponible en franais, le
reste est en anglais.
Des exemples dutilisation
peuvent tre excuts dans
Scilab et dits dans
SciNotes en utilisant les
boutons associs dans le
cadre de lexemple.



Pour obtenir de laide sur des fonctions, tapez dans la console help et le nom de la fonction
souhaite. Par exemple :
-->help sin

affichera laide de la fonction sin (sinus).

Scilab pour les vrais dbutants - 10/33

Grer les fentres et personnaliser son espace de travail


Comme pour lenvironnement par dfaut de Scilab, rassemblant les fentres de la console, les
navigateurs de fichiers et de variables et lhistorique des commandes, toutes les autres fentres
de Scilab peuvent tre repositionnes dans une seule et mme fentre. Par exemple, lutilisateur
peut choisir de placer lditeur dans lenvironnement par dfaut de Scilab.
Pour placer une fentre dans une autre, on repre dabord la barre horizontale bleue sous
Windows, ou noire sous Mac OS X et Linux, situe en haut de la fentre sous la barre doutils et
contenant un point dinterrogation droite.

Sous Windows et Linux, cliquez sur cette barre avec le bouton gauche de la souris, et, en
maintenant ce bouton enfonc, dplacez la flche de la souris dans la fentre souhaite.
Sous Mac OS X, cliquez sur cette barre et, en maintenant le clic sur la souris, dplacez-la
dans la fentre souhaite.

Un rectangle apparat indiquant le positionnement futur de la fentre. Lorsque la position est


celle que vous souhaitez, relchez le bouton de la souris. Pour annuler et faire ressortir la
fentre, cliquez sur la petite flche droite de la mme barre.

Scilab pour les vrais dbutants - 11/33

Chapitre 2 - Programmer

Dans les exemples donns dans ce document, toute ligne prcde de --> est une
commande, les autres lignes sont les retours (rsultats de calcul, messages derreur). Il ne faut
pas crire --> dans lditeur. Nous lavons introduit uniquement pour bien diffrencier les
lignes de commande des retours de calculs, laffichage se faisant ainsi dans la console aprs un
copier/coller. Prsentes dans un tableau (sans --> et sans retour de calcul), les commandes
sont donc reprsentes telles quelles devront tre tapes dans lditeur.


Variables, affectation et affichage
Les variables
Scilab nest pas un logiciel de calcul formel. Il calcule uniquement avec des nombres. Tous les
calculs sont en ralit faits avec des matrices, mais cela peut passer inaperu. Bien que la notion
de matrice ne soit pas connue, on utilise les vecteurs et les suites de nombres qui sont, en fait,
des matrices 1 n ou n 1, de mme quun nombre est une matrice de dimension 1 1.
Les variables nont pas besoin dtre dclares lavance, mais toute variable doit avoir une
valeur. Par exemple, demander la valeur de la variable a sans lui avoir donn de valeur
auparavant, produit une erreur :
-->a
!--error 4
Variable non dfinie : a


Si lon affecte une valeur la variable a, il ny a plus derreur :
--> a=%pi/4
a

=
0.7853982

--> a
a

=
0.7853982


On peut utiliser nimporte quel nom de variable qui nest pas dj dfini par le systme :
--> Pisur2=%pi/2
Pisur2

1.5707963

noter
Tout comme les fonctions
Scilab, un nom de v ariable
ne doit pas comporter
daccents ou de caractres
spciaux.

Scilab pour les vrais dbutants - 12/33

Si lon naffecte pas le rsultat dun calcul une variable, la valeur sera affecte
automatiquement la variable appele ans :
-->3*(4-2)
ans

=
6.

-->ans
ans

=
6.


Les fonctions
Les fonctions sont le moyen le plus simple et le plus naturel pour faire des calculs partir de
variables et obtenir des rsultats partir de celles-ci.
La dfinition dune fonction commence par function et finit par endfunction. Par exemple,
pour transformer des euros (e) en dollars (d) avec un taux de change (t), dfinissons la fonction
dollars. Les variables sont e et t et limage est d.
-->function d=dollars(e,t); d=e*t; endfunction

-->dollars(200,1.4)
ans

=
280.


Le plus souvent, on utilise des fonctions numriques une variable. Par exemple, deux fonctions
f et g sont dfinies laide des commandes ci-dessous :
-->function y=f(x); y=36/(8+exp(-x)); endfunction

-->function y=g(x); y=4*x/9+4; endfunction

noter
Les variables x et y sont des
variables muettes, leurs
noms pouvant tre rutiliss
dans la dfinition dautres
fonctions ou dans Scilab.

Les fonctions ayant t dfinies, elles peuvent tre utilises pour calculer des valeurs :
--> f(10)
ans

=
4.4999745

--> g(12.5)
ans

=
9.5555556

Scilab pour les vrais dbutants - 13/33

Demander laffectation dune valeur


Laffectation se fait de faon simple avec le symbole = .

Laffichage
crire
Taper le nom dune variable affiche sa valeur, sauf avec ; en fin de commande.

Les crochets
Les crochets permettent de dfinir des matrices (voir la page 23). Comme nonc
prcdemment, le calcul matriciel est la base des calculs effectus dans Scilab. Un espace ou
une virgule permet de passer dune colonne la suivante et un point-virgule, dune ligne
lautre.

Pour dfinir un vecteur colonne et obtenir un affichage en colonne :
-->v=[3;-2;5]
v

=
3.
- 2.
5.


Pour dfinir un vecteur ligne et obtenir un affichage en ligne :
-->v=[3,-2,5]
v

noter
Il est aussi possible de taper
cette commande sous la
forme : v=[3 -2 5]

=
3.

- 2.

5.


Pour dfinir une matrice et afficher un tableau :
-->m=[1 2 3;4 5 6;7 8 9]
m

=
1.

2.

3.

4.

5.

6.

7.

8.

9.

noter
Il est aussi possible de taper
cette commande sous la
forme :
m=[1,2,3;4,5,6;7,8,9]

Scilab pour les vrais dbutants - 14/33

La fonction disp
La fonction disp est toujours suivie de parenthses.
Avec le vecteur v prcdent :
-->v(2)
ans

- 2.

-->disp(v(2))
- 2.


Pour afficher une chane de caractres (en gnral une phrase), on la met entre guillemets :
-->disp("Bob a gagn")
Bob a gagn


Pour mlanger des mots et des valeurs, utilisez la commande string qui transforme les valeurs
en caractres, et + entre les diffrentes parties :
-->d=500;

-->disp("Bob a gagn "+string(d)+" dollars")


Bob a gagn 500 dollars


Si la phrase contient une apostrophe, il est ncessaire de la doubler dans la chane de caractres
pour quelle saffiche correctement :
-->afficher("C''est juste")
C'est juste


Les boucles
Lincrmentation
Loprateur : permet de dfinir des vecteurs de nombres dont les coordonnes sont en suite
arithmtique. On donne la premire valeur : le pas : la dernire valeur (pas forcment
atteinte). Si le pas nest pas mentionn, sa valeur est 1 par dfaut.
Par exemple, pour dfinir un vecteur ligne dentiers qui sincrmentent de 1 entre 3 et 10 :
-->3:10
ans

=
3.

4.

5.

6.

7.

8.

9.

10.

ou qui sincrmentent de 2 entre 1 et 10 :


-->1:2:10
ans

=
1.

3.

5.

7.

9.
Scilab pour les vrais dbutants - 15/33

ou qui se dcrmentent de 4 entre 20 et 2 :


-->u=20:-4:2
u

=
20.

16.

12.

8.

4.


For
La structure de boucle la plus simple pour un nombre connu ditrations scrit avec for
end qui signifie Pour fin de pour .

Exemple : Calcul de 20 termes dune suite dfinie par rcurrence par :

! = 4

!!! = ! + 2 + 3


Algorithme

diteur Scilab

Mettre 4 dans u(1)

u(1)=4;

Pour n allant de 1 20

for n=1:20

u(n+1) prend la valeur u(n)+2n+3

u(n+1)= u(n)+2*n+3;

Afficher n et u(n)

disp([n,u(n)])

Fin de pour

end


While
Si lon veut que la boucle sarrte lorsquun objectif donn est atteint, on utilisera la forme
while end qui signifie Tant que fin de tant que .

Exemple : Jai replant en 2005 un sapin de Nol qui mesurait 1,20 m. Il grandit de 30 cm par an.
Jai dcid de le couper quand il dpasserait 7 m. En quelle anne vais-je couper mon sapin ?

Algorithme
diteur Scilab
Mettre 1,2 dans h (h = hauteur du sapin)
Mettre 2005 dans a (a = anne)
Tant que h<7
h prend la valeur h+0,3 (mon sapin grandit)
a prend la valeur a+1 (une anne se passe)
Fin de tant que
Afficher a (la dernire anne)

h=1.2;
a=2005;
while h<7
h=h+0.3;
a=a+1;
end
disp("Je couperai mon..
sapin en "+string(a))


noter
Quand une commande est trop longue pour tre crite sur une seule ligne, lditeur va automatiquement la ligne. On peut
aussi mettre .. (deux points) avant daller la ligne.

Scilab pour les vrais dbutants - 16/33

Les tests
Les oprateurs de comparaison
Comparer des nombres ou vrifier si une affirmation est vraie ou fausse sont des tests utiles.
Voici les commandes correspondantes :
gal

Diffrent

Infrieur

Suprieur

Infrieur ou
gal

Suprieur ou
gal

==

<>

<

>

<=

>=

Vrai

Faux

Et

Ou

Non

%T

%F

&


noter
Attention la prcision. Les calculs faits tant approchs, le test == donne parfois des rponses fausses (voir les
problmes de prcision, page 30).


Lorsque lon veut comparer deux vecteurs (ou deux matrices), les tests == et <>
comparent terme terme. Par exemple :
-->X=[1,2,5]; Y=[5,3,5];

-->X==Y
ans

F F T


Pour tester si deux vecteurs sont gaux, on utilise isequal, et sils sont diffrents, ~isequal :
-->isequal(X,Y)
ans

-->~isequal(X,Y)
ans


Ifthen
Les structures classiques sont les suivantes :

if then else end ( Sialorssinonfin de si ),


if then elseif then else end ( Sialorsou sialors ou
fin de si ).


if then doivent tre crits sur la mme ligne, de mme que elseif then.

Scilab pour les vrais dbutants - 17/33

Exemple : Alice lance trois ds.

Si elle obtient trois 6, elle gagne 20 ,


Si elle obtient trois rsultats identiques diffrents de 6, elle gagne 10 ,
Si elle obtient deux rsultats identiques, elle gagne 5 ,
Sinon, elle ne gagne rien.


On peut simuler un lancer et calculez le gain dAlice, en utilisant les fonctions :

grand (voir page 22),


unique(D) qui ne garde quune fois les valeurs qui apparaissent plusieurs fois dans D,
length(unique(D)) qui donne la taille du vecteur ainsi obtenu, donc 1 si les trois
termes sont gaux, 2 si deux termes sont gaux.


Algorithme

diteur Scilab
D=grand(1,3,"uin",1,6);

Mettre les trois valeurs dans D

if D==[6,6,6] then

Si Alice obtient trois 6, alors

G=20;

Alice gagne 20 euros


Sinon, si elle obtient 3 ds identiques, alors

elseif length(unique(D))==1 then


G=10;

Alice gagne 10 euros


Sinon, si elle obtient 2 ds identiques, alors

elseif length (unique(D))==2 then


G=5;

Alice gagne 5 euros

else

Sinon

G=0;

Alice ne gagne rien

end

Fin de si

disp("Alice gagne "+..

Afficher le gain dAlice

string(G)+ " euros")

Les tracs en 2 et 3 dimensions


Les tracs dans le plan se font avec la commande plot. On peut choisir la couleur et laspect en
mettant les indications de couleur et de style de points entre guillemets :

Les couleurs

"b" = bleu (par dfaut), "k" = noir, "r" = rouge, "g" = vert, "c" = cyan, "m" = magenta,
"y" = jaune, "w" = blanc.

Les styles de points

Relis (par dfaut), ou ".", "+", "o", "x", "*".


Dautres options sont disponibles avec : "s", "d", "v", "<", et ">".

Scilab pour les vrais dbutants - 18/33

Tracs de base
Pour tracer un point
Tracer le point A(1 ; 2) avec un point rouge.
diteur Scilab

Fentre graphique

plot(1,2,".r")


Pour tracer un segment
Tracer le segment [AB] en bleu (par dfaut) avec A(1 ; 2) et B(3 ; 5).
diteur Scilab

Fentre graphique

plot([1,3],[2,5])


Tracs de courbes planes dfinies par des fonctions y=f(x)
Pour une fonction () on donne dabord les valeurs de x avec la commande linspace
en crivant : x=linspace(a,b,n); o a est la plus petite valeur de la variable , b est la plus
grande valeur de , et n est le nombre de valeurs qui seront calcules entre a et b.
Ne pas oublier le ; sinon les n valeurs de safficheront.

Par exemple, soient deux fonctions et dfinies sur [-2 ; 5] par :
= ( ! + 2) !! , et = sin

!
!

Scilab pour les vrais dbutants - 19/33

Ci-dessous avec ce programme, on obtient le trac de la courbe de , en bleu par dfaut.


diteur Scilab

Fentre graphique

function y=f(x)
y=(x^2+2*x)*exp(-x)
endfunction
x=linspace(-2,5,50);
plot(x,f)

En ajoutant le programme ci-dessous, on obtient le trac des deux courbes, celle de f en rouge
et celle de g en vert. Le trac prcdent a t effac grce la commande clf ( clear figure
en anglais).
diteur Scilab
Fentre graphique

function y=g(x)
y=sin(x/2)
endfunction
x=linspace(-2,5,50);
clf
plot(x,f,"r",x,g,"g")


Tracs de nuages de points
Termes dune suite
Le cas le plus courant est celui o lon veut tracer les points (, ) aprs avoir calcul les
coordonnes () dun vecteur . On crit alors plot(u,"*r") en spcifiant la forme et la
couleur des points du nuage entre guillemets. On a choisi ici des toiles de couleur rouge qui ne
sont pas relies. Par dfaut, les points sont bleus et relis.
diteur Scilab

Fentre graphique

for n=1:50
u(n)=(-0.8)^n;
end
clf; plot(u,"*r")

Scilab pour les vrais dbutants - 20/33

Statistiques doubles
Les nuages statistiques sont donns sous la forme de deux vecteurs : appelons les X et Y, on
crira alors plot(X,Y,"<") pour tracer le nuage des points (! ; ! ) avec des triangles bleus.
diteur Scilab

Fentre graphique

X=[1,3,3,7,7,9,10];
Y=[8,7,5,5,4,2,2];
clf; plot(X,Y,"<")


Tracs en trois dimensions
Scilab permet de tracer des surfaces et des courbes dans lespace avec un grand nombre
doptions pour le traitement des faces caches, la couleur des faces, les points de vue, etc. Nous
ne donnerons ici que deux exemples.
La fonction surf permet de tracer une surface. Cette fonction prend trois variables dentre, x,
y et z. x et y sont des vecteurs de taille respective et correspondant des points des axes
() et (). z est une matrice de dimension dont llment !" est la cote du point de la
surface dabscisse ! et dordonne ! .
Pour tracer la surface dfinie par une fonction du type = (, ), il faut donc :

Dfinir la fonction
Calculer z=feval(x,y,f)'
feval(x,y,f) retourne la matrice dont llment est (! , ! ) que lon va
transposer en utilisant lapostrophe '
Appliquer surf(x,y,z).


Le trac de la surface = 2 ! + ! (parabolode elliptique) :
diteur Scilab

Fentre graphique

function z=f(x,y)
z=2*x^2+y^2;
endfunction
x=linspace(-1,1,100);
y=linspace(-2,2,200);
z=feval(x,y,f)';
clf
surf(x,y,z)

Scilab pour les vrais dbutants - 21/33

La fonction param3d permet de tracer une courbe dans lespace. param3d prend trois
arguments, x, y et z, qui sont des vecteurs de mme taille correspondant aux points (! , ! , ! )
de la courbe.

Le trac de lhlice dfinie par ( = cos , = sin , = ) :
diteur Scilab

Fentre graphique

t=linspace(0,4*%pi,100);
param3d(cos(t),sin(t),t)


Simulations et statistiques
De nombreuses fonctions existent pour effectuer des simulations de faon rapide et
performante.
Tirages alatoires avec ordre et remise

grand(1,p,"uin",m,n) retourne un vecteur de tirages entiers alatoires pris


entre et avec entier positif, et entiers et .
-->t= grand(1,4,"uin",1,6)
t

=
3.

1.

3.

6.

grand(1,p,"unf",a,b) retourne un vecteur de tirages rels alatoires pris entre


et avec entier positif, et rels et .
-->tr= grand(1,2,"unf",-1,1)
tr

- 0.7460264

0.9377355

Scilab pour les vrais dbutants - 22/33

Statistiques
Toutes les fonctions statistiques habituelles sont listes la page 32.
Gardez particulirement en mmoire :

La fonction bar(x,n,couleur) qui trace des diagrammes en barre :

diteur Scilab

Fentre graphique

x=[1:10];
n=[8,6,13,10,6,4,16,7,8,5];
clf; bar(x,n)

Pour un diagramme en barres reprsentant deux sries cte cte : soit la srie de
valeurs X, et les deux sries deffectifs n1 et n2. Pour le trac, n1 et n2 doivent tre des
vecteurs colonne, cest pourquoi dans lexemple ci-dessous, on prend les transposes :

diteur Scilab

Fentre graphique

X=[1,2,5];n1=[5,10,5];n2=[6,8,7];
bar(X,[n1',n2'])

Largument optionnel couleur dfinit la couleur comme dans la fonction plot.


Complments sur les matrices et les vecteurs


Accder aux lments
Les crochets permettent de dfinir une matrice. Un espace ou une virgule permet de passer
dune colonne la suivante et un point-virgule, dune ligne lautre.

-->m=[1 2 3;4 5 6]
m

=
1.

2.

3.

4.

5.

6.

noter
Il est aussi possible de taper
cette commande sous la
forme :
m=[1,2,3;4,5,6]


Scilab pour les vrais dbutants - 23/33

Les parenthses permettent daccder aux lments ou de les modifier.


-->m(2,3)
ans

=
6.

-->m(2,3)=23
m

=
1.

2.

3.

4.

5.

23.


Loprateur : sert dsigner toutes les lignes ou toutes les colonnes dune matrice.

Pour avoir la deuxime ligne de la matrice m, tapez :
-->m(2,:)
ans

=
4.

5.

23.


et la troisime colonne :
-->m(:,3)
ans

=
3.
23.


Pour obtenir la transpose dune matrice ou dun vecteur, on utilise lapostrophe ' :
-->m'
ans

=
1.

4.

2.

5.

3.

23.


Oprations
Les oprations * , / sont des oprations matricielles. Pour faire des oprations lment
par lment, on fera prcder le signe opratoire dun point: .* , ./ .
-->A=[1,2,3;4,5,6]
A

1.

2.

3.

4.

5.

6.

Scilab pour les vrais dbutants - 24/33

-->B=[1;1;2]
B

1.
1.
2.
-->A*B
ans

Multiplication matricielle

9.
21.
-->A*A

Les dimensions ne sont pas bonnes

!--error 10
Multiplication incohrente.
-->A.*A
ans

Multiplication lment par lment

1.

4.

9.

16.

25.

36.

6.

8.

10.

12.

14.

16.

-->2*(A+2)
ans

Lopration se fait sur chaque lment car 2 est un


nombre

-->A/A
ans

=
1.

1.518D-16

3.795D-15

1.

Donne la matrice X telle que X*A = A


La rponse exacte est :
1. 0
0 1.

Pour des raisons de prcision de calcul, le rsultat
peut tre lgrement diffrent suivant votre
version de Scilab et votre systme dexploitation
(voir les prcisions de calcul, page 29)

-->A./A
ans

=
1.

1.

1.

1.

1.

1.

Donne la matrice divise lment par lment

Dans le cas des vecteurs :


-->C=1:4
C

=
1.

2.

3.

4.

-->C*C
Les dimensions ne sont pas bonnes

!--error 10
Multiplication incohrente.


Scilab pour les vrais dbutants - 25/33

-->C.*C
ans

=
1.

4.

9.

16.

Il est aussi possible dcrire C^2 car, pour les


vecteurs, lcriture avec un exposant se traduit par
une opration lment par lment. Ce nest pas le
cas pour les matrices

-->1/C
ans

=
0.0333333

Dans ce cas spcifique aux vecteurs, on trouve le


vecteur X tel que C*X = 1

0.0666667
0.1
0.1333333
-->(1)./C
ans

=
1.

0.5

0.3333333

0.25

Inverse lment par lment


Comme prcdemment, C^(-1) aurait t
possible. Les parenthses autour de 1 sont
ncessaires pour que le point ne soit pas considr
comme une virgule faisant partie du nombre 1. On
peut aussi crire 1 ./C avec un espace entre 1
et .


Rsolutions de systme
Pour rsoudre le systme linaire AX = Y, o A est une matrice carre, utilisez lanti-slash \
X = A \ Y.
Attention, lopration Y / A donnera ( condition que les dimensions soient bonnes) un autre
rsultat, soit la matrice Z telle que Z A = Y.

Pour rsoudre le systme :

1
4

2
5

3
1
=

6
1

-->A=[1 2 3;4 5 6];

-->Y=[1;1];

-->X=A\Y
X

=
- 0.5
0.
0.5


-->A*X
ans

=
1.
1.

Scilab pour les vrais dbutants - 26/33

Quelques fonctions utiles


Trier
La fonction gsort permet dordonner par ordre croissant ou dcroissant les lments dun
vecteur.
-->v=[2,6,9,6,-4,0,2]
v

=
2.

6.

9.

6.

- 4.

0.

2.

2.

2.

6.

6.

9.

6.

2.

2.

0.

- 4.

--> gsort(v,"g","i")
ans

- 4.

0.

--> gsort(v)
ans

=
9.

6.


Taille
La fonction length retourne le nombre de coordonnes dans le cas dun vecteur. La fonction
size retourne les dimensions (lignes, colonnes) dans le cas dune matrice.
-->U=[1:10]
U

=
1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

-->length(U)
ans

=
10.


-->m=[1 2 3;4 5 6];

-->size(U)
ans

=
2.

3.

Scilab pour les vrais dbutants - 27/33

Somme et produit
Les fonctions sum et prod calculent respectivement la somme et le produit des lments de leur
argument.
-->U=[1:10];

-->sum(U)
ans

=
55.

-->prod(U)
ans

=
3628800.


Unique
La fonction unique ne garde quune fois les lments dans un vecteur (mme si ceux-ci sont
rpts plusieurs fois) et les ordonne par ordre croissant. Elle peut tre trs utile pour faire des
tests.
-->v=[2,6,9,6,-4,0,2]
v

=
2.

6.

9.

6.

- 4.

2.

6.

9.

0.

2.

-->unique(v)
ans

- 4.

0.


Trouver
La fonction find permet de rechercher des lments dans un vecteur ou une matrice et
retourne un vecteur contenant les indices correspondants.
Pour trouver tous les lments du vecteur plus petits que 5 :
-->w=[1,5,3,8,14,7,3,2,12,6]; find(w<5)
ans

=
1.

3.

7.

8.


Le vecteur rsultat (1,3,7,8) nous indique que les lments ! , ! , ! et ! sont plus petits que
5.

Scilab pour les vrais dbutants - 28/33

Pour trouver tous les lments du vecteur gaux 3 :


-->w=[1,5,3,8,14,7,3,2,12,6]; find(w==3)
ans

=
3.

7.


Le vecteur rsultat (3,7) indique que les lments ! et ! sont gaux 3.

Problmes de prcision
Pour le calcul
Les nombres ont une valeur absolue comprise entre environ 2,210

-308

et 1,810

+308

Le nombre %eps gal 2.220446049D-16 donne la plus petite prcision relative que lon
puisse esprer dans le calcul, soit environ 16 chiffres.

Exemple 1 : Calcul de sin()
-->sin(%pi)
ans

1.225D-16


La valeur de ci-dessus nest pas 0, mais on la considre comme nulle. En effet, par rapport
la valeur maximale de la fonction sinus (soit 1), elle est gale 0 avec une erreur infrieure
%eps.

Exemple 2 : Testons si le triangle de cts , 1 et 2 est rectangle :
-->a=sqrt(3)
a

=
1.7320508

-->b=1
b

=
1.

-->c=2
c

2.
-->a^2+b^2==c^2
ans

Le programme rpond faux car la valeur de


a^2+b^2 est approche

Scilab pour les vrais dbutants - 29/33

-->abs(a^2+b^2-c^2)<%eps
ans

Le programme rpond faux car la prcision


demande est absolue

F
-->abs(a^2+b^2-c^2)/c^2<%eps
ans

Le programme rpond vrai car la prcision


demande est relative


Pour laffichage
Par dfaut, les rsultats sont affichs avec 10 caractres, comprenant le point dcimal et le signe.
La fonction format permet dafficher plus de chiffres. Pour avoir 20 chiffres, vous taperez alors
format(20).
Reprenons = 3 :
-->a^2
ans

Ici, il y a 7 dcimales, on ne voit pas la prcision

=
3.

-->format(20)

Ici, il y a 17 dcimales, on voit la prcision

-->a^2
ans

=
2.99999999999999956

Rsolution dquations diffrentielles


Nous montrerons ici comment on peut trouver les solutions dun systme explicite dquations
diffrentielles. Le principe consiste se ramener des quations diffrentielles dordre 1 :
! = ,
o ! et reprsentent le temps et ! et () sont des vecteurs,
! = !
puis, appliquer la fonction ode : y=ode(y0,t0,t,f), avec :

y0 : condition initiale, vecteur de dimension ,


t0 : instant initial,
t : vecteur de dimension T des instants o lon veut avoir la solution. Ce vecteur doit
commencer par t0,
f : fonction dfinissant le systme sous la forme :
function yprim=f(t,y)
yprim(1)=...
yprim(2)=...
....
yprim(n)=...
endfunction


Scilab pour les vrais dbutants - 30/33

! 1
! 1
La solution y est une matrice de dimension n T :

! 1

! 2
! 2

! 2

!
!

" =
Exemple : Rsoudre lquation diffrentielle

= , ! =
On ramne cette quation dordre 2 un systme de deux quations dordre 1 en posant :
=

(1)
(1)
1 = 2

=
, =
=
et

(2)
(2)
"
2 = 4(1)


Commentaire

diteur Scilab
function yprim=f(t,y)

On dfinit la fonction qui aux deux variables t et y


(qui est un vecteur) fait correspondre le vecteur y
On prcise les valeurs de t pour le graphique

yprim(1)=y(2);
yprim(2)=-4*y(1) ;
endfunction

(le logiciel choisit lui-mme les valeurs de t pour


t0=0; tmax=5;
son calcul interne de solution).
On prcise les conditions initiales

t=t0:0.05:tmax;

On applique ode

y0=3; yprim0=0;

On trace la courbe intgrale de y en fonction de t

y=ode([y0;yprim0],t0,t,f);
clf; plot(t,y(1,:))

Scilab pour les vrais dbutants - 31/33

Chapitre 3 Fonctions Scilab utiles



Pour lanalyse

sqrt(x) retourne la racine carre de pour rel positif ou nul, et la racine complexe
de partie relle positive sinon.
log(x) retourne le logarithme nprien de x avec x nombre rel ou complexe.
exp(x) retourne lexponentielle de avec nombre rel ou complexe.
abs(x) retourne la valeur absolue du rel (ou le module si est complexe).
int(x) retourne la troncature du rel (entier avant la virgule).
floor(x) retourne la partie entire du rel (entier tel que < + 1).
ceil(x) pour rel retourne lentier tel que 1 < .

Pour les probabilits et statistiques

factorial(n) retourne la factorielle de n avec n entier positif ou nul.


grand(1,p,"uin",m,n) retourne un vecteur de p tirages entiers pris entre m et
n avec p entier positif, m et n entiers et .
grand(1,p,"unf",a,b) retourne un vecteur de p tirages rels pris entre a et b
avec p entier positif, a et b rels et .
sum(n) retourne la somme des valeurs du vecteur (sert calculer un effectif total).
cumsum(n) retourne le vecteur des valeurs cumules croissantes du vecteur (sert
calculer les effectifs cumuls croissants).
length(v) retourne le nombre de coordonnes du vecteur .
gsort(v) retourne tri le vecteur de nombres ou de chanes de caractres dans
lordre dcroissant.
gsort(v,"g","i") retourne tri le vecteur de nombres ou de chanes de caractres
dans lordre croissant.
mean(v) retourne la moyenne du vecteur de nombres .
stdev(v) retourne lcart type du vecteur de nombres .
bar(v,n,couleur) trace le diagramme en barre avec en abscisse, en ordonne,
et tant des vecteurs lignes de mme dimension. Par dfaut, bar(n) trace le
diagramme en barres de en bleu avec 1,2,3 en abscisses.
bar(v,[n1,n2]) trace un diagramme en barre double avec en abscisse, n1 en
ordonne en bleu et n2 en ordonne en vert, avec , n1 et n2 vecteurs lignes de mme
dimension.
rand(n,p) avec et entiers positifs, retourne une matrice de nombres pris
alatoirement entre 0 et 1.
rand() retourne un nombre rel pris alatoirement entre 0 et 1.
floor(x) retourne la partie entire du nombre rel . En particulier, si est un rel
compris entre 0 et 1, floor(rand()+p) vaudra 1 avec une probabilit et 0 avec
une probabilit 1 .

Scilab pour les vrais dbutants - 32/33

Pour afficher et tracer

clf signifie clear figure et efface la figure prsente sur la fentre graphique.
plot permet de tracer des courbes ou des nuages de points en dimension 2.
linspace(a,b,n), avec et rels et entier, dfinit un vecteur de valeurs
rgulirement espaces entre et .
scf permet douvrir ou de slectionner dautres fentres graphiques.
surf permet de tracer des surfaces en dimension 3.
bar(X,Y) o X et Y sont des vecteurs, dessine le diagramme en btons de la srie des
valeurs de X ayant pour effectifs les valeurs de Y.
plot(X,Y,"*") trace le nuage des points de coordonnes (X(i),Y(i)) sous forme
dtoiles. On peut prciser la couleur.
plot(Y,"+") trace le nuage des points de coordonnes (i,Y(i)) sous forme de croix.
disp("Phrase") affiche ce qui est crit entre les guillemets.
disp(A) o A est une matrice de nombres affiche le tableau des valeurs de A.
disp("Phrase"+string(x)) affiche la phrase et la valeur du nombre .
xclick retourne les coordonnes du point cliqu sur la fentre graphique.

Utilitaires

unique(v) retourne le vecteur avec une seule occurrence de ses lments


dupliqus.
sum(v) retourne la somme de tous les lments du vecteur ou de la matrice .
prod(v) retourne le produit de tous les lments du vecteur ou de la matrice .
find(<test sur v>) retourne les indices des lments du vecteur vrifiant le
test.
disp(x,y,) affiche les valeurs de ses arguments dans la console.
string(x) transforme le nombre en chane de caractres.
format(n) o n est un entier suprieur ou gal 2 fixe laffichage caractres, y
compris le signe et la virgule.
zeros(n,p) dfinit une matrice ne contenant que des 0.
feval(x,y,f)
o et sont des vecteurs de tailles respectives et , dfinit la

matrice dont llment (, ) est ( , ).


help fonction ouvre le navigateur daide la page de la fonction.
tic dclenche un chronomtre.
toc arrte le chronomtre.

Scilab pour les vrais dbutants - 33/33