matlab 1_généralités_matrices_polynomes

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

Transcript of matlab 1_généralités_matrices_polynomes

Page 1: 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

Page 2: matlab 1_généralités_matrices_polynomes

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

Page 3: matlab 1_généralités_matrices_polynomes

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

Page 4: matlab 1_généralités_matrices_polynomes

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

Page 5: matlab 1_généralités_matrices_polynomes

• 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

Page 6: matlab 1_généralités_matrices_polynomes

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

Page 7: matlab 1_généralités_matrices_polynomes

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

Page 8: matlab 1_généralités_matrices_polynomes

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

Page 9: matlab 1_généralités_matrices_polynomes

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

Page 10: matlab 1_généralités_matrices_polynomes

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

Page 11: matlab 1_généralités_matrices_polynomes

É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

Page 12: matlab 1_généralités_matrices_polynomes

É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

Page 13: matlab 1_généralités_matrices_polynomes

É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

Page 14: matlab 1_généralités_matrices_polynomes

É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

Page 15: matlab 1_généralités_matrices_polynomes

É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

Page 16: matlab 1_généralités_matrices_polynomes

É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

Page 17: matlab 1_généralités_matrices_polynomes

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

Page 18: matlab 1_généralités_matrices_polynomes

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

Page 19: matlab 1_généralités_matrices_polynomes

É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

Page 20: matlab 1_généralités_matrices_polynomes

É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

Page 21: matlab 1_généralités_matrices_polynomes

É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

Page 22: matlab 1_généralités_matrices_polynomes

É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

Page 23: matlab 1_généralités_matrices_polynomes

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]

Page 24: matlab 1_généralités_matrices_polynomes

É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

Page 25: matlab 1_généralités_matrices_polynomes

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

Page 26: matlab 1_généralités_matrices_polynomes

É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

Page 27: matlab 1_généralités_matrices_polynomes

É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

Page 28: matlab 1_généralités_matrices_polynomes

É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

Page 29: matlab 1_généralités_matrices_polynomes

É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

Page 30: matlab 1_généralités_matrices_polynomes

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

Page 31: matlab 1_généralités_matrices_polynomes

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

Page 32: matlab 1_généralités_matrices_polynomes

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

Page 33: matlab 1_généralités_matrices_polynomes

• 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

Page 34: matlab 1_généralités_matrices_polynomes

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

Page 35: matlab 1_généralités_matrices_polynomes

• 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

Page 36: matlab 1_généralités_matrices_polynomes

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

Page 37: matlab 1_généralités_matrices_polynomes

• 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