Algorithmique. Application en MatLab. Vecteurs - Matrices - Répétitives. Cours I-2. V. Berry MAT-3 & MI-3

Documents pareils
STAGE IREM 0- Premiers pas en Python

Introduction à MATLAB R

Calcul Formel et Numérique, Partie I

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Architecture des Systèmes d Information Architecture des Systèmes d Information


MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

Chap III : Les tableaux

Corrigé des TD 1 à 5

Découverte de Python

Initiation à l algorithmique

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Programmer en JAVA. par Tama

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Chapitre 2 Devine mon nombre!

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Cours d Algorithmique et de Langage C v 3.0

Calcul Formel et Numérique, Partie I

Cours Informatique Master STEP

Algorithmique et structures de données I

Rappels sur les suites - Algorithme

Notions fondamentales du langage C# Version 1.0

Les structures de données. Rajae El Ouazzani

Organigramme / Algorigramme Dossier élève 1 SI

Maple: premiers calculs et premières applications

Java Licence Professionnelle CISII,

L ALGORITHMIQUE. Algorithme

Cours d algorithmique pour la classe de 2nde

Programmation C++ (débutant)/instructions for, while et do...while

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Initiation à LabView : Les exemples d applications :

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

Plan du cours. Historique du langage Nouveautés de Java 7

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire

Cours 7 : Utilisation de modules sous python

Algorithmique et programmation : les bases (VBA) Corrigé

Algorithmes et Programmes. Introduction à l informatiquel. Cycle de vie d'un programme (d'un logiciel) Cycle de vie d'un programme (d'un logiciel)

MÉTHODES NUMERIQUES. Cours. Licence de Physique Année Universitaire : Licence Chimie, parcours Physique. Semestre S3

TD3: tableaux avancées, première classe et chaînes

SUPPORT DE COURS. Langage C

1 Recherche en table par balayage

SOFI Gestion+ Version 5.4. Echanges de données informatiques Spicers Sofi gestion+ Groupements. SOFI Informatique. Actualisé le

Initiation à la programmation en Python

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Qualité du logiciel: Méthodes de test

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Introduction à l algorithmique et à la programmation M1102 CM n 3

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Solutions du chapitre 4

INF 321 : mémento de la syntaxe de Java

3.2. Matlab/Simulink Généralités

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

LES TYPES DE DONNÉES DU LANGAGE PASCAL

4. Groupement d objets

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

Programmation C. J.-F. Lalande. 15 novembre 2012

Les deux points les plus proches

Programmation linéaire

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Programmation Classique en langage C

R, Bonnes pratiques. Christophe Genolini

Enseignement secondaire technique

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

Processus d Informatisation

EXCEL TUTORIEL 2012/2013

Factorisation Factoriser en utilisant un facteur commun Fiche méthode

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

Principes des langages de programmation INF 321. Eric Goubault

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Conventions d écriture et outils de mise au point

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

Présentation du langage et premières fonctions

Première partie. Préliminaires : noyaux itérés. MPSI B 6 juin 2015

Les bases de l informatique et de la programmation. École polytechnique

Informatique / Programmation

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

= constante et cette constante est a.

Algorithmique, Structures de données et langage C

Python - introduction à la programmation et calcul scientifique

Définitions. Numéro à préciser. (Durée : )

Résolution de systèmes linéaires par des méthodes directes

VOTRE MISSION N 1: Prouvez que l eau et le canal ont été essentiels pour «l essor industriel», avec la naissance d usines nombreuses et diverses.

Introduction au langage C

Gnuplot. Chapitre Lancer Gnuplot. 3.2 Options des graphes

Résolution d équations non linéaires

Premiers pas avec Mathematica

1.6- Génération de nombres aléatoires

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

TP 1 Introduction à Matlab Février 2009

UE C avancé cours 1: introduction et révisions

Raisonnement par récurrence Suites numériques

Découverte du tableur CellSheet

Algorithmique et Programmation, IMA

as Architecture des Systèmes d Information

Transcription:

Algorithmique Application en MatLab V. Berry MAT-3 & MI-3 Vecteurs - Matrices - Répétitives Cours I-2 1

Vecteurs II - Variables & Types Un vecteur représente une force, un déplacement, une vitesse, une accélération,... Un vecteur dans le plan (ou dans un espace à plusieurs dimension) peut être exprimé par la liste de ses composantes (une pour chaque axe) : La plus simple représentation d un vecteur un tableau F = [ Fx Fy ] 2

Addition de vecteurs Vecteurs célèbre exemple issu de l aéronautique Résultante = Portance + Trainée Portance = extrados+intrados 3 sources : http://www.aviation-fr.info et http://belum76.free.fr

Addition de vecteurs Vecteurs Rx = V1x+V2x Ry = V1y+V2y En matlab : >> V1 = [6 2 ] >> V2 = [2.3 5] >> R = V1 + V2 R = 8.30000 7.0000 module de R : >> modr = sqrt(r(1)^2 + R(2)^2)) 4

Types en Matlab Vecteurs Vecteurs ligne et colonne : >>U = [1 2 3] U = 1 2 3 >> V = [1 2 3] La différence est importante par exemple en multiplication de matrices V = 1 2 3 5

Matrices Types de variables Ensemble de valeurs stockées dans une structure à une ou plusieurs dimensions (variable de même nom + indice(s)) Exemple : Usines (Ui) fournissant des chantiers (Cj) Coût de livraison de chaque élément u s i n e s chantiers Besoins : C1 C2 C3 10 9 5 Une solution potentielle : 6

Matrices en Matlab Comme pour les vecteurs, on utilise les crochets [ et ] pour définir le début et la fin de la matrice. Ainsi pour définir une variable M contenant la matrice on écrira : >> M = [ 1 2 3 11 12 13 crochets 21 22 23 ] M= 1 2 3 11 12 13 21 22 23 7

Types en Matlab Matrices Autre possibilité : >> M = [1,2,3 ; 11,12,13 ; 21,22,23] ou bien, en remplaçant la virgule par des blancs : >> M = [1 2 3 ; 11 12 13 ; 21 22 23] point-virgule = séparateur de lignes Ajouter une ligne à une matrice : >> X = [5 6 7] ; >> M = [M ; X] ; 8 Note : idem pour agrandir un vecteur : V = [ V x ]

Types en Matlab Matrices accès aux éléments d une matrice : consultation { >> M = [1 2 3; 11 12 13; 21 22 23]; >> M(3,2) ans = 22 modification { >> M(3,2)=32 M= 1 2 3 11 12 13 21 32 23 parenthèses extraction d une sous-matrice { >> M(1,2:2,3) ans = 2 3 12 13 9

Matrices Types en Matlab Nombreuses autres opérations possibles sur les matrices : inversion >> inv(a) transposée >> transp(a) ; A # au choix déterminant >> det(a) composition, etc 10

action action Organisation d un algorithme action (suite) Rappel : Un algorithme est une suite d actions manipulant des informations Ces actions peuvent être enchaînées de différentes façons. 11

Structures d instructions séquences d instructions conditionnelles répétitives (boucles) 1. Le principe d une répétitive 2. Différents types de répétitives : pour i de 1 à n-1... tant que i < n... la vectorisation (Matlab) fonctions 12

Principe d une répétitive On veut répéter une séquence d actions tant qu une condition est remplie 13

boucle «POUR» en Matlab La boucle for Quand on connait à l avance le nombre de répétitions à effectuer Répéter une suite d actions un nombre de fois fixé Syntaxe : mots clefs for i = borne_inf : borne_sup séquence d instructions «Boucle» pour les valeurs d un indice (i), incrémenté à chaque itération («tour de boucle»), variant entre deux 14 bornes

boucle «POUR» en Matlab La boucle for Répéter une suite d action un nombre de fois fixé Syntaxe : for i = borne_inf : borne_sup séquence d instructions Interprétation : 1. la variable i pr la valeur borne_inf 2. la séquence d instructions est exécutée 3. i voit sa valeur augmentée de 1 4. les étapes 2 et 3 sont répétées en boucle jusqu à ce que i dépasse la valeur borne_sup 15

Exemple : usines à livrer depuis chantiers boucle «POUR» en Matlab C coût de livraison Coût de la livraison de tous les chantiers? Q quantité à livrer C1 C2 C3 U1 8 6 3 U2 0 0 4 U3 2 1 0 indentation Question en amont = décider façon de livrer ayant un coût minimum, sachant contraintes 16

boucle «POUR» en Matlab La boucle for Remarques : for i = borne_inf : borne_sup séquence d instructions Si borne_inf > borne_sup, aucun tour de boucle n est exécuté L incrément de la variable de boucle est de 1 par défaut, mais on peut indiquer un autre incrément de la façon suivante : borne_inf : pas : borne_sup Si l on veut une progression non-régulière de l indice, on peut uiliser une tableau d indices : for i = tableau ;... ; la variable de boucle peut prre des valeurs réelles ne pas modifier la variable de boucle dans la séquence d instructions au centre de la boucle 17

boucle «tant que» en Matlab La boucle while Répéter une suite d action un nombre de fois non-fixé à l avance Syntaxe : while condition séquence d instructions «corps» de la boucle mots clefs Interprétation : 1. condition est une expression logique, renvoyant vrai ou faux, évaluée avant d effectuer chaque tour de boucle 2. si condition est vraie alors la séquence d instructions est exécutée 3. le cycle 1 puis 2 se reproduit tant que la condition de continuation est vraie. Quand elle devient fausse, on exécute ensuite la première instruction suivant le mot-clef. 18

boucle «tant que» en Matlab La boucle while Remarques : while condition séquence d instructions la condition implique presque toujours des variables si une variable de boucle est utilisée, les instructions de la boucle doivent faire évoluer cette variable while (epsilon < 0.1) instructions epsilon = espilon + 0.05 ; 19

boucle «tant que» en Matlab Exemple : trouver le premier nombre dont la factorielle utilise plus de 100 chiffres : n = 1; while prod(1:n) < 1e100 n = n + 1; 20

boucle «tant que» en Matlab Pièges de la boucle «tant que» Oublier d initialiser la variable de boucle avant la boucle x = 10 while x>0... Oublier de faire progresser cette variable dans la boucle while x>0... x = x -... Donner une condition de boucle pas assez précise (la variable de boucle doit la vérifier à un moment donné) Préférer while x>0 à while x~=0 21

boucle «tant que» en Matlab Remarques sur la boucle «tant que» - suite certaines boucles «tant que» peuvent être représentées par des boucles «pour» ne pas le faire quand on ne connait pas à l avance le nombre de tours de boucle (instr. break peu lisible) 22

Equivalence entre formes de boucles Traduction de «tant que» en boucle «pour» : recherche d une valeur particulière dans un tableau de valeurs i=1; N = 10; while (T(i)~=e) && (i<=n) i = i + 1; return (i <= N); for i=1:n if T(i) == e return true; else return false;? version avec un «pour»? (tableau T non trié) quel est le soucis? traduction quel est le soucis? 23 source P. Janssen

Equivalence entre formes de boucles Exemple 1 de traduction de «tant que» en boucle «pour» : recherche d une valeur particulière dans un tableau de valeurs Version «tant que» équivalente à la version «pour» : for i=1:n if T(i) == e return true; return false; traduction correcte 24

ANNEXE 25

Imbrication de boucles Instructions répétitives il est parfois nécessaire de placer une boucle à l intérieur d une autre boucle la boucle intérieure est alors exécutée à chaque itération de la boucle extérieure ci-après, un exemple avec trois boucles imbriquées! 26

Imbrication de boucles Exemple du test d égalité de deux lignes d une matrice : En Matlab, un système d équations linéaires peut être codé dans une matrice chaque ligne représente une équation M 3x + 2y -z + t + 10 = 0 x + z + 5 = 0 4y + t - 3 = 0 x + z + 5 = 0 3 2-1 1 10 1 0 1 0 +5 0 4 0 1-3 1 0 1 0 +5 Avant de résoudre le système, on veut le simplifier si possible : savoir si des lignes sont identiques 27

Imbrication de boucles Exemple du test d égalité de deux lignes d une matrice : trouve = false; % on début on n'a pas trouvé deux lignes identiques for lig1=??:?? for lig2=??:?? % teste l'égalité des ligne1 et ligne2 de M : egales = true; % supposées égales for col =??:?? if ( M(lig1,col) ~= M(lig2,col)) egales = false; % lignes prouvées non égales if (egales) trouve = true; if ( trouve == true ) disp('m a deux lignes identiques'); else disp('m n''a que des lignes différentes'); 28 M 1 1 1 1 1 0 1 0 1 1 0 1 1 0 1 0 vérifions dans matlab Trace

Imbrication de boucles Exemple du test d égalité de deux lignes d une matrice : M 1 1 1 1 1 0 1 0 1 1 0 1 1 0 1 0 Pouvez-vous proposer une version plus courte en tirant parti de la vectorisation? 29

Quelques opérateurs Matlab Caractères spéciaux () parenthèses = affectation, virgule : séparateur de valeurs ; point virgule : séparateur d instructions, de lignes dans les matrices % commentaire ou pour indiquer un format : deux-points : «jusqu à», par exemple 1:10 Opérateurs arithmétiques + addition - soustraction * multiplication 30

Quelques opérateurs Matlab Opérateurs relationnels == test d égalité ~= test de différence > Opérateurs logiques & ~ 31

Liens Cours de F. Buffat à l UFR de Méca de Lyon http://ufrmeca.univ-lyon1.fr/~buffat Cours de F. Nicol (Louvain-la-Neuve) http://www.phon.ucl.ac.uk/courses/spsci/ matlab/ Nombreux tutoriels sur le site de Matlab et sur Internet en général 32