77
Initiation à Matlab A. BOUMEZZOUGH 1 Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

Matlab SMP S5

Embed Size (px)

Citation preview

Page 1: Matlab SMP S5

1

Initiation à Matlab

A. BOUMEZZOUGH

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

Page 2: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

2

INTRODUCTION

• MATrix LABoratory

• Logiciel qui permet, de manière interactive :

– de faire des calculs matriciels ;

– d ’analyser les données ;

– de visualiser les résultats en 2D et 3D ...

• Langage de programmation

• Toolboxes : ensemble de fonctions

(fichiers.m) développées pour des domaines d’applications spécifiques

• SIMULINK : interface graphique interactive de MATLAB

Page 3: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

3

Introduction (2)

Page 4: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

4

Fonctionnement

• Mode interactif :

Les instructions sont exécutées au fur et à mesure qu’elles sont entrées par l ’utilisateur

• Mode programme :

MATLAB exécute, ligne par ligne, les instructions d ’un fichier .m

• Type de variables :

unique : la matrice

Page 5: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

5

L ’espace de travail : le Workspace (1)

Page 6: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

6

L ’espace de travail : le Workspace (2)

Page 7: Matlab SMP S5

7

L ’espace de travail (3)

• Déclarer des variables :

>> x =12.5 ; y = [1 -5 0 2] ;

– définies et dimensionnées automatiquement au fur et à mesure de leur déclaration

– stockées dans l ’espace de travail

• S ’informer sur les variables :

>> who

Your variables are:

x y

>> whos

Name Size Bytes Class

x 1x1 8 double array

y 1x4 32 double array

Grand total is 5 elements using 40 bytes

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

Page 8: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

8

L ’espace de travail (4)

• Supprimer une (ou toutes les) variable(s) :

>> clear x

>> clear all

• Entrer une valeur au clavier :

>> x = input(‘Valeur de x =’)

Valeur de x =12

x =

12

• Afficher un texte à l ’écran :

>> disp(‘ Ceci est un test ’)

Ceci est un test

>> disp([‘ x vaut ’, num2str(x)])

x vaut 12

Page 9: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

9

L ’espace de travail (4)• Gérer les accès aux répertoires / fichiers >> pathtool

• Editer les commandes : ou lettre + (ou double clic dans l’historique)

Page 10: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

10

L ’aide sous MATLAB>> helpdesk

>> help nom de commande fournit del ’aide sur l ’utilisation de la commande (et les rubriques connexes).

>> lookfor mot-clé fournit la liste desfonctions contenant le mot-clé.

Page 11: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

11

Plan

1. Vecteurs et matrices

2. La programmation MATLAB

3. Les graphiques

4. Les polynômes et l ’analyse numérique

5. L’import/export de données

Page 12: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

12

VECTEURS ET MATRICES

• Scalaires et opérations scalaires• Vecteurs et opérations vectorielles• Matrices et opérations matricielles

Page 13: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

13

Les scalaires (1)• Le scalaire : une matrice 1x1

>> s =2.5 ;

>> size(s)

ans =

1 1

ou

>> [i,j] = size(s)

i =

1

j =

1

• Les format d ’affichage

format short 0.0333

format long 0.033333333333

format short e 3.3333E-002

format long e 3.333333333334E-002

format rat 1/30

format bank 0.03

Page 14: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

14

Les scalaires (2)

• Les complexes :

>> x=1+j

x =

1.0000 + 1.0000i

• Les constantes prédéfinies :

>> pi

ans =

3.1416

>> eps

ans =

2.2204e-016

>> 1/0

Warning : Divide by zero

Inf

>> 0/0

Warning : Divide by zero

NaN

Page 15: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

15

Les scalaires (3)

• Les opérations arithmétiques

>> 3 +7 - 2 * 9

ans =

-8

divisions droite (/) et gauche (\)

élévation à une puissance (^)

• Quelques fonctions

– fonctions trigo : cos acos cosh

– exponentielle : exp

– log népérien : log

– log décimal : log10

– racine : sqrt

– |x|ou ||x||: abs

– Re & Im : real imag

– arrondis : round ceil floor fix

Page 16: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

16

Créer un vecteur (1)

• Vecteur ligne

>> v1= [1 2 -5] ;

ou

>> v1(1) =1; v1(2) =2;v1(3)=-5;

ou

>> v1(1) = [1, 2 ,-5] ;

• Vecteur colonne

>> v2=[-7;3];

• Transposition :

>> v3=v2 ’

v3 =

-7 3

Page 17: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

17

Créer un vecteur (2)

• Le vecteur : une matrice 1xn

>> size(v1)

ans =

1 3

longueur d ’un vecteur

>> long_v1 = length(v1)

long_v1 =

3

• Concaténation

>> v4 =[v1 v3]

v4 =

1 2 -5 -7 3

• Vecteur vide

>> v =[ ] ;

Page 18: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

18

Créer un vecteur (3)

• Génération automatique

composantes espacées d ’un pas constant

syntaxe : v =debut : pas : fin

>> v5=1:0.5:3

v5=

1.000 1.500 2.000 2.500 3.000

⇔ v =linspace(1, 3, 5)

par défaut (pas = 1) v =debut : fin

espacement logarithmique de 10debut à 10fin

syntaxe : v =logspace(debut, fin, N)

Page 19: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

19

Opérations vectorielles (1)

• Extraction

>> v4(3)

ans =

-5

>> v4(2:4)

ans =

2 -5 -7

• Extraction selon un critère

>> i =find(v4 <0)

i =

3 4

>> v4(i)

ans =

-5 -7

Sous MATLAB, le premier indice d ’un tableau est 1

Page 20: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

20

Opérations vectorielles (2)• opérations élémentaires

– somme de vecteurs de même dimensions

>> s = [2 1 -1]+ [1 -3 5]

s =

3 -2 4

– ajout d ’un scalaire

>> s + 2

ans =

5 0 6

– produit de vecteurs de même dimensions

>> p = [2 1 -1] * [1 -3 5] ’

p =

- 6

– produit élément par élément

>> [2 1 -1] .* [1 -3 5]

ans =

2 -3 -5

Page 21: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

21

Opérations vectorielles (3)

>> v = [1 2 -5 -7 3]

– somme des éléments d ’un vecteur

>> sum(v)

ans =

-6

– produit des éléments d ’un vecteur

>> prod(v)

ans =

210

– moyenne : mean(v)

– médiane : median(v)

– écart-type : std(v)

– minimum : min(v)

– maximum : max(v)

Page 22: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

22

Créer une matrice (1)

• Saisie d ’une matrice

– lignes séparées par un point virgule

>> M1=[1 0 3;2 5 1]

M1 =

1 0 3

2 5 1

– lignes séparées par un retour chariot

>> M1=[1 0 3

2 5 1]

M1 =

1 0 3

2 5 1

• Dimensions

>> size(M1)

ans =

2 3

Page 23: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

23

Créer une matrice (2)

• par concaténation

>> M2= [0 7 12];

>> M3 = [M1 ; M2]

M3 =

1 0 3

2 5 1

0 7 12

• par transformation

>> reshape(M3, 1,9)

ans =

1 2 0 0 5 7 3 1 12

• par extraction : triu tril

matrices triangulaires supérieures et inférieures

Page 24: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

24

Les matrices spéciales (1)

• Matrices identité, nulle et unité

>> IDENTITE = eye( 2,3)

IDENTITE =

1 0 0

0 1 0

– ones (m,n) : matrice m x n dont tous les éléments valent 1

– zeros(m,n) : matrice m x n dont tous les éléments valent 0

Si m=n, spécifier une seule dimension

>> UNITE = ones( 2)

UNITE =

1 1

1 1

Page 25: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

25

Les matrices spéciales (2)• Matrices aléatoires

– Distribution normale (m = 0 , σ = 1) :

>> y = randn(10000,1) ;

– Distribution uniforme (m = 1/2 , σ = 1/12) :

>> y = rand(10000,1) ;

Page 26: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

26

Opérations matricielles (1)• Extraction

– d ’un élément :

>> M3(3,2) >> M3(6)

ans = ans =

7 7

– d ’une ligne :

>> M3(2, : )

ans =

2 5 1

– d ’une colonne :

>> M3( : ,2)

ans =

0

5

– d’une sous-matrice : ??

Page 27: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

27

Opérations matricielles (2)

• Comparaison

>> M3 = [1 0 3 ; 2 5 1 ; 0 7 12] ;

>> M4 = ones(3) ;

>> M3 > M4 %find(M3 > 1)

ans =

0 0 1

1 1 0

0 1 1

• Extension des instruction min, max ...

>> max(M3) %maximum par colonnes

ans =

2 7 12

>> max(M3(:)) %max(max(M3))

ans =

12

Page 28: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

28

Opérations matricielles (3)

• Produit classique

Rappel : le produit de A(mxn) par B(pxq)

n ’est possible que si n = p et le résultat est

de dimension mxq

• Produit de Hadamard

ou produit élément par élément de deux

matrices de mêmes dimensions

>> A = [1 2 ; 3 4]

>> A * A >> A .* A

ans = ans =

7 10 1 4

15 22 9 16

Page 29: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

29

Opérations matricielles (4)

• Transformations

>> M = [1 2 ; 3 4]

>> fliplr(M) %retournement gauche/droite

ans =

2 1

4 3

>> flipud(M) %retournement haut/bas

ans =

3 4

1 2

>> rot90(M) %transposition + flipud

ans =

2 4

1 3

Page 30: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

30

Opérations matricielles (5)

• Fonctions diverses

– déterminant :

>> det(M)

– norme

>> norm(M)

– rang

>> rank(M)

– inverse (et pseudo-inverse)

>> inv(M) >> pinv(M)

– conditionnement

>> cond(M)

– exponentielle

expm : vecteurs et valeurs propres

expm1 : approximation de Padé

expm2 : série de Taylor

Page 31: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

31

Vecteurs et valeurs propres

>> M = [2 1 ; 1 2] ;

• Polynôme caractéristique : |λI - M| = 0

>> poly(M)

ans =

1 -4 3

• Vecteurs et valeurs propres

>> [vec val] = eig(M)

vec =

0.7071 0.7071

- 0.7071 0.7071

val =

1 0

0 3

Page 32: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

32

LA PROGRAMMATIONMATLAB

• Les opérateurs logiques

• Les chaînes de caractères

• Les commandes structurées

• Les scripts et les fonctions

• La programmation

Page 33: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

33

Opérateurs logiques

• == égalité

• ~ = différence

• <( <=) inférieur (ou égal)

• >( >=) supérieur (ou égal)

• & ET logique (AND)

• ~ NON logique (NOT)

• | OU logique (OR)

• xor OU exclusif (XOR)

Exemple :

>> a = [1 0 0 1] ;

>> b = [1 1 0 1] ;

>> a | b

ans =

1 1 0 1

Page 34: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

34

Chaînes de caractères (1)

• Généralités

– chaîne = vecteur ligne

– nombre de composantes = longueur de la chaîne

• Affectation

>> ch = ‘ bonjour monsieur ’

>> size(ch)

ans =

1 16

• Conversions

num2str : nombre chaîne

mat2str : matrice chaîne

str2num : chaîne nombre

Page 35: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

35

L ’instruction FOR (1)

• parcours d'un intervalle

syntaxe :

for variable =debut : fin

instructions

..........

instructions

end

exemple : créer le vecteur [1 2 22 24 .... 210]

>> x=[ ]

x =

[ ]

>> for n=0:10 ; x =[x 2^n] ; end

ou directement

>> for n=0:10; x(n +1) =2^n; end

Page 36: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

36

L ’instruction FOR (2)

• On peut utiliser un incrément (pas) autre que 1

(valeur par défaut).

syntaxe :

for variable =debut:pas:fin

• Les bornes ne sont pas nécessairement des entiers.

• Le pas peut être négatif.

Page 37: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

37

La boucle WHILE

• tant que . . . faire

syntaxe :

while expression

instructions

..........

instructions

end

exemple: calculer le plus petit entier n tel que 2n soit supérieur à un réel

a donné.

>> max =2002 ; n=1;

>> while (2^n <max);n=n+1;end;

>> n

n =

11

Page 38: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

38

L ’instruction IF (1)

• La séquence d ’instructions intérieure est exécutée si expression est vrai (=1

logique).

syntaxe

if expression

instruction

. . . . . . . .

instruction

end

• expression peut être simple ou composée.

exemple

if (a<0 & b<0)

disp(‘ a et b négatifs ’)

end

Page 39: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

39

L ’instruction IF (2)

• Permet de choisir entre deux options.

syntaxe :

if expression

instructions 1

else

instructions 2

end

• si expression n ’est pas vérifier alors les instructions

2 sont exécutées

Page 40: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

40

L ’instruction IF (3)

• Permet une sélection multiple.

syntaxe :

if expression1

instructions 1

elseif expression2

instructions 2

elseif expression3

instructions 3

. . . . . . . . . . .

else expressionN

instructions N

end

Page 41: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

41

Script (1)

• Fichier (nom.m par exemple) contenant une suite

d ’instructions matlab.

• Exécuté séquentiellement dans l ’espace de travail,

il accède aux variables (locales) qui s ’y trouvent.

• Pour écrire un script, utiliser l’éditeur.

>> edit

Page 42: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

42

Script (2)

L’extension classique d’un fichier MATLAB

est .m.

On peut trouver 2 types de fichiers m :

les fichiers de fonctions et les fichiers de script

qui sont un ensemble de commandes pouvant

s’enchaîner.

L’utilisation de fichiers script permet de

sauvegarder vos commandes d’une session

Matlab à une autre.

Pour ouvrir un fichier script :

- soit vous tapez la commande edit,

- soit vous cliquez : file new M-file,⇒ ⇒- soit vous cliquez directement sur l’icône

représentant une page blanche.

Page 43: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

43

Fonctions (1)

• Fichier (trouve.m par exemple) contenant une suite d’instructions matlab.

• Commence par le mot réservé function.

• Reçoit un (ou plusieurs) paramètre(s) d ’entrée.

• Peut renvoyer un (ou plusieurs) paramètre(s) en

sortie ou n ’en renvoyer aucun.

Nom du fichier = nom de la fonction

Page 44: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

44

Fonctions (2)

• Sous fonctions

– un fichier .m peut contenir plusieurs fonctions

– la première est la fonction primaire

– les suivantes sont des sous fonctions

– accessible à la fonction primaire et aux autres sous fonctions du fichier .m

Page 45: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

45

Les variables :locales ou globales ?

• Les variables des scripts sont locales à l ’espace de travail

• Les variables des fonctions sont locales à la fonction

• Une variable définie comme globale à l ’espace de travail (ou à un

script) sera modifiable par toutes les fonctions l ’ayant déclarée

globale

>> global A B C

>> A = 1 ; B = 3 ; C = -1 ;

>> x = -10:0.1:10;

>> y = f2(x) ;

function y = f2(x)global A B Cy = A*x.^2 + B*x + C

Page 46: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

46

Programmation (1)Forme générale d ’une

application MATLAB

Page 47: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

47

Programmation (2)

• Quelques recommandations

– Choisir des noms significatifs pour les variables et

les fonctions

– Documenter les fonctions (help)

– Vérifier le nombre d ’arguments d ’entrée (nargin)

et de sortie (nargout) des fonctions

– Eviter (autant que possible !) les boucles for et

while

– Dimensionner les variables

Page 48: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

48

Programmation (3)

• Mesure de complexité algorithmique

– temps d ’exécution (en secondes) :

>> A = rand(200);

>> tic ; inv(A ’*A) ; toc

elapsed_time =

12.4100

• Le profiler ( >> help profile )

>> profile report

temps d ’exécution total (en secondes)

>> profile report N

N lignes demandant le plus de temps d ’exécution (en % du temps total)

• Les messages d’erreur :

??? Index exceeds matrix dimensions.

Error in ==> C:\MATLAB\bin\test.m

On line 2 ==> x(4)

Page 49: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

49

Programmation (4)

• Boucles et programmation matricielle

>> A = rand(200) ;

>> x = 0 ;

>> tic

>> for i = 1 : 200

for j = 1 : 200

x = x + A(i,j) ;

end

end

>> toc

elapsed_time =

4.5000

>> tic ; sum(A(:)) ; toc

elapsed_time =

0.0600

Page 50: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

50

LES GRAPHIQUES

• Les graphes en 2D• Les graphes en 3D• L ’exportation de graphes

Page 51: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

51

Tracer une courbes 2D (1)

• La commande plot(x,y,s) affiche le

vecteur y en fonction du vecteur x

avec les attributs (facultatifs) s.

>> x =[-10:0.1:10];

>> y1 =x.^2;

>> plot(x, y1, ’r’)

Page 52: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

52

Tracer une courbes 2D (2)

• plot(y) permet de tracer directement le vecteur y en fonction de ses indices.

• plot(x,y1,s1,x,y2,s2,...) trace y1, y2 … en fonction de x sur le même graphe avec les attributs s1,

s2 ...

>> y2 =0.5*x.^2 - x + 1 ;

>> plot(x, y1, ’r’, x, y2, ’b’)

Page 53: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

53

Légender une courbe (1)

• Insérer un titre

>> title(‘Tracé de x^2 et 0.5x^2-x+1’)

• Légender l ’axe des abscisses

>> xlabel(‘x : axe des abscisses)

• Légender l ’axe des ordonnées

>> ylabel(‘y : axe des ordonnées’)

• Insérer du texte

>> gtext(‘x^2’)

>> gtext(‘0.5x^2 - x + 1’)

• Ajouter un quadrillage

>> grid

Page 54: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

54

Légender une courbe (2)

Page 55: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

55

Manipuler un graphique (1)

• La commande zoom (2D seulement) permet de ‘zoomer’ sur une partie de courbe avec le bouton gauche de la souris (le bouton droit annule le zoom)

• La commande axis permet de changer les bornes de visualisation

syntaxe:

axis([xmin xmax ymin ymax])

• Dans les deux cas :

– focalisation sur une partie ‘intéressante’ de la courbe

– Lecture précise du point d ’intersection entre deux

courbes

Page 56: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

56

Manipuler un graphique (2)Manipulation interactive du graphique

Page 57: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

57

Tracer plusieurs courbes• Sur un même graphique

>> plot(x, y1, ’r’)

>> hold on

>> plot(x, y2, ’b’)

• Sur plusieurs graphiques différents

>> subplot(211), plot(x, y1, ’r’)

>> subplot(212), plot(x, y2, ’r’)

(Nb écrans vertical, Nb écrans horizontal, N° écran)

Page 58: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

58

Tracer le graphe d ’unefonction

• La commande fplot(‘ f ’,x) permet d ’afficher les variations de

la fonction f1 (enregistrée dans le fichier f1.m) sur l ’intervalle x.

>> x =0:0.1:4*pi;

>> fplot (‘sin’, x)

Page 59: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

59

Histogrammes

• Tracés à l ’aide de la commande hist

>> y = randn(1000,1) ;

>> hist (y, 50)

>> title(‘ distribution normale : répartition en 50 classes ’)

Page 60: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

60

Courbes paramétrées• Exprimer x et y en fonction de t

exemple : courbe de Lissajous

>> t =0:0.1:2*pi;

>> x = cos(3*t) ;

>> y = sin(t) ;

>> plot(x, y)

Page 61: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

61

Tracer une courbe 3DSyntaxe : plot3(x, y, z, s)

>> t =0:0.1:25;

>> x = exp(-0.05*t).*cos(t) ;

>> y = exp(-0.05*t).*sin(t) ;

>> z = t ;

>> plot3(x, y,z)

Page 62: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

62

Tracer une surface (1)>> x = -pi/2 : pi/30 : pi/2 ;

>> y = x ;

>> [X,Y] = meshgrid(x,y) ;

>> Z =sinc(X.^2 + Y.^2) ;

>> mesh(X, Y, Z)

• meshc meshz : idem avec contours

Page 63: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

63

Tracer une surface (2)

>> colormap(‘ cool ’)

>> surf (X, Y, Z)

• surfc : avec contours• surfl : avec jeu d ’ombres

Page 64: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

64

Orienter un graphe 3Drotate3D + bouton gauche ou view(azimut, élévation)exemple :>>subplot(121), surf(X,Y,Z), view(0,0)>>subplot(122), surf(X,Y,Z), view(0,90)

Page 65: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

65

LES POLYNOMES ETL ’ANALYSE NUMERIQUE

• Polynômes

• Opérations polynomiales

• Interpolation et régression

• Résolution d’équations non linéaires

• Recherche de minima

Page 66: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

66

Les polynômes• Vecteur ligne ensemble de données

• Vecteur ligne polynôme de degré n

p(x) = anxn + an-1xn-1 + ... + a1x + a0

>> p =[anxn an-1 ... a1 a0] ;

>> length(p)

ans =

n + 1

>> p1 =[1 0 2] ; %p1(x) = x2 + 2

>> p2 =[2 4 0] ; %p2(x) = 2x2 +4x

coefficients disposés suivant les

puissances décroissantes de x

Page 67: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

67

Opérations polynomiales

• Multiplication de 2 polynômes

>> p3 =conv(p1, p2)

p3 =

2 4 4 8 0

p3(x) = 2x4 + 4x3 + 4x2 + 8x

• Extension à n polynômes

p4(x) = x(x + 2)(2x - 3)

>> p4 =conv([1 0],conv([1 2],[2 -3]))

p4 =

2 1 -6 0

• Division de polynômes

>> p1 = deconv(p3, p2)

p1 =

1 0 2

Page 68: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

68

Fonctions polynomiales• L ’instruction polyval permet d ’évaluer les variations d ’une fonction polynomiale

sur un intervalle x.

>> f =[-1 -5 1 0] ; %f(x)=- x3 - 5x2 +x

>> x =-10 :10 ;

>> y =polyval(f, x) ;

>> plot(x,y)

Page 69: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

69

Interpolation (1)• Interpolation polynomiale au sens des moindres carrés :

>> p=polyfit(x, y, ordre) ;

• Importance de l ’ordre du polynôme d ’interpolation :

%fonction sigmoïde bruitéex = -5:0.1:5 ;mes=1./(1+exp(-x))+0.05*randn(1,length(x)) ;%interpolation d'ordre 1p = polyfit(x, mes, 1) ;res = polyval(p,x) ;plot(x,mes,'b+',x, res,'r',x,mes - res, 'g')%interpolation d'ordre 5p = polyfit(x, mes, 5)res = polyval(p,x) ;plot(x,mes,'b+',x, res,'r',x,mes -_res, 'g')

Page 70: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

70

Interpolation (2)• Ordre 1 : erreur σ = 0.0113

• Ordre 5 : erreur σ = 0.0023

Page 71: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

71

Interpolation (3)

• Relier des points (ensemble de données) expérimentaux par une courbe formée de segments de droite ou de courbes

polynomialessyntaxe : interp1(x,y,z, ’type’)type : ‘ linear ’ interpolation linéaire

‘ spline ’ interpolation par splines ‘ cubic ’ interpolation cubique

>> x =0:10 ;>> y = cos(x) ;>> z = 0:0.1:10 ; %pas de z < pas de x>> f =interp1(x,y,z) ; %par défaut : linear>> plot(x,y, ’bo ’,z,f, ’r+ ’)

Page 72: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

72

Interpolation (4)

• De même :interp2 interpolation dans l ’espace 3Dinterp3interpn

Page 73: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

73

Régression linéaire

• Détermination du modèle linéaire y=f(x) reliant deux séries de mesure x et y.

yi = axi + b

vecteur optimal (au sens des moindres carrés)

construction de la matrice Φ :

>> phi =[x’ ones(length(x),1)] ;

détermination de θ :

>> teta =nnls(phi,y’) ;

Page 74: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

74

Résolution d ’équationsnon linéaires ()

• Détermination des racines d’une fonction non linéaire par la méthode de Newton-Raphson

enregistrer l’expression littérale de la fonction dans un

fichier (foncnl.m)

utiliser la fonction fzero pour déterminer une racine de

l’équation au voisinage de x0

fzero(‘ fonc_nl ’, x0)

utiliser la fonction fsolve pour déterminer l’ensemble des

racines de l’équation dans l ’intervalle (xd, xf)

fsolve(‘ fonc_nl ’, xd : xf)

Page 75: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

75

Résolution d ’équationsnon linéaires (2)

function f_nl = foncnl =(x)

%fonction non linéaire

f_nl = cos(x).*exp(-0.1*x).*sin(-2*x).+5 ;

>> x =-3:3 ;>> plot(x,foncnl(x)), grid

>> fzero(‘foncnl ’,0.5)ans = 0.2826>> fsolve(‘foncnl ’,0 : 2)ans = 0.2826 0.9505

Page 76: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

76

Recherche de minima (1)

• Fonctions à une variable :

la valeur qui minimise localement une fonction (enregistrée

dans fonc.m) dans l’intervalle (xd, xf) s ’obtient par :

fminbnd(‘ fonc ’, xd, xf)

exemple :

>> xmin= fminbnd(‘foncnl ’,0,2)

xmin =

0.5989

• Fonctions à plusieurs variables :

même principe mais l ’argument d’appel est un vecteur :

fminsearch(‘ fonc ’, [x0 y0])

Page 77: Matlab SMP S5

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

77

Recherche de minima (2)exemple :function f2 =fonc2(X)f2 = 2*X(1)^2 +X(2)^2 - X(1) +X(2) +1

>> minxy =fminsearch(‘fonc2 ’,[0 0])minxy =

0.2500 -0.5000>> minf =fonc2(minxy)minf = 7.5053 valeur minimale de la fonction