matlab 1_généralités_matrices_polynomes
Embed Size (px)
Transcript of matlab 1_généralités_matrices_polynomes

Initiation à MATLAB
Intervenants:
• Laurent David
• Sarah Delcourte
• Florence Denis
• Xavier Escriva
• Patrice Linel
• Séverine Millet
• Fabienne Oudin-Dardun
• Jean-Pierre Puaux

Objectifs de ce module d’enseignement
• Prise en main de l’environnement
• Apprentissage du langage Matlab
• Mise en œuvre rapide de méthodes numériques dans un
environnement informatique possédant un grand nombre
d’outils intégrés (graphique par exemple)
non exhaustif sur le langage Matlab
approche pragmatique
2

Généralités
• MATLAB est un environnement de programmation pourle calcul scientifique
• Outil pour le calcul numérique, la visualisation de
graphiques techniques: langage de programmation
intuitif pour les applications d'ingénierie et les
applications scientifiques
• Permet d’élaborer très rapidement des schémas de
solution numérique.
Fiche synoptique n°1
3

Description rapide de MATLAB
• MATLAB: contraction de MATRIX LABORATORY
• Première version crée en 1970 par Cleve Moler
• 500 000 utilisateurs répartis dans l'industrie, les
administrations et les établissements scolaires (utilisé
dans plus de 3500 universités)
• MATLAB est utilisé dans de nombreux domaines
d’application:
• traitement du signal, traitement d' images,
• conception de systèmes de contrôle,
• sciences de la terre et de la vie,
• Instrumentation,
• finances, l'économie…
• Architecture ouverte qui facilite l'utilisation de MATLAB et
de ses produits compagnons pour explorer des données
et créer des outils personnalisés4

• Quelques fonctionnalités– Du calcul numérique pour des résultats rapides
– Des graphiques pour visualiser et analyser les données
– Un langage interprété et un environnement de programmation interactif
(incluant éditeur de texte, débogueur/optimiseur, gestionnaire de
mémoire, explorateur de fichier, documentation)
– Des outils pour concevoir des interfaces utilisateur graphiques (GUI)
personnalisées
– Des interfaces avec des langages de programmation externes comme C,
C++, Fortran et Java
– La prise en charge de l'importation de données à partir de fichiers et de
périphériques externes et l'utilisation d'E/S fichiers de bas niveau (plus
l'accès à d'autres bases de données et d'autres matériels grâce à des
produits complémentaires)
– La conversion d'applications MATLAB en C et C++ avec la suite Compiler
Suite
5

Applications
• Calcul Scientifique
– MATLAB et les boites à outils (toolboxes) de calcul numérique (FEMLAB…) , mathématiques
appliquées, analyse, visualisation, et développement d'algorithmes
• Automatique
– Simulink, MATLAB et des outils de modélisation pour la conception de système de contrôle, des
produits couvrant l'analyse d'algorithme, la modélisation, la simulation et la génération de code pour
les systèmes embarqués.
• Signal et Communications
– Simulink, MATLAB et des outils de conception système pour le traitement du signal (DSP) et les
communications qui couvrent le développement d'algorithmes, la simulation, le prototypage rapide et
le test
• Tests et Mesure
– outils MATLAB pour communiquer et échanger des données avec du matériel externe.
• Traitement d’image
– outils MATLAB pour le traitement d'image, de l'import des données à l'analyse, la restauration d'image
et au développement d'application.
• Biologie
– Outils pour l’analyse, la visualisation de données et la simulation de systèmes biologiques
• Finance
– Outils pour l'analyse, la modélisation, la simulation, et l'optimisation de données financières
6

L’environnement MATLAB
• Fenêtres graphiques MATLAB
– Command Window
– Current directory
– Command history
– Workspace
– Help
• Barres menus et barres outils
– Menus
File
Edit
View
Web
Windows
Help
– Outils: icônes fichiers,
copier/coller, Simulink,
Help
Workspace
Current directoryCommand history
Menu Barre d’outils
Help Command Window
7

L’environnement MATLABLaunch pad
Current directory
Menu Barre d’outils
Command Window
Workspace
Undock window
8
• Fenêtres graphiques MATLAB
– Command Window
– Current directory
– Command history
– Launch pad
– Workspace
– Help
• Barres menus et barres outils
– Menus
File
Edit
View
Web
Windows
Help
– Outils: icônes fichiers,
copier/coller, Simulink,
Help

Prise en main de MATLAB
• Utilisation de MATLAB en calculette (ligne de commande)
permet toutes les opérations arithmétiques, classiques– Exemple :
» 6+5
ans =
11
Le résultat est affiché et stocké dans une variable ans qui apparaît dansla fenêtre workspace
» 4/7
ans =
0.5714
» format long
» ans
ans =
0.57142857142857
» format short
» ans*3
» ans =
» 1.71439

Prise en main de MATLAB
» 4/5
» 4/7;
Aucun résultat n’est affiché mais le calcul est effectué et mémorisé dansans
» 4/5;3/4
ans =
0.7500
» 4/5,3/4
ans =
0.8000
ans =
0.7500
10

Éléments de langage
• Données 4 types de base
– Réels• Représentés par des nombres flottants ;
• Pas de différence entre entier, « entiers longs », réels, « réels longs »
• Notation décimale (+1234.5678, -1234.5678) ou scientifique ( 1234e 5678)
Exemple :
>> 4/7
La fenêtre workspace indique :
>> format short e
>> ans
ans =
5.7143e-001
>> format long e
>> ans
ans =
5.714285714285714e-001
11

Éléments de langage
– Complexes (complex)
• Constante désignant l’imaginaire i (i2 =-1) : i ou j (Attention aux
noms des indices de boucles) ;
• Ecriture : 3+2i , 3+i*2 , 4*exp(5i) , 4*exp(j*5) …
Exemple
>> 3+i
– Caractères (char)
>> 'a'
– Logiques (logical)
• 0 pour FAUX / 1 pour VRAI ;
>> 1>2
12

Éléments de langage
• Variables spéciales et constantes (help elmat)• ans : résultat le plus récent
• pi = 3.1415926535897
• i (ou j ) : unité imaginaire
• eps : précision numérique relative
• realmin : plus petit nombre flottant
• realmax : plus grand nombre flottant
• inf : infini, obtenu pour les expressions excédant realmax
• NaN : Not A Number, obtenu dans les opérations
d ’indétermination
– Attention !
le nom des constantes n’est pas réservé
Exemple>> format long e
>> realmax
ans =
1.797693134862316e+308 13

Éléments de langage
• Opérateurs (help ops)– Opérations arithmétiques : + , - , * , / , ^
Exemple
>> 36*pi
ans = 113.0973
>> 7^4
ans = 2401
– Opérateurs relationnels : == , ~= , < , > , <= , >=
Exemple
>> 'a'<'A'
ans = 0
>> 'a'<'b'
ans = 1
– Opérateurs logiques : & , | , ~ , xor
Exemple
>> (1<2)&&(4>=3)
ans = 1
>> xor(1<2,4>=3)
ans = 0
14

Éléments de langage
• Fonctions opérant sur des Scalaires (help elfun ) :
– entiers• rem : division entière
• lcm : plus petit multiple commun
• gcd :plus grand multiple commun
• factor :décomposition en facteurs premiers
– complexes• conj :conjugué
• abs : module
• angle : phase
• real : partie réelle
• imag : partie imaginaire
15

Éléments de langage
• Fonctions mathématiques
log, log10, exp, sqrt, abs, sign, cos, cosd, sin, sind,
acos, cosh, acosh, …
• Fonctions d ’arrondi
– round : arrondi à l’entier le plus proche
– floor : arrondi par défaut
– ceil : arrondi par excès
– fix : arrondi par défaut (resp. excès) pour un réel positif
(resp. négatif)
16

Quelques outils
• Utilisation de l’aide de Matlab– Navigateur
F1,
>> doc
>> helpwin
– Aide dans la fenêtre de commande
>> help
>> help cos
>> lookfor cos
Fiche synoptique n°2a
17

Quelques outils
• Conserver un journal de la sessiondiary, diary on, diary off
diary('session_matlab_8_sept')
• Commenter ses instructions
– % précède le commentaire : toute la fin de la ligne est ignorée par
l’interpréteur
>>% calcul de l’aire
...
>> realmax % plus grand réel
18

Éléments de langage (suite)
• Utilisation de Matlab en ligne de commande
• Variable
– Emplacement mémoire pour stocker une ou plusieurs valeurs
– Nom :
• chaine de 63 caractères au maximum pouvant contenir des lettres non
accentuées, des chiffres et des caractères de soulignement ( les caractères
spéciaux : é à ù + - * / , & | ~ $ % . ; , espace, etc. sont interdits)
• débute par une lettre
• différence entre Majuscules et minuscules : b et B ne désignent pas la même
variable
– Pas de noms de variables réservés prudence !
– PAS de déclaration de type ou de taille des variables utilisées : le type
(réel, complexes, caractère, logique) est établi automatiquement à partir
des valeurs affectées à la variable
19

Éléments de langage
– Affectation :
Variable = valeur
Exemple
>> clear;
>> a=5.1;b=1+i;car= 'y';
– Remarque
• Les constantes Matlab sont modifiables (pas de noms réservés) prudence !
>> pi
ans =
3.1416
>> pi=12
pi =
12
>> pi
pi =
12
20

Éléments de langage
• Espace mémoire
– Workspace
– Dans la fenêtre de commande>> who Your variables are:
a b car
>> whos Name Size Bytes Class
a 1x1 8 double array
b 1x1 16 double array (complex)
car 1x1 2 char array
Nouvelle variable
Ouvri r
Sauver
Imprimer
21

Éléments de langage
>> clear a
>> clear
>> a=5.1;b=1+i;car= 'y';
>> save mes_variables fichier mes_variables.mat
Ou
>> save (‘mes_variables’)
Ou
>> save ('mes_variables','a','b')
>> clear
>> load mes_variables a
>> load mes_variables
22

Eléments de langage
• Vecteurs et matrices
En réalité, Matlab manipule des matrices : un scalaire est une matrice de dimension 1x1
Exemple :
>> a=5
>> whos
Name Size Bytes Class
a 1x1 8 double array
– Définition d’une matrice :
• Liste des éléments entre crochets ([…] )
• Séparation des éléments d’une même ligne par , ou espace
• Séparation des lignes par ; ou retour chariot
Exemple :
>> a=[5 4;3 2]
a =
5 4
3 2
23
Fiche synoptique n°2b
ou >> a=[5,4
3,2]

Éléments de langage
– Vecteur
• Matrice ne contenant qu’une ligne ou qu’une colonne
– Création de vecteurs particuliers
• a:h:b : vecteur de composantes a, a+h, a+2h, …,a+Kh avec
a+Kh≤b
exemple
>> V=1:0.5:3
V =
1.0000 1.5000 2.0000 2.5000 3.0000
• linspace(a,b,N) : crée un vecteur de taille N, de composantes
a+(k-1)(b-a)/(N-1)
exemple
>> V=linspace(1,3,5)
V =
1.0000 1.5000 2.0000 2.5000 3.0000
24

Eléments de langage
– Extraction de sous-matrices :
• A(i,j) : élément de la ième ligne et de la jème colonne de A
Le premier élément de la matrice est A(1,1), le dernier A(end,end)
• A(:,j) : jième colonne de A
• A(i,:) : ième ligne
• A(idébut:ifin,j) : éléments des lignes idébut à ifin de la jème colonne
• diag(A) : éléments de la diagonale de A
– Extraction de sous-vecteurs
• v(k) : kème élément du vecteur v
• …
25
Entre parenthèses : indices ou vecteurs d’indices de ligne et de colonne
Tous les éléments

Éléments de langage
• Opérateurs
– Opérations matricielles : + , - , * , / , ^, ', \ ( division à
gauche (x=a\b est la solution de ax=b)
– Opérations terme à terme sur les tableaux : .* , ./ , .^
– Opérateurs relationnels : == , ~= , < , > , <= , >=
– Opérateurs logiques : & , | , ~ , xor
Exemple
>> a=[5 4;3 2]
a =
5 4
3 2
>> a*a
ans =
37 28
21 16
a.*a
ans =
25 16
9 4
26

Éléments de langage
• Fonctions opérant sur des matrices (help matfun )
– inv : inverse de la matrice
– det : déterminant de la matrice
– rank : rang de la matrice
– norm : norme euclidienne de la matrice
– eig : valeurs propres et vecteurs propres de la matrice
– size : taille de la matrice A
– poly : polynôme caractéristique d ’une matrice
– trace : trace
– expm : exponentielle de matrice
– any : 1 si au moins un des éléments de la matrice est non nul, et
0 sinon
– all : 1 si tous les éléments de la matice sont non nuls, et 0 sinon
27

Éléments de langage
• Fonctions opérant sur des vecteurs
– length : taille du vecteur
– cross : produit vectoriel
– dot : produit scalaire
– sum , prod , max , min , mean : somme, produit, maximum,
minimum et moyenne des éléments
– sort : tri par ordre croissant
– find : recherche d’éléments
– any : 1 si au moins un des éléments du vecteur est non nul, et 0
sinon
– all : 1 si tous les éléments du vecteur sont non nuls, et 0 sinon
28

Éléments de langage
– Création de matrices particulières
• eye(n) : matrice identité de taille n
– Voir aussi eye(n,m)
• ones(n,m) : matrice de taille (n,m), de composantes 1
• zeros(n,m) : matrice de taille (n,m), de composantes 0
• rand(n,m) : matrice de taille (n,m), de composantes aléatoires
(entre 0 et 1)
• diag(v) : matrice diagonale, de diagonale égale au vecteur v
– Voir aussi diag(v,n)
29

Exercices
a. Créer les vecteurs suivants :
• V1=[2.0 -1.0 4.0],
• V2=[1.0 2.0 3.0 4.0],
• V3=[1.0 2.0 3.0 4.0]T .
• le vecteur V4 de dimension 10 qui contient
– aux indices p pairs, le carré du p-ième entier ;
– aux indices p impairs, le cube du p-ième entier.
b. Créer la matrice :
En extraire la 1ère ligne, puis la seconde colonne.
En extraire le bloc carré (Aij)ij, pour i, j=1,2.
c. Créer la matrice identité de dimension 4 ;
Créer la matrice nulle de dimension 5x2.
;343
012A
30

d. Créer les matrices suivantes :
e. Créer la matrice suivante :
• Calculer son déterminant, sa trace et son inverse
• Calculer son polynôme caractéristique, et ses valeurs propres (de 2
manières différentes)
;
420
431
032
M4;
020
001
000
M3
000
200
010
M2;
400
030
002
M1
31
;
2100
1210
0121
0012
S

f. Soient les matrices :
• Calculer la matrice D définie successivement par :
– Dij=Aij+Bij ;
– Dij=Aij-Bij ;
– Dij=Aij*Bij ;
– Dij=Aij/Bij ;
– Dij=AijBij .
• Calculer la matrice E formée par
g. Pour un vecteur ligne x donné de dimension n, créer :
– La matrice E à n lignes dont toutes les lignes sont égales à x ;
– La matrice F à n colonnes dont toutes les colonnes sont égales à x’ ;
• Construire la matrice G contenant les lignes paires de F de la dernière à la première
32
;
0100
0010
0001
C;
7
4
2
6
3
1
B;
4
0
1
3
2
0
A
C
BAE

• Construire une matrice random aléatoire à 10 lignes et 10 colonnes ;
• Extraire la matrice c formée des éléments situés dans les lignes 3 à 8
aux colonnes 7, 1 et 3 de random ;
• Mettre à zéro les lignes impaires de random ; mettre à 0.8 les
éléments supérieurs à 0.7 restants.
33

Les polynômes
Un polynôme de degré n, p(x) = anxn+ an-1x
n-1+…+ a1x + a0 est défini par le
vecteur :
p = [an,an-1,…,a1,a0 ]
• Fonctions utiles– polyval : évaluation du polynôme p en des points donnés
– poly : calcul des coefficients du polynôme à partir de ses racines
– roots : racines d’un polynôme
– Voir aussi conv, deconv, polyint, polyder,
• Interpolation polynomiale :polyfit : calcule le polynôme optimal au sens des moindres carrés pour
approcher une série de points
34
Fiche synoptique n°2c

• Exemplesf=[1 -6 10 0 -11 6]
polyval(f,0)
x=linspace(-1,3,100)
y=polyval(f,x) % ici x est un vecteur
plot(x,y)
r=roots(f)
hold on,plot(r,0,'or')
-----------------------------------------
x=[1:5];
y=[3.5 4 5 4 4];
a1=polyfit(x,y,4)
a2=polyfit(x,y,3)
figure
x_int=1:0.02:5; plot(x,y,’*’,...
x_int,polyval(a1,x_int),’r’,...
x_int,polyval(a2,x_int),’g’)
35

Chaînes de caractères
• Une chaîne de caractères est un vecteur de caractères
(code ASCII)
Exemple :
– prenom='paul'
Fonctions utiles
disp : affiche une chaîne de caractères
input : affiche un texte et attend une saisie clavier
ischar, isletter, isspace : indiquent si l’argument est un
caractère, une lettre, un espace
num2str, str2num : conversions entre chaine de caractère et
valeur numérique
36

• Exercices : – Créer les chaînes de caractère correspondant aux mots Jean, - et Paul
• Créer une variable « prenom », utilisant les variables précédentes, et égale à Jean-Paul ;
• Quelle est la taille de cette variable ?
• Extraire la coordonnée 9, puis 3 de cette variable.
– Afficher tous les caractères de codes 32 à 126.
– Que signifie la suite de nombres renvoyée par la commande abs('zorro') ?
– Compter le nombre d'occurences d'une lettre donnée dans une chaîne ? Tester sur les chaînes 'caracteres' et 'invitation'.
37