You are on page 1of 7

` e Universit de lAnonyme XXII Prparation a lpreuve de modlisation - Agrgation Externe de Mathmatiques 2004.

e e e e e

Page n 1.

Feuille de TP n 1 Initiation ` Matlab a


Ce TP porte sur les entres et sorties, les fonctions et les outils graphiques dont vous disposez sous e Matlab.

Entres et sorties e

La commande input permet de demander ` lutilisateur Matlab dentrer les valeurs de variables ` a a utiliser. La commande pause permet de stopper lexcution Matlab. Vous pouvez prciser le nombre e e de secondes de pose ou revenir ` Matlab en appuyant sur nimporte quelle touche. La commande save a permet de sauvegarder dans un chier, dont le nom par dfaut est matlab.mat, le contenu de certaines e variables dont vous souhaitez garder une trace. Ce chier peut tre appel par la commande load qui e e restaure toutes les variables que vous avez sauvegardes. e
n=input ( E n t r e z l a v a l e u r de n : ) ; % Affectez une valeur ` n. a a=input ( P r e c i s e z l a v a l e u r de a : ) ; % Affectez une valeur ` a. a v=a . [ 0 : n ] ; A=t o e p l i t z ( v ) ; d=det (A ) ; % Cr ation de la matrice de Toeplitz A e save r e s t o e p n a A d ; % Sauvegarde de n , a , A , d dans restoep . mat clear % Efface toutes les variables de la session . load r e s t o e p % Restaure les variables de restoep . mat . who % V rification . e

Fonctions

Un ensemble de commandes Matlab peut tre considr comme une fonction. On peut voir une fonction e ee comme un sous-programme Matlab dont les param`tres ventuels sont les arguments de la fonction et e e dont les rsultats sont les images de cette fonction. Beaucoup de fonctions Matlab, comme par exemple e mean, sont dj` crites en Matlab et le code Matlab correspondant est stock dans un chier dont le nom eae e se termine par .m. Pour mean, il sagit de mean.m. Ajouter de nouvelles fonctions ` Matlab revient donc ` a a crire de nouveaux chiers de ce type. Il est dusage dappeler une fonction du mme nom que le chier e e correspondant. Simulation de lois discr`tes. Dans votre rpertoire personnel, diter le chier probadis.m suivant e e e dont le code Matlab gn`re une ralisation alatoire dune loi discr`te ` support ni. e e e e e a
function r e s = p r o b a d i s ( x , p ) % res = PROBADIS (x ,p) % Input x vector of real numbers ( support points in IR ) % p vector of probability weights associated to x % i.e . non - negative real numbers such that sum (p ) == 1 % Output res random number chosen from the finite discrete % distribution on x (1) ,... , x(n ) with probability weights % p (1) ,... , p(n ) where n == length (x ) == length (p) % % Renvoie UNE r alisation de la loi discr` te ` support fini sur IR dont les e e a % points de support sont les composantes du vecteur x , et les poids sont les % composantes du vecteur p . Donc x(i ) a une probabilit p(i ) d ^ tre renvoy . e e e % % La m thode consiste ` crire l intervalle [0 ,1] comme une r union disjointe e a e e % d intervalles de longueurs p (1) ,... , p(n ) puis ` regarder au quel appartient a
Page n 1.

14 fvrier 2004. Copyright c A. Grgatif agreg@labo.univ.fr. GNU FDL Copyleft. e e

` e Universit de lAnonyme XXII Prparation a lpreuve de modlisation - Agrgation Externe de Mathmatiques 2004. e e e e e

Page n 2.

% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %

la r alisation d une loi uniforme obtenue par un appel ` rand . Les valeurs e a renvoy es par des appels successifs sont donc pseudo - ind pendantes . e e Pour des raisons d efficacit , les conditions n cessaires suivantes ne sont e e pas contr^ l es par cette fonction : o e - le nombre de param` tres pass s est exactement 2 e e - les deux param` tres x et p sont bien des vecteurs et sont de m^ me longueur e e - les composantes de p sont positives ou nulles et leur somme vaut 1. See also RDISCR . ### Copyright ( C ) D . Chafa , 2003 -12 -06. ### http :// www . lsp . ups - tlse . fr / Chafai / agregation . html ### Licence GNU General Public License http :// www . gnu . org / copyleft / gpl . html

On pourrait impl menter cette fonction de la fa on suivante : e c INDICES = find ( cumsum (p ) >= rand ); res = x( INDICES (1)); return ; Cette m thode est correcte mais inefficace car elle ne tient pas compte de e la monotonie de cumsum (p ) , ce qui entraine des tests inutiles une fois que la valeur critique a t franchie . En jargon , c est un firstmatch qu il e e nous faut , pas un matchall . Le nombre de if impliqu s dans find est e toujours gal ` la taille de ce qu on lui passe en param` tre . e a e Morale de l histoire : la bri` vet d un code n assure pas sa performance ! e e Et l abscence de if dans un code ne signifie pas qu il ne fait pas appel indirectement ` des if , et encore moins que cela est fait de mani` re a e optimale ! La fonction find n est qu une boucle for contenant un if . Ci - dessous , nous utilisons une version plus rapide dans le plus pur style for - if avec un nombre de if optimal . On pourrait adapter l ordre des intervalles test s ( et donc l arbre associ ) aux poids p(i ) de fa on ` e ee c a tester d abord les intervalles les plus probables . Est - ce vraiment mieux ? Exercice !

n = length ( x ) ; % le nombre d atomes . r = rand ; % une r alisation de loi uniforme sur [0 ,1]. e a = 0 ; b = p ( 1 ) ; % [a ,b ] = sous - intervalle de proba p(i ) pour l uniforme . f o r i = 1 : n1 % parcours de tous les sous - intervalles juxtapos s . e i f ( ( r >= a ) & ( r < b ) ) res = x( i ); return ; % on a trouv le bon intervalle , on sort . e end a = b ; b = b + p ( i + 1 ) ; % on passe ` l intervalle suivant . a end r e s = x ( n ) ; % le bon intervalle est le dernier . return ;

La commande Matlab type permet de lister le contenu dun chier. Ainsi, type probadis vous montrera le code source Matlab de la fonction probadis. Le commentaire ajout ` partir de la seconde ea

14 fvrier 2004. Copyright c A. Grgatif agreg@labo.univ.fr. GNU FDL Copyleft. e e

Page n 2.

` e Universit de lAnonyme XXII Prparation a lpreuve de modlisation - Agrgation Externe de Mathmatiques 2004. e e e e e

Page n 3.

ligne constituera laide ach lorsque lutilisateur tapera help probadis. Finalement, la commande what e liste les chiers Matlab du rpertoire courant. e Voici une autre fonction de simulation de loi discr`te, qui peut renvoyer une matrice de ralisations. e e
function X = r d i s c r (num , x , p ) %X = RDISCR ( num ,x ,p) % Input num positive integer or a vector [ lig , col ] of integers % x vector of real numbers ( support points in IR ) % p vector of probability weights associated to x % i.e . non - negative real numbers such that sum (p ) == 1 % Output X num - vector or a num - matrix of random numbers % chosen from the finite discrete distribution on % x (1) ,... , x(n ) with probability weights p (1) ,... , p(n) % where n == length (x ) == length (p) % % Renvoie num r alisations ou une matrice [ lig , col ] de r alisations e e % pseudo -i.i.d de la loi discr` te ` support fini sur IR dont les e a % points de support sont les composantes du vecteur x , et les poids sont les % composantes du vecteur p . Donc x(i ) a une probabilit p(i ) d ^ tre renvoy . e e e % % La m thode consiste ` crire l intervalle [0 ,1] comme une r union disjointe e a e e % d intervalles de longueurs p (1) ,... , p(n ) puis ` regarder au quel appartient a % la r alisation d une loi uniforme obtenue par un appel ` rand . Les valeurs e a % renvoy es par des appels successifs sont donc pseudo - ind pendantes . e e % Pour des raisons d efficacit , les conditions n cessaires suivantes ne sont e e % pas contr^ l es par cette fonction : o e % - le nombre de param` tres pass s est exactement 3 e e % - les deux param` tres x et p sont bien des vecteurs et sont de m^ me longueur e e % - les composantes de p sont positives ou nulles et leur somme vaut 1 % - le param` tre num est un entier positif non nul une un couple de ce type e % % See also PROBADIS . % % ### Copyright ( C ) D . Chafa , 2003 -12 -06. % ### http :// www . lsp . ups - tlse . fr / Chafai / agregation . html % ### Licence GNU General Public License http :// www . gnu . org / copyleft / gpl . html % % % % % % % % % % % % % % % % Voir les commentaires dans le code de la fonction probadis . Faire type probadis pour cela . Le code qui suit pourrait beaucoup gagner en rapidit sur une machine // e Il est possible de l am liorer en stockant un arbre construit avec les e tests utilis s par les valeurs d j` g n r es . Il est surtout aussi possible e e a e e e d imiter le code matriciel de la fonction de r partition inverse binomiale e de la fonction qbinom de Stixbox , appel e par rbinom . Exercice ! e D autres algorithmes sont possibles . Par exemple , on pourrait proc der e avec des r alisations de Bernoulli i.i.d . ( obtenues facilement avec rand ) e pour choisir l intervalle : La probabilit d ^ tre <= x (1) est p (1) e e Sinon , la probabilit d ^ tre <= x (2) est p (2)/ sum (p (2: n )) e e etc . Nul besoin de commencer par x (1) , et l on peut adapter l arbre utilis e aux poids p(i ) de fa on ` faire un nombre de tests optimal . Exercice ! c a

14 fvrier 2004. Copyright c A. Grgatif agreg@labo.univ.fr. GNU FDL Copyleft. e e

Page n 3.

` e Universit de lAnonyme XXII Prparation a lpreuve de modlisation - Agrgation Externe de Mathmatiques 2004. e e e e e

Page n 4.

i f length (num) == 1 num = [ num 1 ] ; else num = reshape (num , 1 , 2 ) ; end n = U = X = for for length ( x ) ; % le nombre d atomes . rand (num ) ; % r alisations de loi uniforme sur [0 ,1]. e repmat ( x ( n ) , num ( 1 ) , num ( 2 ) ) ; % par d faut , la valeur est la plus grande e l = 1 :num ( 1 ) % lignes c = 1 :num ( 2 ) % colonnes a = 0 ; b = p ( 1 ) ; % [a ,b ] = sous - inter . de proba p(i ) pour l uniforme . f o r i = 1 : n1 % parcours de tous les sous - intervalles juxtapos s . e i f ( (U( l , c ) >= a ) & (U( l , c ) < b ) ) X( l , c ) = x ( i ) ; break ; % on a trouv le bon intervalle , on sort . e end a = b ; b = b + p ( i + 1 ) ; % on passe ` l intervalle suivant . a end

end end return ;

Exercice 2.1 (Loi binomiale). Crer un code Matlab permettant de gnrer un vecteur alatoire X e e e e contenant N ralisations i.i.d. de loi binomiale B(n, p) o` les valeurs N, n 1 et 0 < p < 1 sont aectes e u e par lutilisateur. Pour N assez grand, vrier la LGN sur les moyennes empiriques successives de X. Voici e un exemple de programme qui fait laaire, et donc la sortie graphique se trouve en page 6.
% % ### Copyright ( C ) D . Chafa , 2003 -12 -06. % ### http :// www . lsp . ups - tlse . fr / Chafai / agregation . html % ### Licence GNU General Public License http :// www . gnu . org / copyleft / gpl . html % % Ce bout de code permet de simuler une loi binomiale B(n ,p ) et de comparer % graphiquement les moyennes empiriques avec la moyenne th orique . e % Tous les vecteurs sont des vecteurs ligne . % % Nota bene : la biblioth` que Stixbox fournit la fonction rbinom qui permet e % de s affranchir des calculs d taill s ici , cf . fin du pr sent fichier . e e e % clear r n p q P Q C B X clf % r = input ( Nombre maximal de r a l i s a t i o n s ? = ) ; e n = input ( T a i l l e n de l a l o i b i n o m i a l e B( n , p ) , q u i a n+1 atomes ? = ) ; p = input ( Vale ur du param` tre p de l a l o i b i n o m i a l e B( n , p) ? = ) ; e % p = proba de gagner ` pile ou face = proba de 1 dans la Bernoulli sur {0 ,1} a % q = proba de perdre ` pile ou face = proba de 0 dans la Bernoulli sur {0 ,1} a % B(n ,p ) est la loi de la somme de n v.a . i.i.d . de Bernoulli de ce type , % i.e . la ni` me puissance de convolution de cette loi de Bernoulli . Elle e % repr sente la loi du nombre de succ s ` pile ou face en n lanc s . e e a e % disp ( s p r i n t f ( C a l c u l de l a l o i b i n o m i a l e B(%d,% f ) , n , p ) )
Page n 4.

14 fvrier 2004. Copyright c A. Grgatif agreg@labo.univ.fr. GNU FDL Copyleft. e e

` e Universit de lAnonyme XXII Prparation a lpreuve de modlisation - Agrgation Externe de Mathmatiques 2004. e e e e e

Page n 5.

q = 1 p; P = [ 1 , cumprod( p o n e s ( 1 , n ) ) ] ; % puissances croissantes de p Q = [ f l i p l r (cumprod( q o n e s ( 1 , n ) ) ) , 1 ] ; % puissances d croissantes de q e C = [ 1 , cumprod ( [ n : 1 : 1 ] ) . / cumprod ( [ 1 : n ] ) ] ; % coef . du bin^ me de i = 1 ` n o a B = C . P . Q; % vecteur des poids de B(n ,p) % disp ( s p r i n t f ( G n r a t i o n a l a t o i r e de %d r a l i s a t i o n s de B(%d,% f ) , r , n , p ) ) e e e e X = r d i s c r ( [ 1 , r ] , [ 0 : n ] ,B ) ; % chantillonnage e % alternative : %X =[] % for i =1: r % X = [ X probadis ([0: n],B )]; % end % disp ( s p r i n t f ( Trac d e s g r a p h i q u e . ) ) e plot (cumsum(X ) . / [ 1 : length (X) ] , b ) % trac des moyennes empiriques e t i t l e ( L o i d e s Grands Nombres ) xlabel ( Nombre de r e a l i s a t i o n s ) ylabel ( Moyennes e m p i r i q u e s ) hold on plot ( n p o n e s ( 1 , r ) , r ) % trac de la moyenne th orique e e legend ( Empirique , T h e o r i q ue ) hold o f f % % Avec Stixbox , inutile de calculer B et d appeler rdiscr ([1 , r ] ,[0: n],B) % puisque qu un simple rbinom ([1 , r],n ,p ) suffit . % M^ me si l on d cide d utiliser quand m^ me prodadis , les coefficients e e e % binomiaux n cessaires au calcul de B peuvent se calculer beaucoup plus vite e % en utilisant la fonction Stixbox bincoef qui fait appel ` la fonction gamma . a %

Exercice 2.2. Soit (Xn )nN une suite de variables alatoires i.i.d. de loi exponentielle E() avec > 0. e n Si Sn = k=1 Xk , N0 = 0 et pour tout t > 0, Nt = n=1 I{Sn t} , (Nt )t 0 est un processus de Poisson dintensit . Montrer que, pour tout t > 0, Nt suit la loi de Poisson P(t). En dduire un code Matlab e e permettant de gnrer un vecteur alatoire Y contenant N ralisations i.i.d. de loi P() o` les valeurs e e e e u N 1 et > 0 sont aectes par lutilisateur. Pour N assez grand, vrier la LGN sur les moyennes e e empiriques successives de Y . Exercice 2.3. Pour N , N1 et n 1 avec N1 , n N , la loi hypergomtrique H(N, N1 , n) est donne, e e e nk k n pour tout k N avec 0 k n, par P(X = k) = CN1 CN N1 /CN . Crer un code Matlab permettant de e gnrer un vecteur alatoire Z contenant M ralisations i.i.d. de loi H(N, N1 , n) o` les valeurs M, N 1 e e e e u et N1 , n N sont aectes par lutilisateur. e 1. Si N tend vers linni et le rapport N1 /N tend vers p avec 0 < p < 1, montrer que X converge en loi vers la loi Binomiale B(n, p). Pour M, N assez grand et N1 = pN avec 0 < p < 1, tracer lhistogramme de Z et comparer le ` la loi B(n, p). a 2. Si N , N1 et n tendent vers linni et le produit nN1 /N tend vers > 0, montrer que X converge en loi vers la loi de Poisson P(). Pour M , N assez grand, N1 = N et n = N , tracer lhistogramme de Z et comparer le ` la loi P(). a

Reprsentations graphiques e

14 fvrier 2004. Copyright c A. Grgatif agreg@labo.univ.fr. GNU FDL Copyleft. e e

Page n 5.

` e Universit de lAnonyme XXII Prparation a lpreuve de modlisation - Agrgation Externe de Mathmatiques 2004. e e e e e

Page n 6.

{ I l l u s t r a t i o n de l a LGN pour l a l o i e x p o n e n t i e l l e } c l e a r ; n = 1 0 0 0 ; lambda = 0 . 5 ; X=log ( rand ( n , 1 ) ) / lambda ; figure ; % Cr ation d une nouvelle fen^ tre graphique . e e plot (cumsum(X ) . / [ 1 : length (X) ] , b ) % Trace les moy . emp . successives de X. t i t l e ( L o i d e s Grands Nombres ) % Titre de la figure . xlabel ( Nombre de r a l i s a t i o n s ) e % Titre des abscisses . ylabel ( Moyennes e m p i r i q u e s ) % Titre des ordonn es . e hold on % Garde la fen^ tre graphique . e plot ( 1 / lambda o n e s ( n , 1 ) , r ) ; % Trace la limite th orique . e legend ( Empirique , T h e o r i q ue ) ; % L gende . e

Exercice 3.1. Ajouter ` vos codes Matlab les reprsentations graphiques rencontres ci-dessus. a e e
Moyennes empiriques 0.8 0 100 200 300 Loi des Grands Nombres 400 500 600 700 800 900 1000 Empirique Theorique Nombre de realisations 1.2 1.4 1.6 1.8 1 2

Fig. 1 Sortie graphique du programme 2 5. Voici une fonction Matlab qui permet de simuler la loi uniforme discr`te nie de faon rapide et simple. e c

function X = r i n t (num , k ) ; % X = RINT ( num ,k) % Input num positive integer or a vector [ lig , col ] of integers % k positive integer % Output X num - vector or a num - matrix of random numbers

14 fvrier 2004. Copyright c A. Grgatif agreg@labo.univ.fr. GNU FDL Copyleft. e e

Page n 6.

` e Universit de lAnonyme XXII Prparation a lpreuve de modlisation - Agrgation Externe de Mathmatiques 2004. e e e e e

Page n 7.

% % % % % % % % % % % % % %

chosen from uniform distribution on {1 ,... , k} Renvoie num r alisations ou une matrice [ lig , col ] de r alisations e e pseudo - ind pendantes de la loi uniforme discr` te sur les k premiers e e entiers non nuls {1 ,... , k }. La m thode consiste ` consid rer la partie enti` re de 1+ kU o` U suit une loi e a e e u uniforme sur [0 ,1]. Cette derni` re s obtient via la fonction rand , et les e valeurs renvoy es par des appels successifs sont donc pseudo - ind pendantes . e e ### Copyright ( C ) D . Chafa , 2003 -12 -06. ### http :// www . lsp . ups - tlse . fr / Chafai / agregation . html ### Licence GNU General Public License http :// www . gnu . org / copyleft / gpl . html

i f length (num) == 1 num = [ num 1 ] ; end X = c e i l ( k rand (num ) ) ; return ;

Rfrences ee
[BL98] Ph. Barbe and M. Ledoux, Probabilits, De la licence ` lagrgation, Belin, 1998. e a e [Bou86] N. Bouleau, Probabilits de lingnieur, variables alatoires et simulation, Hermann, 1986. e e e [DCD82] D. Dacunha-Castelle and M. Duo, Probabilits et statistiques. Tome 1, Masson, Paris, 1982, e Probl`mes ` temps xe. e a [Yca02] B. Ycart, Mod`les et Algorithmes Markoviens, Mathmatiques et Applications, vol. 39, Springer, e e 2002.

14 fvrier 2004. Copyright c A. Grgatif agreg@labo.univ.fr. GNU FDL Copyleft. e e

Page n 7.

You might also like