Memo Scilab
Memo Scilab
Memo Scilab
r=0 ;
Simulation dune variable
while (r= =0) do
aleatoire suivant la loi
u=rand() ;
geometrique de parametre p,
n=n+1 ;
r designe le resultat du lancer,
Boucle while if(u<p) then
u suit la loi uniforme sur [0, 1]
r=1 ;
n est le rang du premier
end
succes, levenement [u < p]
end
se produit avec une probabilite p
disp(n : ) ; disp(n) ;
Pas dequivalent En Scilab on utilisera
Boucle repeat until
en Scilab linstruction while
Loi uniforme sur [0, 1] U :=rand() ;
M=grand(3,7,uin,1,n) ;
permet de de creer une matrice
avec 2 lignes et 7 colonnes dont
Loi uniforme sur [[1, n]] U :=grand(1,1,uin,1,n) ;
les coefficients sont egaux aux valeurs
prises par une variable aleatoire
suivant la loi uniforme sur [[1, n]]
Tableaux, matrices:Scilab
Variables et instructions Pascal Scilab Remarques
Declaration dune
Pas de declaration
variable tableau
Linstruction dans Scilab
Tableau (a une ligne) X=[2, 3, 0] ; cree automatiquement letableau
X= 2 3 0
2 3
Matrice A=[2, 3 ; 0, 1 ; 4,-1] ; Creation de A = 0 1
4 1
Creation dun tableau a une ligne, 6
Tableau a une ligne A=0 :2 :10 ;
colonnes, forme des nombres entiers
ou vecteur ligne (1) A=linspace(0,10,6)
0, 2, 4, 6, 8, 10
Creation dun vecteur ligne
Vecteur ligne L=zeros(1,n) ;
L = (0, 0, . . . , 0) ou
a n colonnes (2) L=ones(1,n) ;
L = (1, 1, . . . , 1)
Vecteur colonne C=zeros(n,1) ; Creation des vecteurs
a n lignes C=ones(n,1) ; colonne correspondants
eme
k element dun
L(k)
vecteur ligne ou
C(k)
colonne
Donne le nombre delements
Taille du tableau length(L)
du tableau L
M=zeros(n,p) ; M = (0)1in,1jp
Matrices M=ones(n,p) ; M = (1)1in,1jp
M=eye(n,p) ; M = In
Coefficient dune matrice M(1,2)
Extraction de la troisieme ligne
Extraction dune ligne L=A(3,1 :2)
de A, on obtient : L = 4 1
Extraction de la deuxieme
Extraction dune colonne C=A(1 :3,2)
colonne de A
est utilise pour le produit
Operations sur +, , , /, matriciel ou le produit par un
les matrices ., ./, . scalaire, . donne le produit
coefficient par coefficient
rank(M), size(M), rang, taille,
Fonctions matricielles
inv(M), transpose(M) inverse, transposee
Trace de la courbe Trace de la courbe representative de
x=[-2 :0.1 :4] ;
representative dune x 7 x2 + 1, pour x [2, 4]
plot(x,x2+1)
fonction 0.1 corresepond au pas choisi
Trace dune ligne x=[0,1,2,3] ; y=[2,5,7,1] ;
brisee plot(x,y)
On trace sur un meme graphique
x=[-2 :0.1 :4] ;
Trace de plusieurs les courbes de x 7 x2 + 1 et
plot(x,x2+1,red,
courbes avec couleurs x 7 x2 + 1. x=[-2 :0.1 :4] peut etre
x,2*x,black)
remplace par x=linespace(-2,4,60)
Trace de courbes On peut choisir la taille
fonction plot2d
avec legende de la fenetre daffichage
x est un vecteur ligne contenant
1000 valeurs prises par une
x=rand(1,1000,normal) ;
Histogramme (1) variable aleatoire suivant une
histplot(20,x)
loi normale centree reduite
20 est le nombre de classes
x=rand(1,1000,normal) ;
c est vecteur ligne
Histogramme (2) c=linespace(-5,5,100)
definissant les classes
histplot(c,x)
Remarque : La syntaxe precise de toutes les fonctions avec leur arguments est accessible dans laide de Scilab
Calcul matriciel
Commande Scilab Remarques
Creation de A = 0 2 4 6 8 10
Tableau a une ligne A=0 :2 :10 ;
Le vecteur obtenu comporte 6 valeurs
ou vecteur ligne A=linspace(0,10,6)
Le segment [0,10] est divise en 5 sous-segments
2 3 0
Matrice quelconque A=[2, 3, 0 ;1, 4,-1] ; Creation de A =
1 4 1
M=zeros(n,p) ; M = (0)1in,1jp
Matrices particulieres
M=ones(n,p) ; M = (1)1in,1jp
Initialisation
M=eye(n,n) ; M = In
Longueur dun vecteur L est un vecteur ligne ou colonne
Longueur = length(L)
ligne ou colonne Longueur est un entier
size renvoie une matrice ligne comportant deux coefficients
Taille de la matrice
[nb ligne,nb col]=size(A) Dans lexemple ci-dessus on aurait :
quelconque
[nb ligne,nb col]=[2, 3]
On affecte la valeur 2 au coefficient de la matrice A
Coefficient dune matrice A(i,j) = 2
situe a la ieme ligne et a la jeme colonne
Extraction de la deuxieme ligne de la matrice A,
Extraction dune ligne L=A(2,1 :3) ou L=A(2, :) on obtient : L = 1 4 1
Extraction dune colonne C=A(1 :2,3) ou C=A( :,3) Extraction de la troisieme colonne de A.
: designe toutes les lignes (ou toutes les colonnes)
Extraction des colonnes 1 et3 de la matrice A, le resultat est :
v=[1,3]
Extraction - exemple 2 0
B=A( :,v) B=
1 1
Extraction - cas general u=[u1 ,u2 ,. . . ,uk ]
La matrice B est constituee des elements de A situes aux lignes
A Mn,m (R) v=[v1 ,v2 ,. . . ,vp ]
u1 ,u2 ,. . . ,uk et aux colonnes v1 ,v2 ,. . . ,vp .
B Mk,p (R) B=A(u,v)
Concatenation horizontale C=[A,B] Si nb lignes A = nb lignes B
Concatenation verticale E=[F ;G] Si nb colonnes A = nb colonnes B
Tri des elements gsort(A,r,i) Tri sur les lignes ( r pour row), par ordre croissant (increase)
Operations +, , , /, Operations usuelles, designe la puissance
Operations pointees ., ./, . Operations coefficient par coefficient
Fonctions matricielles rank(M), inv(M), M rang, inverse, transposee (adjointe)
Si A = (ai,j ) alors B = (f (ai,j ))
Utilisation dune fonction B = f(A)
ou f est une fonction numerique comme cos, exp, log etc.
Resolution dun systeme X=A\B (division a gauche) Resolution de AX = B
A=rand(2,3) Renvoie les numeros ( cf. (*)) des elements
Commande find
x=find(A<0.5) verifiant la condition
val propres est un vecteur colonne dont les coefficients
Valeurs propres val propres=spec(A)
sont les valeurs propres de A
vect p : matrice P des vecteurs propres de A
Diagonalisation
[vect p,mat diag]=spec(A) ; mat diag : matrice diagonale D obtenue
dune matrice carree
vect p et mat diag ont la meme taille que A
Bloc-diagonalisation P : matrice de passage
[bloc diag,P]=bdiag(A) ;
dune matrice carree bloc diag : matrice bloc-diagonale
Recherche parmi les elements du vecteur x, ceux qui se trouvent
Repartition en classes dans une des classes
x =grand(1,100,exp,3) ;
Lois quelconques definies par b. pos est un vecteur de meme
b=[0,1,2,2.5,3,3.5,4,6,10] ;
Commande : taille que x, qui indique le numero de la
[pos,eff]=dsearch(x,b,c) ;
dsearch(x,b,c) classe a laquelle appartient chaque element.
eff donne leffectif de chaque classe.
Repartition en classes
x =grand(1,100,exp,3) ; Meme fonction que ci-dessus, sauf que
Lois discetes
v=[0,1,2,3,4,5,6,7,8,9,10] ; la recherche se fait par rapport aux
Commande :
[pos,eff]=dsearch(x,b,d) ; valeurs entieres definies dans le vecteur v
dsearch(x,b,d)
(*) Les matrices de Scilab sont stockees colonne par colonne, ce qui donne lordre dans lequel les elements sont comptes
Probabilites et statistiques
Commandes Scilab Remarques
lambda = 2 ; Simulation dune variable X suivant une
x =grand(1,100,exp,1/lambda) ; loi exponentielle de parametre 2 avec
Moyenne, variance empirique,
m = mean(x) ; grand ( x est une matrice ligne contenant
ecart-type, mediane,maximum.
V emp = variance(x) ; 100 valeurs prises par X). Calcul de
Commandes : mean, variance,
ecart type = st deviation(x) ; la moyenne,
Pn de la variance empirique,
st deviation, median, max. 1 2
mediane = median(x) ; ( n1 i=1 (x i x) ), de lecart-type,
maximum = max(x) ; de la mediane et du maximum
Simulation dune variable X suivant une loi
Cas dune matrice x =grand(50,100,nor,4,2) ;
normale desperance 4 et decart-type 2,
quelconque : moy l = mean(x, r) ;
x est une matrice contenant 50 lignes et
moyenne, ecart-type, moy c = mean(x, c) ;
100 colonnes, dont les coefficients sont les
mediane, maximum, ecart l = st deviation(x, r) ;
valeurs prises par X. Calcul de la moyenne
selon les lignes et les ecart c = st deviation(x, c) ;
par colonnes (le resultat est une matrice
colonnes. med l = median(x, r) ;
ligne) et par lignes (le resultat est une
Commandes : mean, med c = median(x, c) ;
matrice colonne). Calcul de lecart-type,
st deviation, median, max l = max(x, r) ;
de la mediane, du maximum,
max max c = max(x, c) ;
par colonnes et par lignes.
On reprend la matrice x precedente
x =grand(50,100,nor,4,2) ; Calcul de la somme par colonnes
Somme et somme
somme l = sum(x, r) ; et de la somme par lignes.
cumulee
somme c = sum(x, c) ; Somme cumulee par colonnes :
commandes
s cumul l =cumsum(x, r) ; Pk
sum et cumsum zi,k = j=1 xi,j pour 1 i 50
s cumul c =cumsum(x, c) ;
et 1 j 100, puis par lignes.
Fonction de repartition
Commande :
mu = 2 ;
P=cdfnor(PQ,X,Mean,Std) Calcule pour une loi normale de
sigma = 5 ;
(cumulative distribution parametres 2 et 25, la probabilite
x = 6;
function - normal ), P = (x) connaissant le seuil x
P = cdfnor(PQ,x,mu,sigma) ;
cdfbin (binomiale),
cdfpoi (Poisson) ...
Quantiles, inversion des Calcul de la valeur de x tel que
fonctions de repartition. alpha = 0.05; (x) = 1 2
Commande : x = cdfnor(X,0,1,1-alpha/2,alpha/2) Si Y suit la loi normale N (0, 1),
X=cdfnor(X,Mean,Std,P,Q) P (|Y | x) = 1 .
Covariance empirique x =grand(1,100,nor,0,1) ; On peut verifier que :
dune serie statistique y =grand(1,100,nor,0,1) ; variance(x) est egal a
n
a deux variables covar = corr(x,y,1) n1 *corr(x,x,1)
Fonction dsearch (cf. aide de Scilab) Repartition des donnees en classes
y1 = grand( m, n, bin, N, p) ;
y2 = grand( m, n, poi, lambda) ; Genere une matrice de taille m n
Simulation avec grand :
y3 = grand( m, n, nor, mu, sigma) ; constituee de nombres aleatoires distribues
lois binomiales, de Poisson,
y4 = grand( m, n, unf, a, b) ; selon la loi specifiee.
normales, uniformes a densite,
y5 = grand( m, n, uin, 1, n) ; Remarques : pour la loi normale cest
uniformes discretes, exponentielles,
y6 = grand( m, n, exp, 1/lambda) ; lecart-type qui est donne, pour la loi
geometriques, gamma,
y7 = grand( m, n, geom, p) ; exponentielle cest lesperance.
y8 = grand( m, n, gam, b, nu) ;
Diagramme en batons et x = binomial(0.6, 20) ;
La commande binomial permet dobtenir
diagramme en barres subplot(1,2,1) ;
les coefficients dune loi binomiale,
Commandes plot2d3 et bar plot2d3(0 :20, x) ;
subplot permet de diviser la fenetre
Commandes binomial subplot(1,2,2) ;
graphique en deux sous-fenetres
et subplot bar(0 :20, x) ;
Trace lhistogramme de x en utilisant n
x =grand(1,100,nor,1,2) ;
Traces dhistogrammes classes de meme largeur, leffectif de chaque
subplot(121) ; histplot(10, x) ;
Commandes : classe est normalise par leffectif total.
subplot(122) ;
histplot(n,x) Trace lhistogramme de x en utilisant
b=[-9,-4,0,1,2,5,10] ;
et histplot(b,x) les classes dont les bornes sont definies
histplot(b,x) ;
par le vecteur b ([b1 , b2 ], [b2 , b3 ], ...).
Traces de figures avec plot2d
Commandes Scilab Remarques
Trace du graphe de
x est une matrice ligne dont les coefficients
f : x 7 xex
varient de -1 a 5 par pas de 0.1
Premiere methode :
x = [-1 :0.1 :5] ; y est une matrice ligne de meme taille que x
utilisation des
y = x .* exp(-x) ; Penser a utiliser .*, le parametre 2 donne
operations coefficient
plot2d( x, y, style = 2 ) ; la couleur de la courbe :
par coefficient
xtitle(Graphe de f, avec f(x)=xexp(-x)) ; 1 2 3 4 5 6 7
( .*, ./, ., .+)
noir bleu vert cyan rouge magenta rouge
commandes : plot2d
xtitle permet de rajouter un titre
et xtitle
Trace du graphe de
La commande deff permet de definir
f : x 7 xex
rapidement une fonction simple (sinon on
Deuxieme methode : deff(y=f(x), y= x*exp(-x))
peut utiliser function y=f() ... endfunction)
pour eviter les x = [-1 :0.1 :5] ;
x est une matrice colonne
operations coefficient fplot2d( x, f, style = 2 ) ;
fplot2d permet deviter de definir la matrice
par coefficient, xtitle(Graphe de f, avec f(x)=xexp(-x)) ;
colonne y (sinon on peut aussi ecrire :
utilisation de deff
y = feval(x,f) ; plot2d( x, y, 2 ) ; )
et de fplot2d
Trace du graphe de x = [-1 :0.1 :5] ;
f : x 7 xex function y=f(x)
On commence par definir la fonction f
Troisieme methode : y = x * exp(-x) ;
x est ici une variable locale (x est un reel)
Utilisation de la , endfunction
La commande feval permet de creer
commande : feval y = feval(x, f) ;
la matrice ligne y
et de la declaration plot2d( x, y, 3, rect=[0.7,0.8,4,3]) ;
generale dune fonction xtitle(Graphe de f ) ;
Trace du graphe de x = [1 :0.01 :4] ; Pour tracer plusieurs courbes sur un meme
x2
f : x 7 2x1 en vert y1 = (x.2) ./ (2*x-1) ; graphique, on peut soit definir x, y1 et y2
et de lasymptote y2 = 0.5 * x + 0.25 ; comme des matrices lignes comme ici,
(en rouge) plot2d( x, y1, style=3 ) ; soit proceder comme ci-dessous (*)
dans la meme fenetre plot2d( x, y2, style=5, rect=[1,0,4,3] ) ; rect[xmin , ymin , xmax , ymax ] permet de definir
avec un titre et une xtitle(Graphe de f et asymptote) ; la taille de la fenetre graphique
legende legend(Graphe de f, asymptote) ; On rajoute un titre et une legende
x est ici une matrice colonne de meme que
x = [1 :0.01 :4] ; y1 et y2, ce qui permet dutiliser une seule
(*) Meme exemple y1 = (x.2) ./ (2*x-1) ; instruction plot2d, .. permet de passer a
que ci-dessus, mais y2 = 0.5 * x + 0.25 ; la ligne dans une commande (lorsquelle
avec des matrices plot2d([x x],[y1 y2], [3 5], .. est trop longue a ecrire sur une ligne),
colonnes, frameflag, frameflag=6, axesflag=5) ; frameflag=3 : echelle isometrique,
axesflag, xgrid xgrid(1) ; xtitle(Variante) ; frameflag=6 : graduations simples,
legend(Graphe de f, asymptote) ; axesflag=5 : axes qui se croisent au milieu
xgrid(1) : ajout dune grille
style = -1 permet de remplacer
Trace de points les points par des croix :
x = [-1 :0.2 :5] ;
sans ligne brisee 0 1 2 3 4 5
y = x .* exp(-x) ;
entre les points +
plot2d( x, y, style = -1 ) ;
Parametre
xtitle(Trace des points) ;
style = n 6 7 9 10 11
4 O
Traces de figures
x = [1 :0.01 :4] ; Trace la courbe representative de f : x 7 x2
dans des fenetres
y1 = x.2 ; y2 = 3 * x + 1 ; dans la fenetre numero 1, et la courbe
differentes
xset(window, 1) ; plot2d( x, y1, 3 ) ; representative de g : x 7 3x + 1
commande :
xset(window, 2) ; plot2d( x, y2, 5 ) ; dans la fenetre 2
xset(window, n)
Utilisation de x = [1 :0.01 :4] ; Creation de deux sous-fenetres sur une ligne,
sous-fenetres, y1 = x.2 ; y2 = 3 * x + 1 ; traces de la premiere courbe dans la premiere
commande : subplot(1,2,1) ; plot2d( x, y1, 3 ) ; sous-fenetre et de la deuxieme courbe dans
subplot(1,2,n) subplot(1,2,2) ; plot2d( x, y2, 5 ) ; la deuxieme sous-fenetre
Commande : clf clf() ; Efface toutes les figures precedentes