Indice : Comment faire pour transformer la matrice A en un vecteur ? Page 2 1 3 Les performance de la boucle for Parcours avec for Nous
Previous PDF | Next PDF |
[PDF] La boucle Pour 1 La boucle Pour
On peut réécrire le calcul de la somme des entiers compris entre 1 et 100 en utilisant une boucle pour S := 0 pour i variant de 1 à 100 faire {S = ∑ i−1
[PDF] I Boucle POUR (FOR) II Boucle TANT QUE (WHILE) - My MATHS
Dans un algorithme, il peut arriver que l'on ait à répéter un certain nombre de fois une ou plusieurs instructions On parle alors de boucle ou de structure
[PDF] Structure de boucle : for - Depinfo
permettent d'exécuter des instructions en boucles soit pour un nombre d' itérations fixé `a l'avance, soit jusqu'`a ce qu'une condition soit remplie 1 La boucle
[PDF] Boucles - Loria
6 nov 2000 · Il y a principalement deux types de boucles – Les boucles pour répéter une instruction un certain nombre de fois, il s'agit de la boucle Pour
[PDF] PROGRAMMER DES BOUCLES - maths et tiques
Fin Pour :For(i,3,7) :Instructions :End For 3→i To 7↵ Instructions↵ Next Sortir de la boucle Stop Générer un nombre entier aléatoire de l'intervalle [1;5]
[PDF] FICHE n°5 : DECOUVRIR LES BOUCLES - maths et tiques
Les boucles permettent de répéter des instructions - Boucle Tant que : Fin Pour Exercice 1 : On considère les algorithmes ci-contre : 1) a) Pour n = 45 qu'
[PDF] TP 2 : Les boucles avec Matlab 1 La boucle for dans Matlab
Indice : Comment faire pour transformer la matrice A en un vecteur ? Page 2 1 3 Les performance de la boucle for Parcours avec for Nous
[PDF] ALGORITHMIQUE
Utilisation de boucles, instructions conditionnelles, et de la fonction random boucle Pour créer une liste L:=[x1, ,xn] Pour afficher le contenu d'une liste :
[PDF] Cours sur les boucles : for, while, repeat 1 For - Pierre-Louis Cayrel
Var i : integer ; BEGIN For i := 100 DownTo 0 Do Begin WriteLn ('Valeur de i : ', i ) ; End ; END 3 Repeat Until Cette boucle effectue les instructions placées
[PDF] Les itérations Le schéma de boucle «Répéter» - IRIF
En Java, on ne pourra pas procéder de la même mani`ere 5 IF1 Partie 2 : Itérations simples et tableaux `a une dimension Traduction en boucle «for
[PDF] cours javascript debutant pdf
[PDF] les evenements en javascript
[PDF] javascript pour les nuls pdf gratuit
[PDF] boucle for liste python
[PDF] openclassroom python
[PDF] liste append
[PDF] append python
[PDF] parcourir une liste python
[PDF] tuple python
[PDF] liste de liste python
[PDF] instruction python
[PDF] album anglais maternelle
[PDF] découvrir l'anglais avec des albums de jeunesse cycle 3
[PDF] album anglais cycle 3
Institut Galilee - Universite Paris 13 Introduction a Matlab Sup Galilee - Ingenieur 1ere annee 2016 { 2017TP 2 : Les boucles avec Matlab Dans ce TP, nous verrons l'utilisation des boucles (for et while) dans Matlab, et nous ecrirons des programmes plus complexes pour avoir des comportements toujours plus interessants. Vous devez avoir termine le TP1 avant de commencer ce TP.
1 La boucle for dans Matlab
1.1 La boucle for sur les vecteurs
Pour commencer, nous allons nous familiariser avec la bouclefor. Commencez parecrire un programme tres simple qui parcourt un vecteur ligne :v = rand(1, 20); disp(v); for i=v disp(`La variable i vaut `); disp(i); end Ce programme est sense acher tous les elements deva travers la variableidans la boucle.Questions 1. Commen tfaire p ourac herl es elementsde vdu dernier au premier?Indice : regardez la fonction
ip. 2. Commen tfaire p ourn'ac herque les elementsde vd'indice pair? 3. Nous aimerions m odierl'ac hagedu pr ecedentprogramme an qu'il n'ac hepas le message La variable i vaut, mais plut^otVoici ce que contient la case .... On veut donc a chaque tour acher le numero de la case et son contenu.1.2 La boucle for sur les matrices
Nous allons faire le m^eme travail, mais avec une matrice. Voici un programme permettant de parcourir
une matrice :A = rand(5, 5); disp(A); for i=A disp(`La variable i vaut `); disp(i); end Ce programme ache-t-il tous les elements deAun par un?Questions 1. Commen tfaire p ourac hertou sles elementsde Aun par un a l'aide de deux bouclesfor? 2. Commen tfaire p ourac hertous les elementsde Aun par un a l'aide d'une seule boucle for? Comment contr^oler si on souhaite acher d'abord les elements par colonne, ou d'abord ceux par ligne? Indice : Comment faire pour transformer la matriceAen un vecteur?1.3 Les performance de la boucle for
Parcours avec for
Nous allons voir maintenant que l'utilisation d'une boucleforralentit considerablement un pro- gramme. Pour cela, nous allons essayer de realiser la somme ponderee des elements de deux vecteursde m^eme taille. On commence par declarer les deux vecteurs et une variable qui servira au calcul :v = rand(1,100000);
w = rand(1,100000); s=0; Ensuite, on utilise une boucleforan de parcourir les deux vecteurs, et un indice pour parcourir l'autre :i=1; for k = v s = s + k*w(i); i=i+1; endQuestions
1. A l'aide des mots clefs ticettoc, mesurez le temps d'execution de ce programme. La valeur de sque vous obtenez est-elle en accord avec le fait que la fonctionrandrealise une distribution uniforme entre 0 et 1? 2. R ealisezu nev ectorisationde ce c ode,an de v ousd ebarrassertotalemen tde la b oucle.Le s performances obtenues sont-elles meilleures?La dierence de performance pourrait venir du parcours que l'on fait, ou l'on est oblige de ne parcourir
qu'un seul des deux vecteurs, et utiliser une variable qui grandit de un en un pour parcourir l'autre
vecteur. On pourrait parcourir les deux vecteurs en m^eme temps, en les fusionnant dans une matrice de
deux lignes :for k = [v;w] s = s + k(1)*k(2); endQuestions
Ce nouveau code est-il plus performant que l'ancienne version de la bouclefor? Est-il plus performant
que la version vectorisee?Preallocation
Nous allons chercher a calculer, etant donnea2R+, les termes de la suite u0= 1 u n= 0:5(un1+a=un1)Pour ce faire, nous proposons ce code :a=16;
lim = 1000000; un = 1; for k = [2:lim] un_1 = un; un = 0.5*(un_1 + a/un_1); endPouvez-vous conjecturer la limite de la suite pour dierentes valeurs dea? Quel est le temps de calcul
de votre programme? An de rendre l'etude plus interessante, nous souhaitons stocker les valeurs successives de la suite dans un vecteur. Nous modions ainsi notre code :tic; a=16; lim = 1000000; h(1) = 1; for k = [2:lim] h(k) = 0.5*(h(k-1) + a/h(k-1)); end toc;Questions
1.La toute premiere foisque vous executez ce code, va-t-il plus vite ou moins vite que l'autre
version du code? L'ecart est-il important? 2. Si v ousex ecutezce co deune seconde fois, est-il plus rap ide? 3. An de comprendre p ourquoice c ode etaitbien moins rapide la premi erefois, regardez ce qu'il se passe pour le vecteurha chaque tour de boucle (quelle sera sa taille)? Ceci explique-t-il pourquoi, la seconde fois, votre code etait plus rapide? 4. P our evitercela, commen tallouer d esle d epartune certaine taille au v ecteurh? Apres avoir supprime la variablehde la zone des variables, et avoir eectue les modications necessaires a votre code, testez votre nouvelle version : s'execute-t-telle plus vite?Il est important d'eviter de faire grandir la taille de matrices ou de vecteurs dans une boucle, et de
recourir a la pre-allocation memoire des tableaux (avec des fonctions commezerosouones) avant ledebut de la boucle. En eet, a la chaque agrandissement de tableau, Matlab peut se retrouver contraint
d'allouer une nouvelle place et de recopier tout l'ancien tableau dans le nouveau.1.4 Quelques exercicesQuestions
1. A l'aide d'une b ouclefor, realisez un programme qui realise l'histogramme demande au TP1, question 4.6. Comparez les performances de ce code avec le code vectorise precedent. 2. Ecriv ezune fonction de tri d'un v ecteur.P ource faire, rec herchezle plus grand elementdu vecteur, puis placez-le a la n du vecteur (vous pouvez utiliser la fonctionmax. Recommencez la m^eme operation en ne recherchant le plus grand element que sur lesn1 premiers elements (ounest la taille du vecteur), etc. Comparez ensuite vos performances a celles de la fonction sort.2 La boucle while dans Matlab
La bouclewhilede Matlab permet de repeter un morceau de code tant qu'une condition n'est passatisfaite. Par exemple, voici un programme permettant de demander un nombre positif a l'utilisateur,
et de repeter ces instructions tant qu'elles n'auront pas ete suivies :a = input('Entrez un nombre positif : ');
while a<0 a = input('Entrez un nombre positif : '); end disp(a); La bouclewhilepermet donc de repeter des instructions tant qu'une condition donnee est vraie. Si la condition devient fausse, alors la boucle s'arr^ete et le programme passe a la suite du code.Testez ce code :
a=rand(1,1); b=1; while a<30 b = b+1; end Si l'execution de ce code vous parait longue, c'est normal : le code de la bouclewhilene fait pasevoluer la condition qui restera pour toujours vraie. La boucle va donc tourner a l'inni. Pour interrompre
votre programme, fa^tes CTRL+C dans la fen^etre de commande. Il est donc tres important, dans une bouclewhile, que le code de la boucle fasse evoluer la condition.Questions 1. Ecriv ezun p rogrammequi c hoisitun nom breen tierau hasard en tre1 et 100 ( al'aide de randi), et doit le faire deviner a l'utilisateur. Pour ce faire, tant qu'il n'a pas trouve le nombre, l'utilisateur doit entrer un nombre et le programme lui indique si ce nombre est plus petit ou plus grand. 2. Ecriv ezun programme qui calcule l'appro ximationde 2=8 a l'aide de cette serie convergente : 1 2+13 2+15quotesdbs_dbs3.pdfusesText_6