1. Présentation de Matlab

Documents pareils
Introduction à MATLAB R

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

Calcul Formel et Numérique, Partie I

Initiation à la programmation en Python

Cours Informatique Master STEP

Cours d algorithmique pour la classe de 2nde

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

Présentation du langage et premières fonctions

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)

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

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

Calcul Formel et Numérique, Partie I

TP 1 Introduction à Matlab Février 2009

1. Structure d'un programme FORTRAN 95

STAGE IREM 0- Premiers pas en Python

TP 1. Prise en main du langage Python

Chap III : Les tableaux

Recherche dans un tableau

Plan du cours Cours théoriques. 29 septembre 2014

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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

LES TYPES DE DONNÉES DU LANGAGE PASCAL

ACTIVITÉ DE PROGRAMMATION

I. Introduction aux fonctions : les fonctions standards

Le chiffre est le signe, le nombre est la valeur.

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Cours d initiation à la programmation en C++ Johann Cuenin


SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Chapitre 2 Devine mon nombre!

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

Structures algébriques

Cours 7 : Utilisation de modules sous python

Examen Médian - 1 heure 30

Bases de programmation. Cours 5. Structurer les données

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

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Notions fondamentales du langage C# Version 1.0

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

CORRECTION EXERCICES ALGORITHME 1

Les travaux doivent être remis sous forme papier.

Initiation à LabView : Les exemples d applications :

Les différents types de données et leurs opérations de base


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

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

Correction de l examen de la première session

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

1 Recherche en table par balayage

UNITÉS ET MESURES UNITÉS DE MESURE DES LONGUEURS. Dossier n 1 Juin 2005

Initiation à la Programmation en Logique avec SISCtus Prolog

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

Programme Compte bancaire (code)

Application 1- VBA : Test de comportements d'investissements

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

Algorithmique avec Algobox

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

Initiation à l algorithmique

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

Introduction : Cadkey

Valeur cible et solveur. Les calculs effectués habituellement avec Excel utilisent des valeurs numériques qui constituent les données d'un problème.

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

Cours d Informatique

Comment retrouver le fichier "bingo" sauvegardé dans l'ordinateur? Socle commun

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

Les structures. Chapitre 3

La sauvegarde (backup) de votre comptabilité a pour but de vous permettre de retrouver vos données si un incident est survenu.

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

Initiation à la programmation OEF pour Wims (exercices).

URECA Initiation Matlab 2 Laurent Ott. Initiation Matlab 2

Apprendre à manipuler le clavier Médiathèque de Bussy Saint-Georges APPRENDRE A MANIPULER LE CLAVIER

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Python - introduction à la programmation et calcul scientifique

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

Découverte de Python

Bernard HAMM, Évelyne LAVOISIER

Algorithmique avec Algobox

4. Groupement d objets

Cours d Algorithmique et de Langage C v 3.0

Introduction au langage C

Gnuplot. Chapitre Lancer Gnuplot. 3.2 Options des graphes

Corrigé des TD 1 à 5

Compléments de documentation Scilab : affichage de texte et formatage de nombres

Algorithmique et programmation : les bases (VBA) Corrigé

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

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

Automatique des systèmes linéaires continus

Perl Orienté Objet BioPerl There is more than one way to do it

Calculateur quantique: factorisation des entiers

Représentation d un entier en base b

Utilisation d objets : String et ArrayList

IMPORTATION, CRÉATION, MANIPULATION, EXPORTATION DE DONNÉES STATISTIQUES

Arbres binaires de recherche

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

L'instruction if permet d'exécuter des instructions différentes selon qu'une condition est vraie ou fausse. Sa forme de base est la suivante:

Qualité du logiciel: Méthodes de test

Transcription:

Chapitre III: Programmer avec Matlab 1. Présentation de Matlab MATLAB = «MATrix LABoratory» (Laboratoire des Matrices) Matlab est un logiciel pour le calcul scientifique, orienté vers les vecteurs et les listes de données. Matlab est un langage interprété, chaque ligne d un programme Matlab est lue, interprétée et exécutée. Procurant ainsi un environnement flexible pour le calcul technique. Matlab se présente avec un environnement interactif et un prompt ou invite de commandes (généralement >>) dans lequel on peut introduire des commandes. Par exemple, pour sortir de Matlab tapez la commande: >> quit Matlab est basé sur le calcul matriciel numérique. Tous les objets utilisés dans Matlab sont donc définis au travers de matrices ou vecteurs dont les valeurs sont, par définition, des grandeurs complexes. Il existe un très grand nombre d'opérateurs et fonctions distribués dans le logiciel de base et dans des boîtes à outils spécialisées. A ceci peut s'ajouter un outil de programmation graphique, Simulink, essentiel pour la simulation de systèmes dynamiques non linéaires. L'environnement Matlab se présente sous la forme d'un espace de travail dans lequel un interpréteur de commandes exécute les opérations demandées. Figure 1- Environnement de Matlab. 1

L'affectation des valeurs à des variables et l'effectuation des opérations sur ces variables ce fait comme suit: >> x = 4 x = 4 >> y = y = >> x + y ans = 6 >> x * y ans = 8 >> Remarque Lorsqu'on ne fixe pas un variable de sortie, Matlab place le résultat d'aune opération dans "ans". Pour connaitre les variables utilisées et leur type, on utilise la commande "whos". Exemple Pour les manipulations suivantes: >> whos Name Size Bytes Class ans 1x1 8 double array x 1x1 8 double array y 1x1 8 double array Grand total is 3 elements using 4 bytes >> La solution de l'opération "x + y" n'est pas affichée (variable perdue). Il est donc préférable de toujours donner des noms aux variables de sortie. Si on ne veut pas afficher la valeur d'une variable en ajoute un point-virgule (;): >> x = 4; >> y = ; >> a = x + y a = 6

>> b = x * y b = 8 >> whos Name Size Bytes Class a 1x1 8 double array b 1x1 8 double array x 1x1 8 double array y 1x1 8 double array Grand total is 4 elements using 3 bytes >> Pour écrire le résultat d'un programme dans une phrase, on peut convertir les nombres en chaine de caractères en utilisant la commande "numstr". Les commentaires sont écrits dans un programme en utilisant le signe "%" au début de la ligne du commentaire. Exemple Programme de calcul de la racine carrée d'un nombre: a = input ('Entrez un nombre: '); % utilisation de input, l'utilisateur % doit entrer un nombre. b = sqrt(a); str = ['La racine carrée de ' numstr(a) ' est ' numstr(b)]; % composition de la phrase de sortie disp(str) % utilisation de display pour afficher le résultat à l'écran Le résultat serait le suivant: Entrez un nombre: 3 % 3 est entrée par l'utilisateur La racine carrée de 3 est 4.7958 % sortie à l'écran. Operations mathématiques avec Matlab Scalaires, vecteurs, matrices L'élément de base de Matlab est la matrice. C'est-à-dire: - un scalaire est une matrice de dimension 1x1; - un vecteur colonne de dimension n est une matrice nx1; - un vecteur ligne de dimension n est une matrice 1xn. 3

Les scalaires sont déclarés directement, par exemple: >> x = 0; >> a = x; Les vecteurs lignes sont déclarés comme suit: >> V_ligne = [0 1 ] V_ligne = 0 1 Pour les vecteurs colonnes, on sépare les éléments par des points-virgules: >> V_colonne = [0;1;] V_colonne = 0 1 - Le transposé d'un vecteur: se fait à l'aide de la commande transpose ou avec l'apostrophe ( ' ): >> V_colonne = transpose (V_ligne) V_colonne = 0 1 >> V_colonne = V_ligne' V_colonne = 0 1 - L'incrémentation: se fait à l'aide de double point (:). Pour créer par exemple un vecteur ligne des valeurs de 0 à 1 par incrément 0.: >> [0:0.:1] Columne 1 through 6 0 0.000 0.4000 0.6000 0.8000 1.0000 Par défaut l'incrémentation est de 1. Par exemple: pour un vecteur ligne de 0 à 5 par incrémentation 1: >> [0:5] 0 1 3 4 5 4

- Les opérations sur les vecteurs: l'addition, la soustraction, la multiplication par scalaire: >> V1 = [1 ] >> V = [3 4] >> V1 + V % addition de vecteurs 4 6 >> V V1 % soustraction de vecteurs V= >> *V1 % multiplication par un scalaire 4 - La multiplication et la division de deux vecteurs: ici il faut faire attention aux dimensions des vecteurs en cause. Pour la multiplication et la division élément par élément, on ajoute un point devant l'opérateur (.* et./). Par exemple: >> V1.*V % multiplication élément par élément 3 8 >> V1./V % division élément par élément 0.3333 0.5000 Si les dimensions des vecteurs ne concordent pas, Matlab lancera un message d'erreur. Les messages d'erreur peuvent être très utiles pour corriger les programmes: >> [1 3] 1 3 >> V1.*V3??? Error using ==>.* Matrix dimensions must agree. La multiplication de deux vecteur est donnée par (*). Ici l'ordre a de l'importance: >> V1= [1 ]; % vecteur 1x >> V = V1' ; % vecteur x1 >> V1*V 5 5

>> V*V1 1 4 - Concaténation des vecteurs (mettre bout à bout): Cas des vecteurs lignes: >> V1 = [1 ]; >> V = [3 4]; >> [V1 V] 1 3 4 Cas des vecteurs colonnes: >> V1 = [1;]; >> V = [3;4]; >> [V1;V] 1 3 4 Création de matrices à partir de vecteurs: >> V1 = [1 ]; >> V = [3 4]; >> [V1;V]; 1 3 4 qui n'est pas équivalant à: >> V1 = [1;]; >> V = [3;4]; >> [V1 V] 1 3 4 - Les matrices: peuvent être construites directement comme suit: >> M = [1 ; 3 4] M = 1 3 4 6

- Accès à un élément d'une matrice: >> m1 = M(,1) % ème ligne, 1 ère colonne m1 = 3 On peut aussi compter les éléments d'une ligne (de gauche à droite) avant d'accéder à la ligne suivante: >> A = [1 3; 4 5 6; 7 8 9] A = 1 3 4 5 6 7 8 9 >> a5 = A(5) % la valeur du 5 ème élément de la matrice A a5 = 5 - Stockage d'une ligne d'une matrice dans un vecteur: si on veut stocker la ème colonne de la matrice A: >> A(:, ) % ici, (:) signifie toute les lignes 5 8 - Stockage de plusieurs lignes d'une matrice: si on veut stocker les lignes et 3 de la matrice A: >> M = A(:3, :) % (:3) signifie lignes à 3 % et (:) signifie toutes les colonnes M = 4 5 6 7 8 9 - Inverse et transposé d'une matrice: à l'aide des commandes "inv" et "transpose ou (')" respectivement: >> invm = inv (M) invm = -.0000 1.0000 1.5000-0.5000 >> transpm = M' transpm = 1 3 4 7

- Operations sur les matrices: Addition, Soustraction Multiplication et Division (attention aux dimensions): >> A = [1 ; 3 4]; >> B = [4 3; 1]; >> C = A + B % addition C = 5 5 5 5 >> D = A B % soustraction D = -3-1 1 3 >> C = 3 * A % multiplication par un scalaire C = 3 6 9 1 >> C = A * B % multiplication matricielle C = 8 5 0 13 >> D = A/B % division matricielle D = 1.5000 -.5000.5000-3.5000 >> C = A.*B % multiplication élément par élément C = 4 6 6 4 >> D = A./B % division élément par élément D = 0.500 0.6667 1.5000 4.0000 8

Les matrices spéciales >> I = eye(3) % matrice identité I = 1 0 0 0 1 0 0 0 1 >> V_nul = zeros(1,) % un vecteur de 1 ligne, colonnes de 0 V_nul = 0 0 >> M_nul = zeros(,) % une matrice x de 0 M_nul = 0 0 0 0 >> V_un = ones(1,) % un vecteur de 1 ligne, colonnes de 1 V_un = 1 1 >> M_un = ones (,) % une matrice x de 1 M_un = 1 1 1 1 Dimension d'une matrice et longueur d'un vecteur Par les commandes size et length respectivement: >> [0:0.1:10]; % utilisation de length vecteur 1x101 >> n = length(v) n = 101 >> M = [1 3; 4 5 6; 7 8 9]; % utilisation de size matrice x3 >> [n,m] = size(m) n = m = 3 >> dim = length (M) % utilisation de length sur une matrice dim = 3 % donne la plus grande dimension, ici nombre de colonnes 9

3. Les types de données en Matlab Le type courant Le courant des variables en Matlab est le type "réel", il n'y a pas de type "entier" proprement dit. Ce type est affecté automatiquement à partir des valeurs affectées à la variable. Le type complexe L'unité imaginaire est désignée par "i" ou "j". Les nombres complexes peuvent être écrits sous la forme cartésienne "a + ib" ou sous forme plaire "re it ". Les différentes écritures possibles sont: a+ib a+i*b a+bi a+b*i r*exp(it) r*exp(i*t). Exemple >> z = [1+i,, 3i] z = 1.0000 + 10000i.0000 0 + 3.0000 i Les commandes real et imag permettent d'afficher la partie réelle ou imaginaire d'un nombre complexe respectivement. Le type chaîne de caractères Une donnée de type chaîne de caractère (char) est représentée sou la forme d'une suite de caractères encadrée d'apostrophes simples ('). La concaténation de chaîne de caractères s'effectue de la même façon pour les règles de manipulation des tableaux. >> ch1 = 'bon' ch1 = bon >> ch = 'jour' ch = jour >> whos Name Size Bytes Class ch1 1x3 6 char array ch 1x4 8 char array 0

>> ch = [ch1; ch] ch = bonjour 4. Operateurs logiques Ce type d'operateurs permet de comparer des valeurs entre elles, les résultats prennent les valeurs 1 (vrais) et 0 (faux). Tableau 1- Operateurs de comparaisons Opérateur ~ a a == b a < b a > b a <= b a >= b a ~= b Description NOT - Retourne 1 si a égal 0, et 1 si a égal 0 Retourne 1 si a égal b, 0 autrement Retourne 1 si a est inferieur à b, 0 autrement Retourne 1 si a est supérieur à b, 0 autrement Retourne 1 si a est inferieur ou égal à b, 0 autrement Retourne 1 si a est supérieur ou égal à b, 0 autrement Retourne 1 si a est différent de b, 0 autrement Exemple >> a = sin(*pi); >> b= cos(*pi); >> bool = (a>b) bool = 0 >>a a = >>b b = -.4493e-016 1 % ici a devrait égaler 0, la précision est limitée! Remarque L'emploi de l'opérateur '==' est très risqué lorsqu'on compare deux valeurs numériques, du fait que la précision de l'ordinateur est limitée. Il est préférable donc d'utiliser une condition sur la différence comme dans l'exemple suivant: if abs(a-b) < eps bool = 1; else bool = 0; end % eps est la précision machine (.04e-016) 1

Il est aussi possible de lier entre les conditions par les opérateurs "et" (&) et "ou" ( ). Tableau Table de vérité opérateur ET P Q P et Q 1 1 1 1 0 0 0 1 0 0 0 0 Tableau 3 Table de vérité opérateur OU P Q P ou Q 1 1 1 1 0 1 0 1 1 0 0 0 5. Les structures répétitives et conditionnelles Les structures if elseif else Ce type de structures de programmation est très utile pour vérifier des conditions. Elle est présentée en Matlab de la manière suivante: if CONDITON1 ACTION1; elseif CONDITION ACTION; else ACTION3; La boucle for Cette boucle est très utile dans la plupart des applications mathématique). La syntaxe de cette boucle en Matlab est comme suit: for i= 0:valeur_finale ACTION1; ACTION; ACTION3;.. ACTIONn; end

Remarque Dans les as courants: l'incrémentation ce fait par 1, sauf autres indications. Par exemple si l'on veut calculer les carrés des nombres pairs entre 0 et 10; for i=0::10 carre = i^ end La boucle while La boucle while permet de répéter une opération tant qu'une condition n'est pas remplie (ou le contraire: tant qu'une condition est vérifiée). On écrit ce type de boucle de la manière suivante: While CONDITION ACTION1; ACTION; ACTION3;.. ACTIONn; end La boucle switch Cette boucle permet par fois de remplacer les boucles if-elseif-else. switch (CAS) case {CAS1} ACTION1 case {CAS} ACTION otherwise ACTION3 end Exemple Détermination de l'exponentielle ou le logarithme en bas e d'un nombre entré par l'utilisateur. operation = input('opération: (1) exp ; () log?'); nombre = input ('Valeur: '); switch operation 3

end case 1 b = exp (nombre) case b = log (nombre) otherwise disp('mauvais choix operation') 4