12.07.2015 Views

Cours d'initation à Matlab - Université Jean Monnet

Cours d'initation à Matlab - Université Jean Monnet

Cours d'initation à Matlab - Université Jean Monnet

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Université <strong>Jean</strong> <strong>Monnet</strong> Saint-ÉtienneIntroduction à <strong>Matlab</strong>Introduction à <strong>Matlab</strong>MASTER OIVEmmanuel Marin - F 155emmanuel.marin@univ-st-etienne.frAnnée universitaire 2004 – 2005Table des matières1. Introduction ______________________________________________________________ 32. Démarrer et quitter MATLAB _______________________________________________ 33. Matrices et MATLAB ______________________________________________________ 43-1. Génération de vecteurs et de sous-matrices ___________________________________________53-2. Sous-ensemble d’une matrice : ____________________________________________________53-3. Grandeur, norme ou dimension et longueur___________________________________________54. Variables prédéfinies _______________________________________________________ 54-1. Liste des variables : _____________________________________________________________65. Opérateurs arithmétiques ___________________________________________________ 66. Fonctions mathématiques ___________________________________________________ 66-1. Fonctions mathématiques spéciales _________________________________________________76-2. Fonctions applicables aux nombres complexes ________________________________________76-3. Changements de coordonnées _____________________________________________________77. Aide _____________________________________________________________________ 78. Sauvegarde et chargement___________________________________________________ 89. Commandes système _______________________________________________________ 910. Opérations matricielles ___________________________________________________ 911. Opérateurs booléens et logiques ___________________________________________ 1011-1. Opérateurs relationnels__________________________________________________________1011-2. Opérateurs logiques ____________________________________________________________1011-3. Opérateurs Scalaires____________________________________________________________1112. Matrices particulières ___________________________________________________ 1113. Chaînes de caractères ___________________________________________________ 1214. Analyse de données _____________________________________________________ 1314-1. Sommes produits et différences ___________________________________________________1314-2. Statistiques ___________________________________________________________________1415. Systèmes linéaires et calcul matriciel _______________________________________ 1415-1. Déterminant, inverse et rang d’uns système _________________________________________1415-2. Résolution des systèmes linéaires et factorisation LU__________________________________1415-3. Valeurs propres et vecteurs propres ________________________________________________1416. Représentations graphiques ______________________________________________ 1416-1. Graphiques à deux dimensions____________________________________________________1516-2. Autres systèmes de coordonnées __________________________________________________1516-3. Contrôle du graphique __________________________________________________________1516-4. Graphiques à trois dimensions ____________________________________________________1617. Analyse des fonctions____________________________________________________ 1618. Calcul intégral et E.D.O. _________________________________________________ 1719. Programmation avec MATLAB ___________________________________________ 1819-1.19-2.Instructions conditionnelles ______________________________________________________18Boucles ______________________________________________________________________1820. Interfaces graphiques ___________________________________________________ 1921. Fichiers .m et exemples __________________________________________________ 19Master OIV - 2


Université <strong>Jean</strong> <strong>Monnet</strong> Saint-ÉtienneIntroduction à <strong>Matlab</strong>Université <strong>Jean</strong> <strong>Monnet</strong> Saint-ÉtienneIntroduction à <strong>Matlab</strong>1. IntroductionDe nombreux logiciels interactifs de calcul scientifique existent et sontdisponibles sur le marché. Parmi ceux-ci, MATLAB 1 est un produit trèsintéressant pour développer des calculs numériques. Il intègre un environnementgraphique et ses atouts principaux sont :‣ La surprenante simplicité d’utilisation provenant de lavectorisation,‣ La puissance de calcul,‣ La précision des résultats.MATLAB est un outil de base enrichi par ses nombreuses bibliothèques(”toolboxes”) qui évitent, dans de nombreux cas, de programmer les techniquesnumériques les plus courantes. Cependant pour les développements spécifiques, iloffre les mêmes possibilités de programmation structurée que les langagesscientifiques courants (C, FORTRAN...). Ecrit en langage C optimisé, le code deMATLAB comporte également des blocs spécifiques écrits en langage assembleurpour obtenir des performances améliorées.La disponibilité de MATLAB est remarquable puisqu’il peut être exécuté surn’importe quel type d’ordinateur utilisé par les scientifiques : PC, Macintosh,Station de travail, gros ordinateurs sous UNIX, etc ...Les possibilités de ce logiciel sont considérables et dans une introduction àMATLAB il s’agit de présenter quelques éléments caractéristiques dans le cadred’un cours particulier. Une utilisation régulière et un approfondissementprogressif de la connaissance du logiciel sont nécessaires pour une utilisationprofessionnelle de ce produit.2. Démarrer et quitterMATLABDans l’environnement Windows cliquer deux fois surl’icône du logiciel qui se trouve probablement dans ledossier MATLAB. Généralement, comme pour toutautre logiciel, il suffit d'aller :1. Menu démarrer2. Programmes3. <strong>Matlab</strong>4. <strong>Matlab</strong>1 MATLAB est une marque déposée par The MathWorks, Inc.Utilisez les menus déroulants ou les commandes raccourcies courantes pourquitter : fichier/quitter ou alt F4.MATLAB peut être utilisé en mode interactif, comme une calculette classique ouen mode programmation. Dans ce dernier cas un programme (encore appeléscript) est écrit au moyen d’un éditeur de texte quelconque ou l'éditeur de<strong>Matlab</strong>. Il est enregistré dans un fichier dont le nom se termine par l’extension”.m”.Dans l’environnement UNIX, il suffit de tapermatlab pour démarrerUne fenêtre de commande de l’environnement MATLAB est ouverte et permetd’écrire des commandes pour exécuter des calculs ou encore pour lancer desprogrammes.Un message invite à des démonstrations du produit et de l’aide est disponible enligne en tapant help. Des menus permettent de sélectionner les renseignementsdésirés.Pour quitter MATLAB, il suffit de taper la commande : exit3. Matrices et MATLABMATLAB signifie Matrix Laboratory et il traite des données sous des forme trèsdiverses (scalaires, complexes, vecteurs, matrices) avec bien souvent les mêmesopérateurs et des fonctions désignées par le même nom (polymorphisme).La même expression c=a*b, par exemple, dépend donc entièrement des types dea et b.⎡12 3 4La variable A étant une matrice, nous pouvons la rentrer par : ⎢>> A=[1 2 3 4 5 ; 0 1 2 3 9 ; 2 1 4 5 3 ; 8 7 6 5 4] (entrée) ⎢0 1 2 3A =⎢21 4 5A=⎢1 2 3 4 5⎣87 6 50 1 2 3 92 1 4 5 38 7 6 5 4A est une variable mémorisée utilisable par la suite. Elle s’affiche à l’écran.L’espace sépare les éléments d’une même ligne. Le ; sépare les lignes.⎡12Autre façon d’entrer une matrice :B = ⎢>> B=[1 2 3⎣454 5 6] ;Le ; à la fin de cette expression évite l’affichage de B.La transposée de B est B’>> C=B’C=5⎤9⎥⎥3⎥⎥4⎦3 ⎤⎥6⎦Master OIV - 3Master OIV - 4


Université <strong>Jean</strong> <strong>Monnet</strong> Saint-ÉtienneIntroduction à <strong>Matlab</strong>Université <strong>Jean</strong> <strong>Monnet</strong> Saint-ÉtienneIntroduction à <strong>Matlab</strong>1 42 53 63-1. Génération de vecteurs et de sous-matricesLes : sont utilisés pour représenter une série de valeurs.i :k Séquence de nombres de i à k par pas de 1. i


Université <strong>Jean</strong> <strong>Monnet</strong> Saint-ÉtienneIntroduction à <strong>Matlab</strong>Université <strong>Jean</strong> <strong>Monnet</strong> Saint-ÉtienneIntroduction à <strong>Matlab</strong>sin(x)cos(x)tan(x)cot(x)sec(x)A voir avec l’aideFonctionshyperboliquessinh(x) ...x en rad1/cos(x)Fonctionshyperboliquesinverses asinh(x) ...asin(x)acos(x)atan(x)atan2(x,y)acot(x)Valeurs arrondies ...round(x)fix(x)floor(x)6-1. Fonctions mathématiques spécialesCe sont par exemple les fonctionslegendre(n, x) → fonctions de Legendre.besselj(n, x) ou besselk(n, x) → fonctions de Bessel J n (x) et K n (x)gamma(x) → fonctions Γ n (x)erf(x) → function erreur6-2. Fonctions applicables aux nombres complexesSoit z=x+yi=re θireal(z) → ximag(z) → yabs(z) →rconj(z) → zangle(z) →θExemple :z=1+2i ;x=real(z), y=imag(z), r=abs(z), zc=conj(z), th=angle(z) ;m=[x y r zc th] ' % Le ' donne un vecteur colonne. Préciser !6-3. Changements de coordonnéescartésiennes → polairespolaires → cartésiennes[th, r]=cart2pol(x, y) [x, y]=pol2cart(th, r)arc en radatan(x/y), [-π, +π]ceil(x)gcd(x, y)lcm(x, y)rat(x)cartésiennes →sphériquessphériques → cartésiennes[al, th, r]=catr2sph(x, y, z) [x, y, z]=sph2cart(al, th, r)7. AideL’aide en ligne est très pratique et donne des renseignements clairs.helpSélectionner une rubrique ensuitehelp commandEfficace pour rectifierhelp dirdemoDidacticielsexpoinfowhatsnewLors des changements de version8. Sauvegarde et chargementsaveSauvegarde les variables dans le fichier binairesave fichier " fichier.matsave fichier.dat v1 v2 –ascii Sauvegarde les variables au format asciiloadLecture d'un fichier binaireload fichierload fichier.dat v1 v2Lecture d’un fichier de données :supposons que A.dat contienne la matrice 1 4 54 2 9>> load A.dat, AA=1 4 54 2 9Nous remarquons que la variable prend le nom du fichier (sans l’extension). Onpeut utiliser des fonctions de lecture et d’écriture plus élaborées compatiblesavec C ou FORTRAN, moyennant les vérifications d’ordre de lecture et d’écrituredes matrices en mémoire.Il existe d’autres fonctions pour lire et écrire dans un fichier :‣ fread et fwrite pour lire et écrire des fichiers binaires.‣ wk1read et wk1write pour lire et écrire des fichiers au formatwk1 (Lotus et excel).‣ dlmread et dlmwrite pour lire et écrire des fichiers dont ledélimiteur est quelconque.Exemple :Sauvegarde dans un fichier texte de la matrice M. Les valeurs de M sontséparées par le délimiteur.dlmwrite ('NomDufichier','Delimiteur',M)M=dlmread('NomDufichier','Delimiteur')Master OIV - 7Master OIV - 8


Université <strong>Jean</strong> <strong>Monnet</strong> Saint-ÉtienneIntroduction à <strong>Matlab</strong>Université <strong>Jean</strong> <strong>Monnet</strong> Saint-ÉtienneIntroduction à <strong>Matlab</strong>9. Commandes systèmeLes commandes système ressemblent en partie à celles d’UNIX avec desvariantes.Lancer help commande pour avoir plus d’informations sur la commande à utiliseret pour avoir des précisions sur les options éventuelles.whatListe les fichiers MATLAB dans un répertoire ou un sousrépertoiredirListe des fichiers. Utilisation de chemin (path) et emploi decaractères génériques (wilcards)lsListe de fichiers. Format et présentation différentspwdRépertoire de travaildelete f Supprime le fichier fcdDéplacement dans l’arborescence des répertoirespathAffiche les chemins d’accés décrits pour MATLABtype f Pour afficher f.m (préciser le suffixe : f. ; f.dat ...)dbtype f Ajoute le numéro de ligne à l’affichagedbtype f l1 ln Limite l’affichage entre les lignes l1 et lnlasterrInscrit à nouveau le dernier message d’erreur! Insérer à la suite de ! une commande du systèmed’exploitation10. Opérations matriciellesLes opérations matricielles élémentaires addition, soustraction portent sur desmatrices de mêmes tailles. Il est également possible d’additionner ou desoustraire une matrice et un scalaire. Le résultat est une matrice de mêmedimension dans laquelle chaque élément subit l’opération.La multiplication C=AB est possible si le nombre de colonnes de A est égal aunombre de lignes de B.Exemple : Définir a et b, effectuer c=a*b et vérifier la taille par size(c).dot(x, y) Produit scalaire (dot product)dot(A, B) A et B sont des matrices m×n et le résultat est un vecteur delongueur n.cross(x, y) Produit vectoriel des vecteurs x et y.cross(A, B) Donne une matrice 3×n et chaque colonne est le produitvectoriel des matrices A et B de dimension 3×n.kron(A, B)Produit tensoriel de A et BLa division matricielle évite d’avoir à écrire la matrice inverse qui s’exprime A -1 =inv(A)Deux cas sont considérés ici, lorsque A est une matrice carrée :Ax=b x=A -1 b x et b sont des matrices colonne x=A\bxA=b x=bA -1 x et b sont des matrices ligne x=b/A=(A’\b’)’11. Opérateurs booléens et logiques11-1. Opérateurs relationnelsDans une expression, la plus haute priorité est donnée aux opérateursarithmétiques. Les opérateurs relationnels viennent ensuite. Utiliser desparenthèses pour adapter cette règle ou pour améliorer la lisibilité desexpressions.Le nombre d’opérateurs de relation est limité à 6 :< >= == égal à ~= non égal àIls permettent de comparer des matrices de même dimension. Il permettentégalement la comparaison d’un scalaire et d’une matrice. Chaque élément estcomparé avec le scalaire.Le résultat est vrai ou faux, ce qui se traduit par des 1 ou des 0 dans la matricerésultat.11-2. Opérateurs logiquesCes opérateurs ont la priorité est la plus faible. Ils agissent sur des matrices. Ilest également possible de comparer un scalaire avec une matrice. Un élément nulcorrespond à false (0), et tous les autres éléments positifs ou négatifscorrespondent tous à true (1).& et| ou~ notxor ou exclusifLes matrices à comparer doivent avoir même dimension. Les éléments de lamatrice résultante de même dimension sont des 0 ou des 1.A & B Deux éléments correspondants non nuls donne 1. C’est 0 autrement.A | B Deux éléments correspondants nuls donne 0. C’est 1 dans les autrescas.~A Retourne l’élément 1 seulement si l’élément de A correspondant estnul.Master OIV - 9Master OIV - 10


Université <strong>Jean</strong> <strong>Monnet</strong> Saint-ÉtienneIntroduction à <strong>Matlab</strong>Université <strong>Jean</strong> <strong>Monnet</strong> Saint-ÉtienneIntroduction à <strong>Matlab</strong>xor(A, B)Retourne 1 seulement si un seul des éléments est non nul.11-3. Opérateurs ScalairesOn appelle ainsi les opérations entre éléments correspondant de deux matrices.Ces opérations permettent d'effectuer des calculs sur l'ensemble des élémentsde deux tableaux. Les opérations scalaires sont notées par un point suivi du signeopératoire. Dans le cas de deux matrices, qui doivent avoir les mêmesdimensions, l'opération se fait élément par élément. Si l'un des deux opérateursest un scalaire, l'opération scalaire ou matricielle donne le même résultat.diag(x)diag(A, k)diag(x, k)Donne une matrice carrée diagonale contenant les élémentsdu vect. x.Retourne une colonne contenant les éléments de la k èmediagonale de A.Donne une matrice carrée de taille (n+abs(k))x(n+abs(k))contenant les éléments du vecteur x de longueur n sur la k èmediagonale.Observez le résultat des quelques exemples d'opérations scalaires etmatricielles suivantes (certaines sont impossibles).Soient deux vecteurs colonnes x=[1 2 3]' et y=[4 5 6]'x+yx.*yx'*yx^2x.^2x\yx.\yx/yx./yx.^2(x*y')^212. Matrices particulièresPour générer des matrices particulières il est parfois utile de partir de matricescomposées d’éléments uniformes : 1 ou 0.ones(n) Matrice nxn de 1ones(m, n) Matrice mxn de 1zeros(n) Matrice nxn de 0zeros(m, n) Matrice mxn de 0eye(n) Matrice identité nxneye(m, n) Matrice identité mxnUne matrice de 1 de même dimension que la matrice M s’obtient par :ones(size(M))diag(A) Retourne une colonne contenant les éléments diagonaux de A.Exemple pour construire la matrice ci-contre :A=5*eye(5)+diag(ones(1,1),1)+diag(ones(4,1),-1) ;⎡5⎢1⎢A = ⎢0⎢⎢0⎢⎣013. Chaînes de caractèresUne chaîne (string) est définie par des apostrophes.mon_text=’**Ceci est une chaine de 40 caracteres**’verif=length(mon_texte)verif=40Ce texte est mémorisé sous la forme d’un vecteur ligne dans lequel chaqueélément contient le code ASCII du caractère. L’affichage à l’écran donne letexte. Chaque élément est accessible séparément. Ainsi, mon_texte(3)=’c’supprime la majuscule.Les chaînes de caractères se comportent comme les vecteurs. Pour affichermon_text, il suffit d’écrire mon_text, comme pour une variable. Mais il est pluscommode d’utiliser la fonction d’affichage disp, par exemple dans un fichier .m.disp(A)1510001510input(str)input(str, ’s’)001510⎤0⎥⎥0⎥⎥1⎥5⎥⎦Affiche le contenu de la matrice A. Si A est une chaîne, lachaîne est écrite.Affiche le texte de str et attend une valeurAffiche le texte de str et attend une chaine de caractères(nom, instruction...)Master OIV - 11Master OIV - 12


Université <strong>Jean</strong> <strong>Monnet</strong> Saint-ÉtienneIntroduction à <strong>Matlab</strong>Université <strong>Jean</strong> <strong>Monnet</strong> Saint-ÉtienneIntroduction à <strong>Matlab</strong>Exemples :n=input(’Donner un nombre : ’)Donner un nombre : 5.123n=5.1230A=input(’Entrer une matrice ligne parligne : ’) ;Entrer une matrice ligne par ligne : [1 :3 ;4 7 8]A=input(’Entrer une matrice : ’) ;Entrer une matrice : rand(4)*hilb(4)diff(A) Les différences sont calculées sur chaque colonne de A.diff(x, k) Donne la k ième différence. Si k=2 c’est diff(diff(x))14-2. Statistiquesmean(x) Valeur moyenne arithmétiquemedian(x) Valeur médianestd(x) Ecart typeVoir aussi : mean(A), median(A), std(A)[m n]=input(’Donner la dimension deA : ’) ;Donner la dimension de A : size(A)login=input(’Quel est votre login name ? ’,’s’) ;Quel est votre login name ? tartampionInsérer l’instruction pause pour le contrôle de l’exécution d’un fichier .mpauseSuspend l’exécution du script qui reprend en frappant unetouche.pause(n) Suspend l’exécution du script pendant n secondes.14. Analyse de donnéesDans cette partie, A et B sont des matrices et x est un vecteur.Maximum et minimummax(x) Donne le plus grand élément.Si x est complexe, le résultat correspond à max(abs(x))max(A) Donne un vecteur ligne avec les maxima de chaque colonne.15. Systèmes linéaires et calcul matricielLes résolution des équations linéaires interviennent dans presque toutes lesapplications. Cette résolution se fait au moyen de l’opérateur \.15-1. Déterminant, inverse et rang d’uns systèmedet(A) Donne le déterminant associé à la matrice carrée A.rank(A) Nombre de lignes et colonnes indépendantes de Ainv(A) Inverse de A. Si la matrice est singulière, message d’erreurtrace(A) Somme des éléments diagonaux15-2. Résolution des systèmes linéaires et factorisation LUrref(A)Donne la forme réduite de A selon l’élimination de Gauss-Jordan[L, U]=lu(A) Factorisation LU.chol(A) Factorisation de Cholesky[y, p]=max(A)max(A, B)y et p sont deux vecteurs ligne ; y contient les maxima et ples positions.Donne une matrice (même dimension) avec partout l’élémentmaximum15-3. Valeurs propres et vecteurs propresLes commandes de MATLAB pour le calcul des valeurs propres et des vecteurspropres sont efficaces. Soit A une matrice carrée. Il s’agit de trouver lesvaleurs propres λ telles que Ax=λx. Au scalaire λ correspond le vecteur propre x.14-1. Sommes produits et différencessum(x) Donne la somme des composantes du vecteur xsum(A) Vecteur ligne avec la somme des colonnescumsum(x) Somme cumulative (le 2 ème élément est la somme des deuxpremiers ...)cumsum(A) Même principe sur chaque colonne de Aprod(x) calcule le produit des éléments de x ; même variantes quepour sumdiff(x) Donne un vecteur de longueur réduite d’une unité avec [x 2 -x 1...x n -x n-1 ]eig(A) Retourne un vecteur contenant les valeurs propres de A.[X, D]=eig(A) D est une matrice diagonale contenant les valeurs propres deA. X est une matrice dont les colonnes sont le vecteurspropres de A.16. Représentations graphiquesLes commandes de représentations graphiques en deux ou trois dimensions deMATLAB sont nombreuses et nous allons répertorier les plus courantes d’entreelles. Pour en savoir plus, découvrir les programmes de démonstration.Master OIV - 13Master OIV - 14


Université <strong>Jean</strong> <strong>Monnet</strong> Saint-ÉtienneIntroduction à <strong>Matlab</strong>Université <strong>Jean</strong> <strong>Monnet</strong> Saint-ÉtienneIntroduction à <strong>Matlab</strong>16-1. Graphiques à deux dimensionsLa commande de base est plot. Elle peut comporter des arguments de typesdifférents, pour les coordonnées, complétés par des spécifications de styles etde couleur, rassemblées dans une chaîne de caractères.plot(x1, y1, ...) Représente le vecteur y1 en fonction du vecteur x1.plot(y)Représente le vecteur y en fonction du numérod’ordre.plot(z)Représentation (x, y) de la partie imag. en fonction dela partie réelle.plot(A)Représente les colonnes de A en fonction de l’indicede la ligne.plot(x, A)Représente les colonnes de A (mxn) en fonction de x(longueur m).plot(x1, y1 , str1, ...) Mêmes commandes avec en plus les indications destyle et de couleur. Les arguments x1, y1 ou x1, y1,str1 sont cumulables : x2, y2 ...fplot(fkn, lim, str) Tracer une fonction standard ou une fonctionutilisateur (.m). lim=[a b]Type point Type ligne Couleur. dot* starx lettre xo lettre o+ plus- Trait continu-- Trait pointillé-. Trait mixte: Ligne pointée16-2. Autres systèmes de coordonnéessemilog(x, y) plot(log 10 (x), y)semiloy(x, y) plot(x, log 10 (y))loglog(x, y) plot(log 10 (x), log 10 (y))y yellow c cyang green w whitem magenta r redb blue k black16-3. Contrôle du graphiqueclf Efface la fenêtre graphiqueclc Efface la fenêtre de commandehold on Maintient la fenêtre graphique - Superposition possible.hold off Libère la fenêtre graphique.hold Permet de passer d’un mode à l’autre.subplot(m, n, p) Permet de définir mxn emplacements de graphiquesnumérotés p.Voir les commandes supplémentaires concernant les axes (axis), le quadrillage(grid), le zoom. Voir également les commandes pour les textes associés tels quetitre, label, légende :title, xlabel, ylabel, text, legend.Pour animer une représentation graphique, utiliser la fonction comet : comet(x,y).16-4. Graphiques à trois dimensionsLa représentation graphique en trois dimensions apporte des facilités devisualisation globales dès que z est fonction de x et y. Par exemple pour lesdiagrammes (P, V, T) deux paramètres peuvent varier simultanément. L’influencesur le troisième s’observe directement. La commande plot qui devient plot3 estutilisée dans ce cas. De façon plus systématique, la commande mesh avec toutesses variantes permet une représentation filaire. La commande surf et toutes sesoptions améliore la représentation de surfaces dans l’espace. Voyons quelquescommandes de base :plot3(x, y, z) Graphe en trois dimensions. Les vecteurs x, y et z ontmême longueur.comet3(x, y, z) Représentation 3D animée.mesh(Z)Z est un matrice (grille x, y) dont les valeurs sontreportées suivant zrot90(A)La matrice A subit une rotation de 90°. Très utilisé avecmesh.surf(X, Y, Z, C) X et Y : vecteurs de longueur m et n. Z : matrice dedimension (m x n). C est une matrice pour la couleur. Surftrace une surface définie par (x i , y j , z ij ).La commande view est utilisée pour changer le point de vue sur la représentation,les angles de vue (azimut dans le plan x, y et élévation) ou encore la perspective.17. Analyse des fonctionsMATLAB possède des commandes puissantes et pratiques pour le traitement despolynômes, l’analyse de fonction (recherche de zéros, de minima), l’interpolationet l’ajustement d’ensemble de données.Un polynôme de degré n consiste en un vecteur ligne de longueur n+1, p=[a n a n-1 ...a 0 ] interprété comme : p(x)=a n x n + a n-1 x n-1 + ... + a 1 x+a 0.polyval(p, x)Evalue le polynôme défini par p pour x scalaire, vecteur oumatrice.Master OIV - 15Master OIV - 16


Université <strong>Jean</strong> <strong>Monnet</strong> Saint-ÉtienneIntroduction à <strong>Matlab</strong>Université <strong>Jean</strong> <strong>Monnet</strong> Saint-ÉtienneIntroduction à <strong>Matlab</strong>poly(x)Donne le polynôme dont les racines sont données par levecteur x.roots(p)Donne les racines de p(x)=0. Les racines peuvent êtrecomplexes.fzero(fcn, x0) Résoud l’équation donnée par la chaîne fcn désignant le nomde la fonction au voisinage de x0.fmin(fcn, x1, x2) Donne la valeur minimum d’une fonction (chaîne fcn) entrex1 et x2.Plusieurs fonctions d’interpolation sont disponibles : interp1, interp2 ... spline.La fonction polfit permet un ajustement polynomial de données.En analyse des signaux, la fonction fft est disponible avec plusieurs formes.18. Calcul intégral et E.D.O.Différentes méthodes numériques sont proposées trouver la solution d’uneintégrale définie ou pour intégrer une équation différentielle ordinaire. Leséquations différentielles partielles sont traitées par MATLAB au moyen d’unebibliothèque particulière (Optimization and Partial Differential EquationToolbox)Intégration par la méthode des trapèzes et par la méthode de Simpsontrapz(x, y) Intégrale de y en fonction de x. Les vecteurs x et y ont mêmelongueur.trapz(y) Intégrale de y en fonction d’une échelle de pas 1.trapz(x, A) Intégrale de chaque colonne de A en fonction de x. Donne unvecteur.quad(fcn, a, b) La chaîne fcn contient une fonction prédéfinie de MATLAB oule nom d’un fichier .m contenant la fonction à intégrer surl’intervalle [a, b]MATLAB met en œuvre les méthodes de Runge-Kutta-Fehlberg pour résoudreles EDO.[t, X]=ode23(str, t0, tt, x0)Calcule la solution d’une EDO ou d’un système d’EDO donné par lachaîne str (fichier .m). La ou les solutions sont contenues dansles colonnes de la matrice X en fonction du vecteur t(abscisses). Les solutions sont calculées de t0 à tt avec commevaleur initiale x0. L’approximation a une erreur relative inférieurou égale à 10 -3 .[t, X]=ode45(str, t0, tt, x0)Calcule la solution d’une EDO ou d’un système d’EDO.L’approximation a une erreur relative inférieur ou égale à 10 -6 .19. Programmation avec MATLABPlusieurs commandes permettent de contrôler l’exécution des instructions.MATLAB peut être vu comme un langage de programmation de haut niveau.19-1. Instructions conditionnellesif expression logiqueinstructionsendif expression logiqueinstructions 1else Voir également d’autres formesinstructions 2 plus complexes avec elseifend<strong>Matlab</strong> nous permet comme en C d'utiliser la structure switch-case :switch expressioncase case_expr.instructionscase {case_expr1, case_expr2, case_expr3, …}instructions…otherwiseinstructionsend19-2. BouclesDeux commandes sont utilisées pour répéter l’exécution d’instructions : for etwhile.La syntaxe de la boucle for est :for variable = expressioninstructionsendexpression est usuellement de la forme i :j :k ou i :j.Les boucles for peuvent être emboitées.La syntaxe de la boucle while est :while expression logiqueinstructionsendMaster OIV - 17Master OIV - 18


Université <strong>Jean</strong> <strong>Monnet</strong> Saint-ÉtienneIntroduction à <strong>Matlab</strong>Université <strong>Jean</strong> <strong>Monnet</strong> Saint-ÉtienneIntroduction à <strong>Matlab</strong>20. Interfaces graphiques<strong>Matlab</strong> offre la possibilité de réaliser des Interfaces Graphiques (ou GUIGraphical User Interface) très facilement à l’aide de deux fonctions de bases :Uicontrol : pour créer dans la fenêtre des boutons, des zonesd’affichages, des graphiques, etc ...Uimenu : pour créer des menus supplémentaires à ceux de bases :Fichier (File), Edition (Edit), etc ...La conception de ces interfaces est rendue encore plus simple grâce à la fonction“GUI Layout Tool” du menu fichier.Les instructions “Set” et “Get” sont très importantes pour la gestion del’affichage.La seule difficulté réside dans la récupération de la variable (bouton, menupopup, …) pour la modifier ou récupérer la valeur.21. Fichiers .m et exemplesLes fichiers .m comportent des fichiers de commandes ou encore des fonctions(propres à MATLAB ou définies par l’utilisateur).Exemple : utilisation d’une matrice appelée cal⎡0.1cal = ⎢⎣ 10.230.57115231565101272025550511100 ⎤1023⎥⎦Inscrivons cette matrice dans le ficher de commande calcod.m écrit avecl'éditeur de texte de matlab.% calcod.m : Matricecal=[0.1 0.2 0.5 1 2 5 10 20 50 1001 3 7 15 31 65 127 255 511 1023] ;Entrer dans l’ordre les commandes suivantes et interpréter :>> clear >> calcod(2, :)>> who >> calcod( :)>> calcod >> size(calcod)>> who >> length(calcod)Exemple de fonction utilisateurLa méthode utilisée pour écrire une fonction est la suivante :a. La première ligne débute par le mot function suivi de l’argument desortie (résultats), du nom de la fonction et des paramètres formelsde la fonction placés entre parenthèse.b. le nom du fichier et le nom de la fonction sont identiques.c. Une fonction peut avoir zéro, un ou plusieurs arguments de sortie etparamètres d’entrée.d. L’appel de la fonction se fait avec des arguments réels désignés pardes noms indépendants qui peuvent être différents des noms desparamètres formels de la fonction.e. Les commentaires, avec %, situés après la première ligne sontaffichés avec help.⎪⎧−x y = x.ln(x) − 5.e23+ 2.sin(x ) pour x > 0Soit à calculer la fonction : ⎨ ⎪⎩ y = 0 si x > x1=[-10 :0.1 :10] ;>> f1=lnesin(x1) ;>> plot(x1, f1) ;>> help lnesinTracer les fonctions sin(2x), sin x 2 et sin 2 x sur l’intervalle 0, 3πFichier sin123.mx=linspace(0, 3*pi) ; % Vecteur xy1=sin(2*x) ; % Vecteur y1 avec le sinus de 2xy2=sin(x.^2) ; % Vecteur y2 avec le sinus de x^2y3=(sin(x)).^2 ; % Vecteur y3plot(x, y1, x, y2, x, y3) ; % Trois courbes sur le même axe.Lancer l’exécution en écrivant :>> sin123Analyse d’une fonction appelée fonc avec les commandes fplot, fzero, fminx 3Soit y=f(x)= (x − 1)e2− 5sin(3x ) pour x compris entre -1,5 et 1,5, bornescomprises.Fichier fonc.m :function y=fonc(x)Master OIV - 19Master OIV - 20


Université <strong>Jean</strong> <strong>Monnet</strong> Saint-ÉtienneIntroduction à <strong>Matlab</strong>% fonc.m contient une fonction à analysery=(x-1).*exp(x.^2)-5*sin(3*x.^3) ;Fichier foppo.m :function y=foppo(x)% foppo.m donne la fonction opposée de la fonction précédentey=-fonc(x) ;Fichier ana.m :% ana.m permet d'analyser une fonction avec fplot, fzero, fmin (pages 13 et 15)fplot('fonc', [-1.5 1.5]);% Racine de la fonction au voisinage de 1.2r1=fzero('fonc', 1.2);% Position du minimum de la fonction pour x compris entre 0.5 et 1p1=fmin('fonc', 0.5, 1);m1=fonc(p1);disp('Position du minimum entre 0.5 et 1');[p1 m1]% Position du maximum de la fonction pour x compris entre -1 et -0.5p2=fmin('foppo', -1, -0.5);M2=fonc(p2);disp('Position du maximum entre -1 et -0.5');[p2 M2]Système linéaire Ax=bA=[3 1 -1 ; 1 2 4 ; -1 4 5] ; b=[3.6 ; 2.1 ; -1.4] ;x=A\bMaster OIV - 21

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!