Matlab SMP S5

Preview:

Citation preview

1

Initiation à Matlab

A. BOUMEZZOUGH

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

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

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

3

Introduction (2)

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

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

5

L ’espace de travail : le Workspace (1)

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

6

L ’espace de travail : le Workspace (2)

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

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

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)

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é.

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

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

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

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

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

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

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 =[ ] ;

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)

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

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

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)

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

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

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

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) ;

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 : ??

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

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

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

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

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

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

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

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

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

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.

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

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

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

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

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

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.

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

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

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

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

46

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

application MATLAB

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

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)

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

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

50

LES GRAPHIQUES

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

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’)

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’)

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

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

54

Légender une courbe (2)

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

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

56

Manipuler un graphique (2)Manipulation interactive du graphique

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)

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)

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 ’)

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)

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)

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

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

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)

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

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

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

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)

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')

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

70

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

• Ordre 5 : erreur σ = 0.0023

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+ ’)

Dr. A. BOUMEZZOUGH Faculté Polydisciplinaire Beni mellal

72

Interpolation (4)

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

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’) ;

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)

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

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])

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

Recommended