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