Vous êtes sur la page 1sur 8

M1IM, Calcul de risques 2009-2010

Travaux Pratiques no 1
` Introduction a Matlab Rfrence : http://www.ann.jussieu.fr/~postel/matlab/ ee Matlab est un logiciel de calcul numrique, utilis dans de nombreux domaines dapplication. e e Il est bas sur le calcul matriciel. Le but de ce TP est dintroduire les commandes les plus e courantes de Matlab sur les thmes de la simulation et de la abilit. e e Sous LINUX, lancez Matlab en tapant matlab dans un terminal.

1
1.1

Les bases
Vecteurs et matrices.

Matlab traite un seul type dobjet : les matrices. Les scalaires sont des matrices 1 1, les vecteurs lignes des matrices 1 n, les vecteurs colonnes des matrices n 1. Le caract`re >> e signie que Matlab attend une instruction, quil faut valider par la touche Entre. Essayer (et e comprendre) la squence de commandes suivantes : e Exemple 1.1 >> a=30 >> a >> a=-20 ; >> % ceci est un commentaire, il nest pas valu e e >> a >> x=[1,2,3] ; >> y=[1 ;2 ;3] ; >> z=[4,5,6] ; >> x >> y >> [x,z] >> z=1 :2 :12 >> length(z) >> z(2) >> z(2 :4) >> z(2 :4)=[] >> length(z) >> z >> sum(z) >> z.*z >> diag(z) >> M=[11 12 13 14 ;21 22 23 24 ; 31 32 33 34 ; 41 42 43 44] >> M(2,3) >> M(5,2) % comprendre lerreur >> M<23 >> A=ones(3,2) >> B=ones(2,4) >> help ones >> A+B% comprendre lerreur

>> C=A*B >> D=C+i >> D >> E=zeros(4,5) >> size(E) >> lookfor identity >> help eye% ou cliquer sur le rsultat du lookfor e >> F=eye(4) >> 3*F+2 >> clear C >> C >> A >> clear all >> x >> A >> if 4<7 0 else 2 end >> s=0 for i=1 :10 s=s+i end

On trouvera ` la n de ce TP, dans la section 3, des tableaux rsumant certaines commandes a e couramment utilises. Ne pas hsiter ` utiliser la commande help et la commande lookfor pour e e a trouver des informations.

1.2

Sauvegarder et charger des donnes e

Commenons par crer et sauver des donnes : e e >> x=1 :100 >> save data.dat x -ascii ; Le chier data.dat contient un vecteur constitu des cent premiers entiers. Charger ce vecteur e dans la variable y avec la commande : >> y=load(data.dat) Lintrt est de pouvoir rutiliser data.dat lors dune autre session. ee e

1.3

Graphiques

Les principales fonctions graphiques sont numres dans la section 3.3. e ee 1.3.1 plot

Consulter laide de la fonction plot. Nous allons observer quelques reprsentations de lois e utilises en abilit : la loi exponentielle et la loi de Weibull, qui modlisent des dures de vie. e e e e Exemple 1.2 Loi exponentielle Densit : e Fiabilit : e Taux de dfaillance : e f : x ex R : x ex h :x

Reprsentons dabord la courbe exponentielle de param`tre = 1. e e >> figure >> x=0 :.01 :5 ; >> f=exp(-x) ; >> plot(x,f) ; >> title(Densite de la loi exponentielle de parametre 1)

Reprsentons maintenant la densit de la loi exponentielle pour = 0.5, 1 et 2. e e >> x=0 :.01 :5 ; >> lambda=[0.5,1,2] ; >> c=[r,g,b] ;% le vecteur des couleurs >> hold on >> clear s >> for i=1 :3 f=lambda(i)*exp(-lambda(i)*x) ; plot(x,f,c(i)) ; s{i}=[lambda= num2str(lambda(i))] ;% s est une liste end >> title(Densite de la loi exponentielle de parametre lambda) >> legend(s) >> hold off

Exercice 1. En saidant de la commande >> help plot, reprsenter les courbes de abilit e e pour les parametres 2 et 4 et en couleurs jaune et noir.

1.4
1.4.1

Scripts et fonctions
Les scripts

Ce sont des chiers texte avec une extension .m Ils contiennent des suites dinstructions Matlab qui sont excutes les unes apr`s les autres. e e e Exemple : sauvez dans le rpertoire courant les lignes suivantes sous le nom parabole.m : e >> figure >> x=0 :.01 :5 >> f=x.^2 >> plot(x,f) ; La commande parabole achera x, puis f , puis tracera une parabole.

1.4.2

Les chiers de fonctions

Comme les chiers dinstruction, ce sont des chiers texte avec une extension .m Leur syntaxe est particuli`re. Ils contiennent la dnition dune fonction et portent le nom de cette e e fonction. Exemple 1.3

function d=densnorm(x) % densnorm= densite de la loi N (0, 1) % densnorm(x) retourne (1/sqrt(2 pi)) exp(x2 /2) d=(1/sqrt(2*pi))*exp((-x.^2)/2) ; Si ce chier est plac dans un rpertoire accessible, la fonction densnorm devient une fonction e e Matlab comme toutes les autres. Le texte plac en commentaire est le contenu de laide pour e la nouvelle fonction.

1.4.3

Les fonctions dclares en ligne e e

On peut galement dclarer des fonctions (courtes de prfrence) avec la commande inline. e e ee Exemple 1.4 Taper les commandes suivantes : >> f=inline(3*a+b^2,a,b) ; >> x=1 :3 ; >> y=4 ; >> res=f(x,y)

Exercice 2. produit scalaire Crer une fonction calculant le produit scalaire de ses deux entres. Dabord dans un chier, e e puis en mode en ligne.

Nombres pseudo-alatoires, simulation e

Matlab dispose notamment des deux gnrateurs de nombres (pseudo) alatoires suivants : e e e rand pour la loi uniforme sur [0, 1], randn pour la loi normale N (0, 1). Des appels successifs ` ces gnrateurs sont censs simuler des ralisations de variables indpendantes a e e e e e de loi voulue : uniforme sur [0, 1] ou normale centre rduite. Essayez la squence de commandes e e e suivantes : Exemple 2.1 >> A=rand(3,2) >> B=rand(3) >> C=randn(4,1) >> p=1/4 ; >> x=(rand(10,1)<p) Les deux derni`res commandes permettent de simuler un 10-chantillon de la loi de Bernoulli e e de param`tre p = 1/4. e Lexercice 3 repose sur le Thor`me de Glivenko-Cantelli : la fonction de rpartition empie e e rique dun n-chantillon dune loi F converge presque-surement en norme inni vers la fonction e de rpartition de F . e Exercice 3. Ecrire dans le rpertoire courant un programme intitul testrand.m et qui teste e e le gnrateur rand de la mani`re suivante : on tire dabord n ralisations (x1 , . . . , xn ) de la e e e e loi uniforme sur [0, 1] grce ` rand(n,1) (on prendra par exemple n = 1000). On appelle loi a a empirique du n-chantillon la loi uniforme sur lensemble ` n lments {x1 , . . . , xn }. Comparer e a ee sur un mme graphique la fonction de rpartition de la loi empirique du n-chantillon obtenu et e e e la fonction de rpartition thorique de la loi uniforme. Faire la mme chose pour randn (pour e e e

la fonction de rpartition de la gaussienne, saider de erf dont on consultera laide). e

Exercice 4. 4.1 Ecrire une fonction qui renvoit 1 avec probabilit 0, 5 et 2 avec probabilit 0, 5. e e 4.2 Ecrire une fonction qui renvoit 1 avec probabilit 0, 5 et 2 avec probabilit 0, 25 et 3 avec e e probabilit 0, 25. e 4.3 Ecrire une fonction qui prend trois param`tres p1 , p2 et p3 et qui renvoit 1 avec probabilit e e p1 et 2 avec probabilit p2 et 3 avec probabilit p3 . e e 4.4 Soit r un entier naturel non nul, et (p1 , . . . , pr ) un vecteur dnissant une loi de probabilit e e sur {1, . . . , r} : les pi sont positifs ou nuls et leur somme vaut 1 et la loi est une probabilit sur {1, . . . , r} qui donne masse pi ` i. Ecrire une fonction qui prend en entre le vecteur (p1 , . . . , pr ) a e et qui donne en sortie une ralisation tire selon la loi donne par (p1 , . . . , pr ). e e e 4.5 Modier votre programme de fa con ` obtenir en sortie la ralisation dun n-chantillon de a e e loi donne par (p1 , . . . , pr ) (n sera donc un param`tre dentre). e e e 4.6 Ecrire un programme qui teste votre simulateur comme dans lexercice 3. 4.7 Ecrire une fonction qui renvoit la somme des rsultat du jet de n ds ` 6 faces. e e a

3
3.1

Tableaux rcapitulatifs e
Vecteurs et matrices
VECTEURS n :m n :p :m length(x) x(i) x(i1 :i2) x(i1 :i2)=[] [x,y] x*y x*y nombres de n ` m par pas de 1 a nombres de n ` m par pas de p a longueur de x i-`me coordonne de x e e coordonnes i1 ` i2 de x e a supprimer les coordonnes i1 ` i2 de x e a concatner les vecteurs x et y e produit scalaire des vecteurs lignes x et y produit scalaire des vecteurs colonnes x et y MATRICES size(A) A(i,j) A(i1 :i2, :) A(i1 :i2, :) =[] A( :,j1 :j2) A( :,j1 :j2)=[] A( :) diag(A) nombre de lignes et de colonnes de A coecient dordre i,j de A lignes i1 ` i2 de A a supprimer les lignes i1 ` i2 de A a colonnes j1 ` j2 de A a supprimer les colonnes j1 ` j2 de A a concatner les vecteurs colonnes de A e coecients diagonaux de A

OPERATIONS MATRICIELLES

A rank(A) inv(A) expm(A) det(A) trace(A) poly(A) eig(A) [U,D]=eig(A) + * ^ .* .^ A\b b/A ./ zeros(m,n) ones(m,n) eye(n) diag(x) rand(m,n) randn(m,n)

transpose de A (pour une matrice complexe, cest la transconjugue) e e rang de A inverse de A exponentielle de A dterminant de A e trace de A polynme caractristique de A o e valeurs propres de A vecteurs propres et valeurs propres de A addition, soustraction multiplication, puissance (matricielles) multiplication, puissance terme ` terme a solution de A x = b solution de x A = b division terme ` terme a MATRICES PARTICULIERES matrice matrice matrice matrice matrice matrice nulle de taille m,n de taille m,n dont tous les coecients valent 1 identit de taille n e diagonale dont la diagonale est le vecteur x de taille m,n ` coecients i.i.d.de loi uniforme sur [0, 1] a de taille m,n ` coecients i.i.d. de loi normale N (0, 1) a

3.2

Fonctions

N.B : On peut retrouver une fonction avec lookfor.

FONCTIONS ELEMENTAIRES sqrt sin asin round abs exp cos acos floor angle log tan atan ceil conj

Certaines fonctions de Matlab sappliquent ` lensemble dun vecteur. Lorsquon les applique ` a a des matrices, elles op`rent colonne par colonne. e

Le tableau suivant dcrit le rsultat de quelques unes de ces fonctions lorsquelles sont ape e pliques ` un vecteur x : e a

FONCTIONS VECTORIELLES max(x) min(x) sort(x) [y I]=sort(x) sum(x) cumsum(x) maximum minimum tri par ordre croissant retourne en plus les indices des lements de x e somme des lments de x ee vecteur contenant la somme cumule des premiers lments de x : e ee [x(1) x(1) + x(2) ...] produit des lments de x ee vecteur contenant le produit cumul des premiers lments de x : e ee [x(1) x(1)x(2) ...] vecteur (de taille length(x)-1) des dirences entre deux lments conscutifs e ee e de x : [x(2) x(1) x(3) x(2) ...] moyenne des lments de x ee mdiane e Ecart type ((normalise par length(x)-1)

prod(x) cumprod(x)

diff(x) mean(x) median(x) std(x)

3.3

Graphiques
DIFFERENTS TYPES DE GRAPHIQUES

plot(x,y,s) bar(x,y,s) stem(x,y,s) stairs(x,y) fplot hist

trac dune courbe ou dun nuage de points e trac sous forme dun histogramme e diagramme en btons a trac en escalier des valeurs discr`tes e e reprsente des fonctions e trace des histogrammes

s est un param`tre facultatif constitu dune cha de caract`res qui spcie le type de trac e e ne e e e (couleur, dirents tracs en pointills, symbole pour le trac de points). Par dfaut, le trac e e e e e e est continu. Tapez help plot pour avoir la liste des valeurs possibles pour s.

OUVRIR, FERMER, PARTAGER UNE FIGURE . . . hold on hold off clf figure close close all subplot(n, m, p) les prochains tracs se superposeront aux tracs dj` eectus e e ea e le contenu de la fentre graphique sera eac lors du prochain trac e e e eace le contenu de la fentre graphique e ouvre une nouvelle fentre graphique e ferme la fentre graphique sur laquelle on travaille e ferme toutes les fentres graphiques e partage la fentre graphique en m n espaces graphiques et slectionne le e e p-i`me. e

AXES, LEGENDES . . . axis([xmin xmax ymin ymax]) grid grid off title(titre) xlabel(titre) ylabel(titre) legend(titre1,titre2,...) text(x, y,texte) gtext(texte) pour dnir les chelles des x et des y e e quadrillage du graphique titre pour le graphique lgende pour laxe des x e lgende pour laxe des y e lgende pour chaque courbe du graphique e texte explicatif positionn ` la position (x, y) ea texte positionn ` laide de la souris ea

NB : Si a est une variable contenant le nombre 2, la commande text(x, y,[ le resultat est num2str(a,3)]) achera le texte suivant le resultat est 1.41 ` partir de la position (x, y) a sur la fentre graphique. e

Une gure peut tre sauvegarde sous un format postcript en utilisant la commande e e >> print -dps nomfichier Un chier nomfichier.ps est cre dans le rpertoire courant. Si on a plusieurs gures, on peut e e spcier la gure que lon veut sauvegarder. La commande suivante sauvegardera la gure 3 e dans le chier art.ps : >> print -dps -f3 nomfichier On peut visualiser un tel chier en utilisant le logiciel ghostview et on peut imprimer la gure en utilisant la commande linux dimpression lpr.

3.4

Dans les chiers .m

Instructions de rupture de squence e break termine lexcution de la boucle la plus proche dans laquelle se trouve e break return permet de terminer lexcution dun chier .m sans aller jusqu` la n e a du chier error(message) ache la cha de caract`res message et interrompt lexcution du prone e e gramme en cours