Introduction à la programmation sous Scilab : TP auto-correctifs II Licence de Physique à distance
Table des matières I Vecteurs et matrices (II) 1 a) Vecteurs........................................ 1 b) Matrices........................................ 1 II Entrées, sorties, fichiers 2 a) Lecture/Ecriture d un fichier............................. 2 b) Exemple d application : signaux bruités....................... 3 III Simulation d un mouvement Brownien 5 a) Le mouvement Brownien............................... 5 b) Simulation....................................... 5
I Vecteurs et matrices (II) 1 I Vecteurs et matrices (II) a) Vecteurs Le but de ces exercices est de vous familiariser avec quelques opérations simples sur les matrices et les vecteurs, ainsi qu avec les fonctions graphiques. Exercice 1 : 1) Générer deux vecteurs aléatoires, normalement distribués, X et Y, de dimension (1000,1). 2) Tracer sur une même figure dans deux graphiques distincts (fonction subplot) ces deux vecteurs en fonction des indices des tableaux. 3) Calculer les moyennes de X, de Y. 4) Calculer les variances X et de Y. 5) Quel est le maximum de X? de Y? Trouver les indices des tableaux X et Y correspondants aux maximas (commande find). 6) Soit S = X + Y et D = X Y Tracer S et D sur une autre figure, superposé sur un même graphique. Calculer la moyenne et l écart type de S et de D. Conclusion? 7) Soit Z le produit terme à terme de X et Y, i.e. Z(i) = X(i)*Y(i). Tracer Z. Calculer la moyenne et l écart type de Z. 8) Calculer (sans boucle for) le produit scalaire C des vecteurs X et Y. b) Matrices Exercice 2 : 1) Soient les vecteurs u=[0,0.25,0.5,1] et v=(0:5)/10. À l aide des opérateurs [ ], (transposition) et ; (à la ligne) construire une matrice X de taille 4x6 dont la ligne i est formée de u(i) et une matrice Y de même taille dont la colonne j est formée de v(j). 2) Comment effectuer le produit matriciel de X et Y (dans cet ordre)? Quelles sont les dimensions des matrices obtenues?
2 II Entrées, sorties, fichiers Dans cette section, on montre comment sauver des données dans un fichier (des résultats, par exemple) et comment récupérer ces données en relisant le fichier. Comme toujours, il vous est demandé de créer un répertoire de travail et de changer le répertoire de travail courant dans la console Scilab. Sauvegardez vos fichiers scripts à chaque exercice à l aide de l éditeur de scilab (scipad ou SciNotes, selon les versions). a) Lecture/Ecriture d un fichier Il est important de pouvoir écrire des résultats (importants!) dans un fichier pour pouvoir les conserver d une session à l autre. Les procédures de lecture et écriture de fichiers peuvent être très compliquées, surtout si on y ajoute des formats d écriture/lecture. On se contentera ici du minimum : comment sauvegarder des variables dans un fichier (en format libre), et relire ces variables. Ouverture/création d un fichier Pour ouvrir un fichier dans lequel on pourra écrire des données, utiliser la fonction file comme dans l instruction fid=file( open, monfichier1 ) Cette instruction crée un fichier nommé monfichier1 et lui associe l entier fid. Le fichier monfichier1 est créé dans le répertoire courant, i.e. normalement votre répertoire de travail. On peut aussi préciser le chemin complet du fichier si on souhaite le créer ailleurs (par exemple C:/...). Par la suite, on utilisera la variable fid pour effectuer des opérations sur ce fichier. Si le fichier existe déjà, écrire fid=file( open, monfichier1, old ) Il y a d autres arguments d entrée ou de sortie de la fonction file qu on peut ignorer à ce stade de l initiation à Scilab. Écriture de données L écriture de données dans le fichier se fait par l instruction write. Essayez par exemple les instructions suivantes : A=rand(5,3); fid=file( open, monfichier1 ) write(fid,size(a)); write(fid,a) file( close,fid); et allez voir ce qui est écrit dans le fichier nommé monfichier1 à l aide d un éditeur de texte (par exemple Scipad).
b) Exemple d application : signaux bruités 3 Fermeture d un fichier Un fichier doit toujours être fermé après utilisation. L instruction file( close,fid); à la fin de l exemple précedent permet de fermer le fichier identifié par fid. Lecture La lecture des données inscrites dans un fichier se fait avec la fonction read. Par exemple essayez : fid=file( open, monfichier1, old ); dim=read(fid,1,2) mat=read(fid,dim(1),dim(2)) file( close,fid); Puisque la commande read nécessite qu on spécifie les dimensions du tableau de données qu on veut lire (ici, la matrice A ; voir aussi le help), on a choisi d écrire les dimensions de A au début du fichier (commande write(fid,size(a))), de manière à pouvoir les récuperer au moment de la lecture (commande dim=read(fid,1,2)) pour ensuite les utiliser pour la commande read (dans matrice=read(fid,dim(1),dim(2))). Si par ailleurs on connaît le nombre de colonnes (3 pour la matrice A), on peut écrire mat= read( monfichier1,-1,3) ou -1 signifie qu on veut lire la totalité des lignes. b) Exemple d application : signaux bruités Exercice 3 : Nous allons fabriquer un signal bruité. Le signal est un sinus d amplitude 1 auquel on ajoute un bruit normalement distribué b. On suppose qu on dispose de plusieurs réalisations (plusieurs mesures) de ce signal bruité. 1) Créez un vecteur colonne t variant de 0 à 10 avec un pas de 0.1. Puis créer le vecteur s, sinus de période 1 aux temps t. 2) Créer la matriice b ayant pour nombre de ligne la longueur de s et 10 colonnes. 3) Créez la matrice sb en ajoutant s à chaque colonne de b. 4) Enregistrer les dimensions de sb puis la matrice sb dans un fichier nommé sb.txt. Effacer ensuite toutes les variables en mémoire (commande clear). Nous avons donc perdu toute information sur le signal s. Nous ne disposons plus que du signal bruité (c est une situation plotôt réaliste). 5) Récupérer la matrice sb en lisant le fichier sb.txt.
4 6) Tracer sur une même figure les colonnes de sb en fonction du temps t. 7) Calculer la moyenne sbm des signaux bruités, c est à dire la moyenne des colonnes de sb. Tracer cette moyenne en noir, trait gras, sur le graphe précédent (commande : plot(t,sbm, k, thickness,3))
III Simulation d un mouvement Brownien 5 III Simulation d un mouvement Brownien Dans cette section, nous vous proposons un exercice complet, dans lequel vous devrez intégrer plusieurs des outils discutés dans les sections précedentes. a) Le mouvement Brownien Le mouvement Brownien est un mouvement discontinue dont chauque étape (chaque pas) relève du plus pur hasard. L étude de ce mouvement a eu d immenses implications sur la description des phénomènes aléatoires (article fondateur d Einstein en 1905 de la physique des processus stochastiques). b) Simulation Exercice 4 : On considère une particule se déplaçant suivant un axe Ox. Sa position initiale est R(0) = 0. Aux instants t k = k t ( t = 1 s), elle effectue un déplacement X k. Chaque déplacement X k est une variable aléatoire suivant une loi uniforme U[ 1, 1]. On note R(n) R(n t) la position de la particule après n intervalles t. 1) Écrire un programme simulant la position R(n) de la particule. 2) On fixera n = 100, le nombre de pas. Afficher la trajectoire de la particule en fonction de k, c.à.d. R(k), pour une réalisation particulière de la marche aléatoire. (0 k n). 3) Calculer et tracer l évolution de R 2 (k) pour la réalisation précédente (0 k n). 4) Répéter (à l aide d une boucle for) p fois la marche aléatoire (p = 50). Sauvegarder la position k de la ième marche dans un tableau (une matrice) R(k, i). 5) Calculer et tracer l évolution de R(k) en fonction du temps (0 k n), où dénote la moyenne sur les p réalisations. 6) Calculer et tracer l évolution de R 2 (k) en fonction du temps (0 k n). Ces deux dernières figure caractérisent un processus de diffusion. 7) Quelles sont l espérance r(k) et la variance théorique σ 2 (k) du déplacement R(k) (voir la loi des grands nombres). 8) Tracer r(k) sur la même figure que R(k). De même, Tracer σ 2 (k) sur la même figure que R 2 (k). 9) Pour chaque valeur de k, calculer l erreur relative, ɛ R, entre la valeur théorique, σ 2 (k), et la valeur empirique R k (t). L erreur relative est definie par : ɛ R (k) = R2 (k) σ 2 (k) σ 2 (k) a) Calculer la moyenne des erreurs en fonction du temps k. Comment évolue cette moyenne en fonction de k? b) Que peut-on dire de la relation obtenu entre R 2 (k) et σ 2 (k)? 10) Définir le vecteur P contenant les positions après n déplacements, pour p réalisations. 1 Voir http://fr.wikipedia.org/wiki/mouvement_brownien pour une définition du mouvement Brownien.
6 a) Afficher l histogramme des positions P. b) Calculer la moyenne et l écart-type de P, c) Tracer sur la même figure la courbe d une distribution Gaussienne de moyenne m P et d écart type σ P. 11) Reprendre les questions précédentes (1-10) pour un déplacement en deux dimensions.