Vous êtes sur la page 1sur 77

Initiation Matlab

A. BOUMEZZOUGH

10/11/2012

Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal

INTRODUCTION
MATrix LABoratory Logiciel qui permet, de manire interactive : de faire des calculs matriciels ; d analyser les donnes ; de visualiser les rsultats en 2D et 3D ... Langage de programmation Toolboxes : ensemble de fonctions (fichiers.m) dveloppes pour des domaines dapplications spcifiques SIMULINK : interface graphique interactive de MATLAB

10/11/2012

Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal

Introduction (2)

10/11/2012

Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal

Fonctionnement
Mode interactif : Les instructions sont excutes au fur et mesure quelles sont entres par l utilisateur Mode programme : MATLAB excute, ligne par ligne, les instructions d un fichier .m Type de variables : unique : la matrice
10/11/2012 Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal 4

L espace de travail : le Workspace (1)

10/11/2012

Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal

L espace de travail : le Workspace (2)

10/11/2012

Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal

L espace de travail (3)


Dclarer des variables : >> x =12.5 ; y = [1 -5 0 2] ; dfinies et dimensionnes automatiquement au fur et mesure de leur dclaration stockes 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

10/11/2012

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
10/11/2012 Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal 8

L espace de travail (4)


Grer les accs aux rpertoires / fichiers >> pathtool

Editer les commandes :


10/11/2012

ou lettre +

(ou double clic dans lhistorique)


9

Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal

L aide sous MATLAB


>> helpdesk

>> help nom de commande fournit de l aide sur l utilisation de la commande (et les rubriques connexes). >> lookfor mot-cl fournit la liste des fonctions contenant le mot-cl.
10/11/2012 Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal 10

Plan
1. Vecteurs et matrices 2. La programmation MATLAB 3. Les graphiques 4. Les polynmes et l analyse numrique 5. Limport/export de donnes

10/11/2012

Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal

11

VECTEURS ET MATRICES
Scalaires et oprations scalaires Vecteurs et oprations vectorielles Matrices et oprations matricielles

10/11/2012

Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal

12

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

10/11/2012

Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal

13

Les scalaires (2)


Les complexes : >> x=1+j x= 1.0000 + 1.0000i Les constantes prdfinies : >> pi ans = 3.1416 >> eps ans = 2.2204e-016 >> 1/0 Warning : Divide by zero Inf >> 0/0 Warning : Divide by zero NaN
10/11/2012 Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal 14

Les scalaires (3)


Les oprations arithmtiques >> 3 +7 - 2 * 9 ans = -8 divisions droite (/) et gauche (\) lvation une puissance (^) Quelques fonctions fonctions trigo : cos acos cosh exponentielle : exp log nprien : log log dcimal : log10 racine : sqrt |x|ou ||x||: abs Re & Im : real imag arrondis : round ceil floor fix

10/11/2012

Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal

15

Crer 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

10/11/2012

Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal

16

Crer un vecteur (2)


Le vecteur : une matrice 1xn >> size(v1) ans = 1 3 longueur d un vecteur >> long_v1 = length(v1) long_v1 = 3 Concatnation >> v4 =[v1 v3] v4 = 1 2 -5 Vecteur vide >> v =[ ] ;
10/11/2012

-7

Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal

17

Crer un vecteur (3)


Gnration automatique composantes espaces 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 dfaut (pas = 1) v =debut : fin espacement logarithmique de 10debut 10fin syntaxe : v =logspace(debut, fin, N)
10/11/2012 Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal 18

Oprations vectorielles (1)


Extraction >> v4(3) ans = -5 >> v4(2:4) ans = 2 -5 -7 Extraction selon un critre >> i =find(v4 <0) i= 3 4 >> v4(i) ans = -5 -7 Sous MATLAB, le premier indice d un tableau est 1
10/11/2012 Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal 19

Oprations vectorielles (2)


oprations lmentaires somme de vecteurs de mme 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 mme dimensions >> p = [2 1 -1] * [1 -3 5] p= -6 produit lment par lment >> [2 1 -1] .* [1 -3 5] ans = 2 -3 -5

10/11/2012

Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal

20

Oprations vectorielles (3)


>> v = [1 2 -5 -7 3] somme des lments d un vecteur >> sum(v) ans = -6 produit des lments d un vecteur >> prod(v) ans = 210 moyenne : mean(v) mdiane : median(v) cart-type : std(v) minimum : min(v) maximum : max(v)
10/11/2012 Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal 21

Crer une matrice (1)


Saisie d une matrice lignes spares par un point virgule >> M1=[1 0 3;2 5 1] M1 = 1 0 3 2 5 1 lignes spares par un retour chariot >> M1=[1 0 3 2 5 1] M1 = 1 0 3 2 5 1 Dimensions >> size(M1) ans = 2 3
10/11/2012 Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal 22

Crer une matrice (2)


par concatnation >> 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 suprieures et infrieures
10/11/2012 Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal 23

Les matrices spciales (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 lments valent 1 zeros(m,n) : matrice m x n dont tous les lments valent 0 Si m=n, spcifier une seule dimension >> UNITE = ones( 2) UNITE = 1 1 1 1

10/11/2012

Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal

24

Les matrices spciales (2)


Matrices alatoires Distribution normale (m = 0 , = 1) : >> y = randn(10000,1) ; Distribution uniforme (m = 1/2 , = 1/12) : >> y = rand(10000,1) ;

10/11/2012

Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal

25

Oprations matricielles (1)


Extraction d un lment : >> 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 dune sous-matrice : ??

10/11/2012

Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal

26

Oprations 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

10/11/2012

Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal

27

Oprations matricielles (3)


Produit classique Rappel : le produit de A(mxn) par B(pxq) n est possible que si n = p et le rsultat est de dimension mxq Produit de Hadamard ou produit lment par lment de deux matrices de mmes dimensions >> A = [1 2 ; 3 4] >> A * A >> A .* A ans = ans = 7 10 1 4 15 22 9 16

10/11/2012

Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal

28

Oprations 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
10/11/2012 Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal 29

Oprations matricielles (5)


Fonctions diverses dterminant : >> 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 : srie de Taylor

10/11/2012

Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal

30

Vecteurs et valeurs propres


>> M = [2 1 ; 1 2] ; Polynme caractristique : |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
10/11/2012 Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal 31

LA PROGRAMMATION MATLAB
Les oprateurs logiques Les chanes de caractres Les commandes structures Les scripts et les fonctions La programmation

10/11/2012

Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal

32

Oprateurs logiques
== ~= <( <=) >( >=) & ~ | xor Exemple : >> a = [1 0 0 1] ; >> b = [1 1 0 1] ; >> a | b ans = 1 1
10/11/2012

galit diffrence infrieur (ou gal) suprieur (ou gal) ET logique (AND) NON logique (NOT) OU logique (OR) OU exclusif (XOR)

1
33

Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal

Chanes de caractres (1)


Gnralits chane = vecteur ligne nombre de composantes = longueur de la chane Affectation >> ch = bonjour monsieur >> size(ch) ans = 1 16 Conversions num2str : nombre chane mat2str : matrice chane str2num : chane nombre

10/11/2012

Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal

34

L instruction FOR (1)


parcours d'un intervalle syntaxe : for variable =debut : fin instructions .......... instructions end exemple : crer 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
10/11/2012 Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal 35

L instruction FOR (2)


On peut utiliser un incrment (pas) autre que 1 (valeur par dfaut). syntaxe : for variable =debut:pas:fin Les bornes ne sont pas ncessairement des entiers. Le pas peut tre ngatif.

10/11/2012

Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal

36

La boucle WHILE
tant que . . . faire syntaxe : while expression instructions .......... instructions end exemple: calculer le plus petit entier n tel que 2n soit suprieur un rel a donn. >> max =2002 ; n=1; >> while (2^n <max);n=n+1;end; >> n n= 11
10/11/2012 Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal 37

L instruction IF (1)
La squence d instructions intrieure est excute si expression est vrai (=1 logique). syntaxe if expression instruction ........ instruction end expression peut tre simple ou compose. exemple if (a<0 & b<0) disp( a et b ngatifs ) end

10/11/2012

Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal

38

L instruction IF (2)
Permet de choisir entre deux options. syntaxe : if expression instructions 1 else instructions 2 end si expression n est pas vrifier alors les instructions 2 sont excutes
10/11/2012 Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal 39

L instruction IF (3)
Permet une slection multiple. syntaxe : if expression1 instructions 1 elseif expression2 instructions 2 elseif expression3 instructions 3 ........... else expressionN instructions N end
10/11/2012 Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal 40

Script (1)
Fichier (nom.m par exemple) contenant une suite d instructions matlab. Excut squentiellement dans l espace de travail, il accde aux variables (locales) qui s y trouvent. Pour crire un script, utiliser lditeur. >> edit

10/11/2012

Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal

41

Script (2)
Lextension classique dun 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 senchaner. Lutilisation de fichiers script permet de sauvegarder vos commandes dune 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 licne reprsentant une page blanche.
10/11/2012 Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal 42

Fonctions (1)
Fichier (trouve.m par exemple) contenant une suite dinstructions matlab. Commence par le mot rserv function. Reoit un (ou plusieurs) paramtre(s) d entre. Peut renvoyer un (ou plusieurs) paramtre(s) en sortie ou n en renvoyer aucun.

Nom du fichier = nom de la fonction


10/11/2012 Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal 43

Fonctions (2)
Sous fonctions un fichier .m peut contenir plusieurs fonctions la premire est la fonction primaire les suivantes sont des sous fonctions accessible la fonction primaire et aux autres sous fonctions du fichier .m

10/11/2012

Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal

44

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 dfinie comme globale l espace de travail (ou un script) sera modifiable par toutes les fonctions l ayant dclare globale
function y = f2(x) global A B C y = A*x.^2 + B*x + C

>> global A B C >> A = 1 ; B = 3 ; C = -1 ; >> x = -10:0.1:10; >> y = f2(x) ;


10/11/2012

Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal

45

Programmation (1)
Forme gnrale d une application MATLAB

10/11/2012

Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal

46

Programmation (2)
Quelques recommandations Choisir des noms significatifs pour les variables et les fonctions Documenter les fonctions (help) Vrifier le nombre d arguments d entre (nargin) et de sortie (nargout) des fonctions Eviter (autant que possible !) les boucles for et while Dimensionner les variables
10/11/2012 Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal 47

Programmation (3)
Mesure de complexit algorithmique temps d excution (en secondes) : >> A = rand(200); >> tic ; inv(A *A) ; toc elapsed_time = 12.4100 Le profiler ( >> help profile ) >> profile report temps d excution total (en secondes) >> profile report N N lignes demandant le plus de temps d excution (en % du temps total) Les messages derreur : ??? Index exceeds matrix dimensions. Error in ==> C:\MATLAB\bin\test.m On line 2 ==> x(4)

10/11/2012

Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal

48

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

10/11/2012

Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal

49

LES GRAPHIQUES
Les graphes en 2D Les graphes en 3D L exportation de graphes

10/11/2012

Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal

50

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)

10/11/2012

Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal

51

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 mme graphe avec les attributs s1, s2 ... >> y2 =0.5*x.^2 - x + 1 ; >> plot(x, y1, r, x, y2, b)

10/11/2012

Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal

52

Lgender une courbe (1)


Insrer un titre >> title(Trac de x^2 et 0.5x^2-x+1) Lgender l axe des abscisses >> xlabel(x : axe des abscisses) Lgender l axe des ordonnes >> ylabel(y : axe des ordonnes) Insrer du texte >> gtext(x^2) >> gtext(0.5x^2 - x + 1) Ajouter un quadrillage >> grid
10/11/2012 Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal 53

Lgender une courbe (2)

10/11/2012

Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal

54

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 intressante de la courbe Lecture prcise du point d intersection entre deux courbes
10/11/2012 Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal 55

Manipuler un graphique (2)


Manipulation interactive du graphique

10/11/2012

Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal

56

Tracer plusieurs courbes


Sur un mme graphique >> plot(x, y1, r) >> hold on >> plot(x, y2, b) Sur plusieurs graphiques diffrents >> subplot(211), plot(x, y1, r) >> subplot(212), plot(x, y2, r)

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

10/11/2012

Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal

57

Tracer le graphe d une fonction


La commande fplot( f ,x) permet d afficher les variations de la fonction f1 (enregistre dans le fichier f1.m) sur l intervalle x. >> x =0:0.1:4*pi; >> fplot (sin, x)

10/11/2012

Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal

58

Histogrammes
Tracs l aide de la commande hist >> y = randn(1000,1) ; >> hist (y, 50) >> title( distribution normale : rpartition en 50 classes )

10/11/2012

Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal

59

Courbes paramtres
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)

10/11/2012

Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal

60

Tracer une courbe 3D


Syntaxe : 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)

10/11/2012

Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal

61

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


10/11/2012 Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal 62

Tracer une surface (2)


>> colormap( cool ) >> surf (X, Y, Z)

surfc : avec contours surfl : avec jeu d ombres


10/11/2012 Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal 63

Orienter un graphe 3D
rotate3D + bouton gauche ou view(azimut, lvation) exemple : >>subplot(121), surf(X,Y,Z), view(0,0) >>subplot(122), surf(X,Y,Z), view(0,90)

10/11/2012

Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal

64

LES POLYNOMES ET L ANALYSE NUMERIQUE


Polynmes Oprations polynomiales Interpolation et rgression Rsolution dquations non linaires Recherche de minima

10/11/2012

Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal

65

Les polynmes
Vecteur ligne Vecteur ligne ensemble de donnes polynme 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 disposs suivant les puissances dcroissantes de x
10/11/2012 Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal 66

Oprations polynomiales
Multiplication de 2 polynmes >> p3 =conv(p1, p2) p3 = 2 4 4 8 0 p3(x) = 2x4 + 4x3 + 4x2 + 8x Extension n polynmes p4(x) = x(x + 2)(2x - 3) >> p4 =conv([1 0],conv([1 2],[2 -3])) p4 = 2 1 -6 0 Division de polynmes >> p1 = deconv(p3, p2) p1 = 1 0 2 Dr. A. BOUMEZZOUGH
10/11/2012 Facult Polydisciplinaire Beni mellal

67

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)

10/11/2012

Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal

68

Interpolation (1)
Interpolation polynomiale au sens des moindres carrs : >> p=polyfit(x, y, ordre) ; Importance de l ordre du polynme d interpolation :
%fonction sigmode bruite x = -5:0.1:5 ; mes=1./(1+exp(-x))+0.05*randn(1,length(x)) ; %interpolation d'ordre 1 p = polyfit(x, mes, 1) ; res = polyval(p,x) ; plot(x,mes,'b+',x, res,'r',x,mes - res, 'g') %interpolation d'ordre 5 p = polyfit(x, mes, 5) res = polyval(p,x) ; plot(x,mes,'b+',x, res,'r',x,mes -_res, 'g')
10/11/2012 Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal 69

Interpolation (2)
Ordre 1 : erreur = 0.0113

Ordre 5 : erreur = 0.0023

10/11/2012

Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal

70

Interpolation (3)
Relier des points (ensemble de donnes) exprimentaux par une courbe forme de segments de droite ou de courbes polynomiales syntaxe : interp1(x,y,z, type) type : linear interpolation linaire 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 dfaut : linear >> plot(x,y, bo ,z,f, r+ )
10/11/2012 Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal 71

Interpolation (4)

De mme : interp2 interpolation dans l espace 3D interp3 interpn


10/11/2012 Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal 72

Rgression linaire
Dtermination du modle linaire y=f(x) reliant deux sries de mesure x et y. yi = axi + b vecteur optimal (au sens des moindres carrs) construction de la matrice : >> phi =[x ones(length(x),1)] ; dtermination de : >> teta =nnls(phi,y) ;
10/11/2012 Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal 73

Rsolution d quations non linaires ()


Dtermination des racines dune fonction non linaire par la mthode de Newton-Raphson enregistrer lexpression littrale de la fonction dans un fichier (foncnl.m) utiliser la fonction fzero pour dterminer une racine de lquation au voisinage de x0 fzero( fonc_nl , x0) utiliser la fonction fsolve pour dterminer lensemble des racines de lquation dans l intervalle (xd, xf) fsolve( fonc_nl , xd : xf)
10/11/2012 Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal 74

Rsolution d quations non linaires (2)


function f_nl = foncnl =(x) %fonction non linaire 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
10/11/2012 Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal 75

Recherche de minima (1)


Fonctions une variable : la valeur qui minimise localement une fonction (enregistre dans fonc.m) dans lintervalle (xd, xf) s obtient par : fminbnd( fonc , xd, xf) exemple : >> xmin= fminbnd(foncnl ,0,2) xmin = 0.5989 Fonctions plusieurs variables : mme principe mais l argument dappel est un vecteur : fminsearch( fonc , [x0 y0])
10/11/2012 Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal 76

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

10/11/2012

Dr. A. BOUMEZZOUGH Facult Polydisciplinaire Beni mellal

77

Vous aimerez peut-être aussi