Application en MatLab - lirmm.frvberry/COURS/POLYTECH/ALGO-MATLAB/poly-CM1-1.pdf · V. Berry MAT-3...
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 - 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
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
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
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)
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