TPN3 MatLab : Les Polynômes et les Fonctions M.LICHOURI Dernière mise à jour : 013/05/10 à 18:3:1 1 Les Polynômes 1.1 Terminologie de base et des idées f pxq est une fonction polynomiale de la variable x. Le polynôme est de degré n. Les a 0, a 1, a,..., a n sont les coecients du polynôme. f pxq a une valeur numérique pour chaque valeur numérique de x. Les racines de f pxq sont les valeurs de x qui rendent f pxq 0. 1. Représentation des polynômes Dans Matlab, un polynôme est représenté par un vecteur ligne de ses coecients. Si le polynôme de degré n,ppxq a n x n a n 1 x n 1... a 1 x a 0, le vecteur représentant correspondant a une longueur n et contient les coecients associés aux puissances décroissantes de gauche à droite,a n,..., a, a 1, a 0. Coecients nuls doivent être marqués comme étant zéro entrées. Par exemple, [3 1] représente P prq 3 r r 1 alors que : [1 0 0] représente P prq r. La commande Polyval(vecteur, arg) interprète le vecteur comme polynôme et l'évalue à arg, qui peut être un nombre, un vecteur ou même une matrice. Example : Listing 1 Exemple 1 1 >> p=[1 3 ]; >> polyval(p,1) 3 ans = 5 7 >> polyval(p,[1 ]) 8 9 ans = Page 1/10
10 11 1 1.3 Dérivée d'un polynôme Une autre commande utile est polyder (vecteur). Là encore, l'argument du vecteur est interprété comme polynôme et la sortie est le vecteur représentant la dérivée de ce polynôme. Par exemple, le dérivé de P prq r r 1 (vecteur [1 1]) est P 1 prq r (vecteur [ ]) que vous pouvez trouver en exécutant : Listing Exemple 1 >> polyder([1 1]) 3 ans = 5 1. Racines d'un polynôme La commande la plus importante est la roots(vecteur) qui trouve numériquement toutes les racines du polynôme associé à l'argument du vecteur. Nous allons dénir un polynôme de degré avec des coecients aléatoires et calculer ses racines : Listing 3 Exemple 3 1 >> p=rand([1 7]) 3 p = 5 0.919 0.103 0.893 0.0579 0.359 0.813 0.0099 7 >> roots(p) 8 9 ans = 10 11 0.03 + 1.0987i 1 0.03 1.0987i 13 0.5809 + 0.91i 1 0.5809 0.91i 15 0.7883 1 0.01 17 18 La premiere sortie indique 7 nombres aleatoires compris entre 0 et 1, 19 a laquelle un polynome de degre est associe. La deuxieme sortie 0 contient des approximations numeriques des six racines de cette 1 poynomial qui sont stockees dans un vecteur de colonne. Page /10
Nous allons conrmer que le troisieme numero de la derniere 3 reponse est en eet une racine: 5 >> polyval(p,ans(3)) 7 ans = 8 9 9.1073e 01 +7.803e 017i 30 31 ans > 0 1.5 Détermination des coecients d'un polynôme à partir des ses racines En utilisant la commande poly, on peut à partir des racines d'un polynôme P pxq, déterminez ces coecients. Listing Exemple 1 >> a = [ 1 ] 3 a = 5 1 7 >> poly(a) 8 9 ans = 10 11 1 3 (c est a dire : x^ 3x +) 1. Exercice résolu Soit les polynômes : a Multiplier ces deux polynômes. b Additionner ces polynômes. c Soit c le polynôme obtenu après la multiplication de a et b, faire la division de c par b. d Tracer la courbe Résolution : Listing 5 Exemple 5 1 a Multiplication. On ecrit d'abord a et b comme des vecteurs unilignes. 3 On applique ensuite la fonction MATLAB conv. Page 3/10
5 >> a = [1 3 ]; 7 >> b = [1 9 1]; 8 9 >> c = conv(a,b) 10 11 Au niveau de MATLAB on obtient comme resultat: 1 13 >> c = 1 15 1 0 50 75 8 1 17 b Addition. Pour additionner deux polynomes,on ecrit 18 19 0 >> a = [1 3 ]; 1 >> b = [1 9 1]; 3 >> d = a + b 5 On obtient comme resultat: 7 8 >> d = 9 30 1 0 31 3 qui est le polynome: x^3+ x^+1 x+0 33 3 c Division de deux polynomes. On utilise la commande deconv. 35 On ecrit les instructions suivantes: 3 37 >> a = [1 3 ]; 38 39 >> b = [1 9 1]; 0 1 >> c = [1 0 50 75 8 ]; 3 >> [q,r] = deconv(c,b) 5 On obtient comme resultat: 7 >> q = 8 9 1 3 :represente le quotient de la division 50 51 5 >> r = 53 5 0 0 0 0 0 0 :represente le reste de la division Page /10
55 5 d Trace de la courbe 57 58 >> x = linspace( 1,3,100); 59 0 >> p = [1 7 10]; 1 >> v = polyval(p,x); 3 >> plot(x,v) 5 >> title('x^3 + x^ - 7x - 10'),grid 7 8 polyval evalue le polynome $p(x)$ aux dierentes valeurs de $x$ et place le resultat dans $v$. 9 Ce sont ces valeurs de $v$ en fonction de $x$ qui constituent la courbe qui represente le polynome $p(x)$. On obtient la courbe suivante. Figure 1 Tracé d'un polynôme Page 5/10
1.7 Extraction des pôles d'une fonction de transfert r Soit la fonction de transfert Hpxq dénie par : Hpxq npxq dpxq r1 x p 1 x p kpxq ou p 1, p,... désignent les pôles (les valeurs qui annullant le dénominateur. Exemple : Hpxq Listing Exemple 1 polynome du numerateur : 3 >> n =[ ] 5 n = 7 8 9 polynpme du denominateur : 10 11 >> d =[ 1 11 0 ] 1 13 d = 1 15 1 11 0 1 17 >> [ r, p, k ] = residue ( n, d) 18 19 r = 0 1 1.0000 3 3.0000 5 3.0000 7 1.0000 8 9 p = 30 31 3.0000 3 33.0000 3 35 1.0000 3 37 0 38 39 k = 0 1 [ ] x x 3 11x x Page /10
Donc H(x) devient : Hpxq x x 3 11x x 1 x 3 3 x 3 x 1 1 x Les Fonctions.1 Declaration des fonctions en Matlab An de déclarer une fonction sous Matlab, on a deux méthode possible : 1. Commande function : Son lexique est comme suit, en considérant ses entrées et sorties : function [out1, out,...] = myfun(in1, in,...) Exemple : Listing 7 Fonction Estimation GAUSSIENNNE 1 function E=EstimGauss(t) E=t.^( 0.5) exp( t/)/sqrt( pi) 3 end En deuxieme lieu, on enregistre cette fonction dans un chier M le nomme, 5 par exemple,estimgauss.m et pour l'utiliser, on fait appel a cette fonction par son nom: 7 Exemple: 8 >> t= 9 10 t = 11 1 13 1 >> EstimGauss(t) 15 1 E = 17 18 0.070. Commande inline : Son lexique est comme suit : INLINE(EXPR, ARG1, ARG,...), Ou EXPR représente la fonction à déclarer alors que ARG1,ARG repésentent les variables ou les entrées. Exemple : Listing 8 Fonction Sinusoidale 1 >> g = inline('sin(*pi*f + theta)', 'f', 'theta') 3 g = 5 Inline function: g(f,theta) = sin( pi f + theta) Page 7/10
. Intégration des fonctions en Matlab Calculer l'intégrale d'une fonction, c'est déterminer l'aire sous la courbe qui représente cette fonction. Cette surface est délimitée par deux droites parallèles à l'axe des ordonnées, passant par les abscisses x 0 et x 1 (voir gure). Figure Integrale=Surface Pour déterminer cette aire, MATLAB utilise une méthode de segmentation numérique basée sur plusieurs approches. Trois fonctions sont disponibles en MATLAB selon la méthode utilisée : trapz, quad, et quad8. trapz : utilise l'approche de la méthode des trapèzes qui consiste à découper l'aire totale à calculer en de petites surfaces ayant la forme de trapèzes.son lexique est le suivant : TRAPZ(Y,DIM) Listing 9 Fonction trapz 1 >> help trapz TRAPZ Trapezoidal numerical integration. 3 Z = TRAPZ(Y) computes an approximation of the integral of Y via the trapezoidal method (with unit spacing). To compute the integral 5 for spacing dierent from one, multiply Z by the spacing increment. 7 For vectors, TRAPZ(Y) is the integral of Y. For matrices, TRAPZ(Y) 8 is a row vector with the integral over each column. For N D 9 arrays, TRAPZ(Y) works across the rst non singleton dimension. 10 >> Y = [0 1 3 5] % vecteur 11 1 Y = 13 1 0 1 3 5 15 1 >> trapz(y) 17 18 ans = Page 8/10
19 0 1.5000 1 >> Y = [0 1 ; 3 5] % matrice 3 Y = 5 0 1 7 3 5 8 9 >> trapz(y) 30 31 ans = 3 33 1.5000.5000 3.5000 3 35 >> quad : est une forme adaptative de règle de Simpson. quad8 : est basée sur la loi de Newton..3 Diérentiation des fonctions en Matlab Graphiquement, la dérivée d'une fonction peut être dénie comme la pente de celle-ci à un point donné. La diérentiation numérique consiste à calculer la dérivée d'une fonction en un point x k : f 1 px k q f px kq f px k 1q x k x k 1 En Matlab on peut considérer l'utilisation de la commande di. Listing 10 Fonction di 1 >> help di DIFF Dierence and approximate derivative. 3 DIFF(X), for a vector X, is [X() X(1) X(3) X()... X(n) X(n 1)]. DIFF(X), for a matrix X, is the matrix of row dierences, 5 [X(:n,:) X(1:n 1,:)]. >> X = [3 7 5 0 9 ] % vecteur 7 8 X = 9 10 3 7 5 0 9 11 1 >> di(x) %[7 3 5 7 0 5 9 0 9] 13 Page 9/10
1 ans = 15 1 5 9 7 17 18 >> X = [3 7 5 ;0 9 ] % matrice 19 0 X = 1 3 7 5 3 0 9 5 >> di(x) %[0 3 9 7 5] 7 ans = 8 9 3 3 3 Reference 1- Polynomials and MATLAB : http://homepages.udayton.edu/~hardierc/ ece03/polynomials%0and%0matlab.htm - Polynomials in Matlab : http://www.math.colostate.edu/~strickla/m30/ pol.html 3- Matlab - Calcul sur les polynômes : http://fabrice.sincere.pagesperso-orange. fr/matlab/matlab_polynome.htm - Chapitre II : POLYNÔMES : http://w3.gel.ulaval.ca/~fortier/mat1991/ polynomes.html 5- Chapitre III : INTÉGRALES NUMÉRIQUES : http://w3.gel.ulaval.ca/ ~fortier/mat1991/integrale.html - Chapitre IV : DÉRIVÉES NUMÉRIQUES : http://w3.gel.ulaval.ca/ ~fortier/mat1991/differentiel.html Page 10/10