Application en MatLab - lirmm.frvberry/COURS/POLYTECH/ALGO-MATLAB/poly-CM1-1.pdf · V. Berry MAT-3...

46
V. Berry MAT-3 & MI-3 Algorithmique Application en MatLab Variables - Types - 1er contact Matlab - Instructions conditionnelles Cours 1 1

Transcript of Application en MatLab - lirmm.frvberry/COURS/POLYTECH/ALGO-MATLAB/poly-CM1-1.pdf · V. Berry MAT-3...

V. BerryMAT-3 & MI-3

AlgorithmiqueApplication en MatLab

Variables - Types - 1er contact Matlab - Instructions conditionnelles

Cours 1

1

PLAN

I. Qu’est-ce que l’algorithmique

II. Objets de base : variables et leurs types

III.Organisation d’un algorithme :

• séquences

• conditionnelles

2

Pourquoi programmer ?

• Automatisation de tâches répétitives– analyse de signaux reçus par un sonar de sous-marin – calculs de trajectoire– test de résistance d’un matériau soumis à des vibrations aléatoires, – affichage de plusieurs résultats dans le même format Parce qu’un

ingénieur doit donner une réponse vérifiable dans un délai court à un problème posé, incorporant souvent de nombreuses variables/valeurs

• Parce que les données d’un problème peuvent varier dans le temps

• Parce qu’il n’existe pas de programme tout fait qui permet de faire exactement ce que l’on veut

3

Exemple d’algorithme

Problème de couplage fluide - structure

[R. Coehlo et al 2007]4

Exemple d’algorithme - (suite)

[R. Coehlo et al 2007]5

Exemple - suiteUn premier algorithme

A chaque itération de l’optimiseur, la solution en cours respecte les contraintes de couplage : elle résulte d’une analyse multi-disciplinaire (MDA) complète (≈5 cycles)Au sein de la MDA, les calculs fluide et structure sont réalisés successivement

Détails :(convergence de la phase centrale (MDA)

6

Les étapes de la programmation pour résoudre un problème non trivial

0. Identification et spécification du problème

1. Modélisation du problème (organigramme, UML)

1’ Subdivision du pbm en tâches simples et indépendantes

2. Planification des algorithmes en pseudo-code (le plan d’attaque pour résoudre le problème)

3. Traduction en langage de programmation (Matlab)

4. Commenter ce code au fur et à mesure

5. Tester le programme par petits bouts et traquer les erreurs

6. Utiliser ! 7

I - Notion d’algorithme

Algorithme : description systématique d’un procédé de calcul (d’une méthode) pour obtenir un résultat déterminé à partir de données initiales

Exemple - comment faire une omelette

Algorithme PreparerOmelette (boîte oeufs)

pour oeuf de 1 à nb_élem(boîte_oeufs) fairecasser (oeuf,saladier)

fin pourAssaisoner (saladier) ; Mélanger (saladier)Verser (saladier,poêle) ; Cuire(poële,6)

8

Pourquoi utiliser Matlab ?• C’est un environnement de programmation facile à utiliser

– Plusieurs fonctions prédéfinies pour analyser et représenter des données : on peut faire des choses élaborées avec très peu de code

• Particulièrement adapté à la résolution de problèmes numériques rencontrés par les ingénieurs

– Il contient des outils d’optimisation et de résolution d’équations

– Il contient des modules spécialisés d’analyse du signal et de l’image

• Disponible dans vos salles de TP et en entreprise

Note : Scilab est un équivalent gratuit proposé par l’INRIA9

L’interface de Matlab

• Les principales fenêtres• L’aide

10

TP

PLAN

I. Qu’est-ce que l’algorithmique

II. Objets de base : variables et leurs types

III.Organisation d’un algorithme :

• séquences

• conditionnelles

• répétitives

11

II. Les objets élémentaires en algorithmique

Un algorithme est une suite d’instructions manipulant des informations :

12

Algorithme3,12

«Y»0,01

9,98-10,1

1000,12

«voie 2»

4%

paramètres / entrées = données

résultats = sorties

Variables• Une variable est un emplacement mémoire pour

stocker des informations, repéré par un nom. Cet emplacement est composé d’une ou plusieurs cases, chaque case ne pouvant contenir qu’une seule valeur

X2

T2 10 -1 21 3.1

13

Variables en Matlab• Définition et utilisation simple d’une variable :

>> X = 2X

2>> X + 2ans =

4>> T = [ 2 10 -1 21 3.1 ]

14

TP

Gestion des variables dans Matlab

- la fenêtre Workspace permet d’avoir en permanence un aperçu de la liste et du contenu des variables déclarées.

15

- Quand on sélectionne une variable, on ouvre une feuille de tableur qui nous permet de modifier à la main la/les valeurs de la variable.

>> X = 2; % rôle du point-virgule

>> clear X; % «oublie» la variable X

>> clear % efface toutes les variables

Types• Chaque variable a un type qui indique à

l’ordinateur comment décoder l’information située dans l’emplacement et comment la manipuler dans des opérations

• nombres entiers, réels, booléens, chaînes,...

Chaque type a des opérations spécifiques :

• +,-,/,* pour les nombres

• concaténation, sous-chaîne pour les chaînes de caractères

16

• Quelles variables sont définies, quel type ont-elles ?

>> whos Name Size Bytes Class

X 1x1 8 double array ans 1x1 8 double array

17

• Les variables de ce type ne peuvent prendre que deux valeurs : Vrai ou Faux.

• Utiles pour exprimer des conditions :

• X >Y

• X ≠ Y

• (X<10) et (isDiag(M))

Valeurs logiques (booléens)

résultat booléen

18• codées par 0 (Faux) et 1 (Vrai)

Types en Matlab

Types en Matlab• Opérateurs et fonctions logiques :

19

On prend trois échantillons (→3 mesures de conductivité) du produit à évaluer, avec en provision un échantillon supplémentaire.

Pour chaque échantillon i :

• on calcule Bi, la valeur absolue de l’écart relatif entre la conductivité thermique mesurée λmes i et la conductivité thermique λmod i modélisée

Valeurs et opérateurs logiques

20

Test de conformité thermique d’un produit (ctrl de production) :

RÈGLEMENT TECHNIQUE DE LA CERTIFICATION DES MATÉRIAUX ISOLANTS THERMIQUES DE BÂTIMENT ...

Exemple

Règlement Technique ACERMI

Isolants en vrac

ANNEXE 4.3 Rev. B Page 9/9

Pour les trois échantillons i de 1 à 3, on calcule :

- le rapport, appelé Bi (borne échantillon i), de la valeur absolue de l’écart relatif

pour l’échantillon i

i mod

i modi mes

�� - �Bi�

- le rapport, appelé S (indicateur), de la moyenne arithmétique des écarts relatifs observés :

n

)�� - �(

S

3n

1i i mod

i modi mes��

��

La règle de décision est la suivante :

a- Le résultat du test de conformité thermique est déclaré satisfaisant lorsque :

� l’indicateur S � 0,03 et si aucune valeur des bornes Bi � 0,06 ou � l’indicateur S � 0,03 et si une seule valeur des bornes Bi � 0,06 mais pour l’échantillon supplémentaire mesuré B4 � 0,06

b- Le résultat du test de conformité thermique est déclaré non satisfaisant lorsque :

� l’indicateur S � 0,03 ou � si au moins deux valeurs des bornes Bi � 0,06 ou � si une seule valeur des bornes Bi � 0,06 et pour l’échantillon supplémentaire mesuré B4 � 0,06

• le rapport indicateur S de la moyenne arithmétique des écarts relatifs observés

S =

3Pi=1

Bi

n

indécision possible ?

(b) Le résultat du test de conformité thermique est déclaré non satisfaisant lorsque :

• l’indicateur S > 0,03 ou• si au moins deux valeurs des bornes Bi > 0,06

ou• si une seule valeur des bornes Bi > 0,06 et pour l’échantillon

supplémentaire mesuré B4 > 0,06

21

Valeurs et opérateurs logiques

La règle de décision est la suivante :(a) Le résultat du test de conformité thermique est déclaré satisfaisant lorsque :

• l’indicateur S ≤ 0,03 et aucune valeur des bornes Bi > 0,06 ou• l’indicateur S ≤ 0,03 et si une seule valeur des bornes Bi > 0,06 mais

pour l’échantillon supplémentaire mesuré B4 ≤ 0,06

(a) Le résultat du test de conformité thermique est déclaré satisfaisant lorsque :

• l’indicateur S ≤ 0,03 et aucune valeur des bornes Bi > 0,06 ou• l’indicateur S ≤ 0,03 et si une seule valeur des bornes Bi >

0,06 mais pour l’échantillon supplémentaire mesuré B4 ≤ 0,06

22

Exemple - suiteValeurs et opérateurs logiques

B1 B2 B3 B4 S

variables

TPComment exprimer ces deux conditions

en Matlab ?(séparément pour l’instant)

Organisation d’un programme• Un programme est une suite d’instructions manipulant

des informations

• Les instructions doivent respecter la syntaxe du langage de programmation (ici Matlab)

• Les instructions sont composées d’expressions

• L’expression peut contenir un opérateur, un littéral, une variable, une fonction (et ses arguments le cas échéant) ou une combinaison de ceux-ci.

• L’expression évaluée renvoie une valeur

EPS = EPS / 2; if ( A(l,k) == f(x,k) )

23

Une expression est soit• Nombre (type implicite)

• Entiers : 1, 50394 , -2

• Décimaux : 0.45, 4.6

• Caractère : ‘a’, ‘1’

• Matrice, cellules et chaînes de caractères : [ 1 2 3; 3 4 5; 6 7 8]

• Variable Nmax, A(1,k), … (le nom doit commencer par une lettre ; éviter d’utiliser les noms de fonction préexistantes)

• Nom de fonctions (avec ou sans argument) trouvemax, plot(x, y)

• Opérateur : = == > + - * ; :

• mots clés : exit, if, ...• Combinaison de ces éléments : EPS = EPS / 2 ;

24

III. Organisation d’un algorithme

actionactio

n

actio

n

• Un algorithme est une suite d’actions manipulant des informations

• Ces actions peuvent être ordonnées de différentes façons.

25

• séquences d’instructions

• conditionnelles

• répétitives (boucles)

• fonctions

Structures d’instructions

26

• L’agencement principal d’actions dans un algorithme est la séquence d’actions

• C’est une succession ordonnée d’actions élémentaires,

• les actions d’une séquence sont toutes effectuées, les unes après les autres

Séquence d’actions

27

Instructions conditionnellesUne conditionnelle est une structure de contrôle qui permet de choisir entre plusieurs séquences d'actions à exécuter, suivant une condition.

séquence d’actions

séquence alternative

28

Instructions conditionnelles1) Conditionnelle simple (sans alternative) :

Exécuter un ensemble d’instructions seulement dans le cas où une condition est vérifiée au préalable

if conditionséquence d’instructions

end

Si condition est évaluée vraie, la séquence d’instructions est exécutée, puis on reprend le programme

Si condition est évaluée fausse, la séquence d’instructions est ignorée et on exécute l’instruction qui suit le end.

condition est une suite d’opérations logiques renvoyant vrai ou faux

29

Exemple : test de dépassement d’une valeur seuil

point important : l’indentation du code !

v = input(‘Entrez la vitesse de vol :’) ;

seuilDecrochage = contraintes(x,k,y,v) ;

if v < seuilDecrochage

diff = seuilDecrochage - v ;

disp(‘vitesse trop faible’) ;

disp(‘la différence est ‘, num2str(diff)) ;

end

... instructions suivantes ...

Instructions conditionnelles

30

2) Conditionnelles avec alternative :Proposer deux suites d’instructions alternatives suivant le résultat d’une condition.

Syntaxe :

if condition séquence d’instructions 1

else séquence d’instructions 2

endInterprétation :

Si condition est évaluée vraie, la séquence 1 est exécutée. Si condition est évaluée fausse, la séquence 2 est exécutée.

condition est une suite d’opérations logiques renvoyant vrai ou faux

mots clefs

Instructions conditionnelles

31

3) Conditionnelles en cascades :Proposer plusieurs suites d’instructions alternatives suivant le résultat d’une condition.

Syntaxe : if condition 1

séquence d’instructions 1elseif condition 2

séquence d’instructions 2elseif condition 3

séquence d’instructions 3.....else

séquence d’instructions nend

condition est une suite d’opérations logiques renvoyant vrai ou faux

mot clefs

Instructions conditionnelles

32

TP conditionnelles

A vous de jouer sur la feuille d’exercices 1-2

33

TP

ANNEXES

34

Exemple d’algorithme• Diviser un intervalle en sous-intervalles réguliers :

Algorithme DivIntervalleDonnées : valeurs numériques deb, fin et nbValsRésultat : vecteur de valeurs V

35

fonction linspace() en Matlab

inc = (fin-deb) / (nbVals-1)Vect(1) = debval = debi = 1tant que i < nbVals faire

val = val + inci = i + 1Vect(i) = val

fin tant quefin algorithme

Utilisation : V = DivIntervalle(0,1.23,50)V = DivIntervalle(0,2π,100)

Paramètres formels

• Par définition, une matrice contient des valeurs numériques. En informatique, ces valeurs sont stockées en binaire sous forme de bits et d’octets.

36

• Les nombres réels sont codés approximativement sous la forme de nombres à virgule.

• L’ordinateur utilise un codage à virgule flottante, utilisant pour un type donné (par ex double) un nombre constant de bits pour représenter tous les nombres.

Types en MatlabNombres à virgule

37

Codage des nombres à virgules

Un nombre à virgule est codé par 3 informations : un bit de signe, un exposant et une mantisse

exposantsigne

mantisse

En faisant varier l’exposant, on fait « flotter » la virgule décimale

permet d’avoir des nombres petits (-) ou

grands (+)

38

exprimés en base 2 (binaire)

Codage des nombres à virgulesExemple de -3.1415

http://babbage.cs.qc.edu/IEEE-754/Decimal.html39

Limites du codage

La notation en virgule flottante ne permet de représenter qu’un nombre fini de nombres

Les nombres représentés ne sont pas uniformément répartis.

par exemple la distance entre deux nombres consécutifs est plus faible pour les nombres proches de 0

pour tout nombre non représentable, on utilise le nombre représentable le plus proche (troncature)

40

Limites du codage

41

Répartition non uniforme des nombres représentés !

écart entre deux nombres très petits :

écart entre deux nombres très grands :

1, 4⇥ 10�45

2⇥ 1031

0

nombres négatifs

représentables

nombres positifs

représentables

Erreurs de calcul✦ En raison des erreurs de calcul, les opérations sur

les nombres à virgule ne sont pas forcément commutatives ou associatives :

>> 2^60 +1 - 2^60ans = 0 >> 2^60 - 2^60 +1ans = 1

Règle de conduite

effectuer d’abord les opérations sur les nombres de même ampleur

42

TP

• Valeurs d’intérêt :

l'abréviation NaN (Not a Number) est utilisée quand un calcul est impossible.>>isNaN(1.12)

ans = 0>>isNaN(NaN)ans = 1

• l’abréviation Inf pour infini

Types en Matlab

(Faux)

(Vrai)

43

• Les noms de variables commencent par une lettre et peuvent contenir des chiffres mais pas de symbole de ponctuation

• Les noms de variables sont sensibles à la «casse» : majuscule ≠ minuscule

• Le choix des noms de variable est important

Variables en Matlab

44

Sauvegarder des données

• - la cmde save mesDonnees permet de sauvegarder dans un fichier l’état des variables actuelles.

• Choisir au préalable un dossier où travailler -> créez un dossier Matlab dans votre répertoire personnel (P:\)

• On recharge les données sauvegardées en sélectionnant le nom du fichier qui apparaît dans la fenêtre Current Folder : faîtes un essai après avoir «oublié» les variables (clear)

45

Liens

• Cours de F. Buffat à l’UFR de Méca de Lyon http://ufrmeca.univ-lyon1.fr/~buffat

• http://www.phon.ucl.ac.uk/courses/spsci/matlab/

46