Vous êtes sur la page 1sur 43

Chapitre 1 ` Initiation a Matlab

M ATLAB est un logiciel de calcul et de visualisation, dont les entit s de base sont des e matrices : M ATLAB est une abr viation de Matrix Laboratory. e M ATLAB est un langage interpr t : il propose des facilit s de programmation et de viee e sualisation, ainsi quun grand nombre de fonctions r alisant diverses m thodes num riques. e e e La meilleure facon dapprendre a utiliser ce logiciel est de lutiliser vous m me, en ` e faisant des essais, en commettant des erreurs et en essayant de comprendre les messages derreur qui vous seront renvoy s. Ces messages sont en anglais ! e Ce document est destin a vous aider pour quelques premiers pas avec M ATLAB. Les e` sections et sous-sections signal es par (*) donnent des compl ments qui pourront vous e e etre utiles a lavenir, mais peuvent etre r serv es pour une lecture ult rieure. ` e e e

1.1 Pour commencer


Nos salles de TP utilisent un environnemment Linux. Pour acc der au logiciel M ATe LAB, vous avez plusieurs possibilit s : e - Vous pouvez utiliser les ic nes du menu d roulant de KDE, et suivre les arboreso e censes a partir du menu CRI. Vous aurez acc` s a plusieurs versions de M ATLAB. ` e ` Les sessions compl` tes mettent en uvre une machine virtuelle java. Elles peuvent e se r v ler un peu trop lourdes lorsquil y a de nombreux utilisateurs. Elles ouvrent e e une fen tre du type de celle repr sent e a la gure 1.1. e e e ` - Vous pouvez acc der aux m mes versions a partir dun terminal. Cest cette facon e e ` de proc der que nous vous recommandons. Elle vous permet en effet de mieux e organiser votre travail. Vous devez : ouvrir un terminal (icne sur la barre de t hes de votre ecran), c cr er un r pertoire pour le TP en cours. Aujourdhui, vous aller cr er le r pertoire e e e e InitMatlab en entrant la commande : mkdir InitMatlab vous rendre dans ce r pertoire : e cd InitMatlab lancer par exemple une session compl` te : e 1

` CHAPITRE 1. INITIATION A MATLAB


matlab -jvm

F IG . 1.1 Exemple de session matlab avec le support java (matlab -jvm). Vous reconnatrez votre fen tre de travail par le prompt : e >> Vous pourrez quitter M ATLAB en tapant dans cette fen tre : e >> quit Dans la suite de cette s ance, vous etes invit s a tester les instructions pr sent es en e e ` e e les tapant apr` s le prompt. Les instructions et variables M ATLAB sont donn es dans une e e typographie de machine a ecrire. Les op rations math matiques et valeurs repr sent es ` e e e e par ces variables sont ecrites en italiques. Un certain nombre de chiers vous sont fournis. Vous pourrez les r cup rer en utilisant e e un navigateur et en vous rendant a ladresse : ` http ://www-gmm.insa-toulouse.fr/huard/InitMatlab/

1.2 Utiliser les aides en ligne


1.2.1 La recherche par mot clef
La commande lookfor est une commande de recherche par mot clef. Elle permet de retrouver toutes les fonctions M ATLAB dont les commentaires introductifs contient une chaine de caract` res donn s. e e

1.2. UTILISER LES AIDES EN LIGNE

Si, par exemple, je cherche une fonction permettant de tracer un histogramme, je peux entrer linstruction : lookfor histogram En r ponse, jobtiens la liste suivante : e HIST Histogram. HISTC Histogram count. ROSE Angle histogram plot. On utilise ensuite la commande help pour plus de pr cisions. Cette commande afe che les commentaires de la fonction indiqu e. Ces commentaires contiennent lobjet de e la fonction ainsi que les diff rents formats dappel. Ils contiennent egalement une rubrique e See Also qui donne les noms de fonctions dont lobjet est en rapport avec la fonction consid r e. Ces commentaires sont afch s sur la fen tre de travail. ee e e

F IG . 1.2 Page daccueil de la fen tre ouverte par helpwin. e

1.2.2 La recherche par navigation


La fonction helpwin ouvre une fen tre qui donne acc` s a ces commentaires sur une e e ` fen tre s par e. Lacc` s est arborescent, partant dun classement par domaine dapplicae e e e tion jusqu` laide de chaque fonction. Le lien est fait avec les aides des renvois sugg r s a ee par la rubrique See Also.

` CHAPITRE 1. INITIATION A MATLAB

La gure 1.2 nous montre sa page daccueil. On peut cliquer sur une ligne pour continuer sa recherche... La commande helpdesk donne acc` s a une documentation hypertexte compl` te e ` e support e par le navigateur internet. Il suft alors de se laisser guider dans sa recherche. e Cette aide nest pas accessible lorsque lon utilise M ATLAB sans le support java.

1.3 Variables et Matrices


1.3.1 Matrices
Dans M ATLAB, toutes les variables repr sentent des matrices. Par exemple, on multie plie deux matrices a et b par a*b, et le produit de deux scalaires s crit de la m me e e facon : ils sont interpr t s comme des matrices 1X1. ee On peut d nir une matrice dans M ATLAB de plusieurs facons : e par la liste de ses el ments, e en la g n rant par une suite dinstructions et de fonctions, e e en la lisant dans un chier ext rieur. e Si lon repr sente la touche enter de votre clavier par le symbole , les instructions e suivantes : >> A = [3 2 -2 ;-1 0 1 ;1 1 0] et >> A = [ 3 2 -2 -1 0 1 1 1 0 ] cr ent la m me matrice 3X3. e e Dans la suite, le symbole ne sera plus indiqu . Le symbole = d signe lop rateur e e e daffectation. Il permet de xer ou de changer la valeur dune variable. En ayant execut lune ou lautre de ces commandes, vous aurez remarqu que M AT e e LAB afche la valeur de la variable A que vous venez de d nir. Vous pouvez eviter lafe chage en faisant suivre la commande dun point-virgule. Ne la retapez pas pour le v rier ; e en utilisant la ` che ascendante de votre clavier , vous pouvez rappeler la commande e >> A = [3 2 -2;-1 0 1;1 1 0] et ajouter le point-virgule >> A = [3 2 -2;-1 0 1;1 1 0] ; M ATLAB distingue les majuscules et les minuscules ; si vous tapez : >> a vous recevrez le message :

1.3. VARIABLES ET MATRICES


??? Undefined function or variable a.

Lensemble des variables actives peut etre consult gr ce aux commandes whos et e a who : >> t = 1; >> whos Name Size Bytes A 3x3 72 Grand total is 9 elements using 72 bytes La commande clear permet de d truire une variable. e >> who Your variables are: A t >> clear t >> who Your variables are: A La commande clear all r initialise lenvironnement (en d truisant toutes les vae e riables actives). L num ration des el ments dune matrice ou dun vecteur peut etre implicite. Ese e e sayez par exemple : >> m = [-3:3] >> x = [1:-0.25:-1] Les matrices m et x sont des matrices a une ligne (vecteurs-lignes). M ATLAB vous ` fournit les dimensions dune variable par la fonction size : >> size(m) ans = 1 7 Si lon veut un vecteur, on peut taper >> m = m ou >> x = x(:) Lapostrophe d nit la transposition : A repr sente la matrice AT . Les deux points e e imposent le format colonne :

Class double array

` CHAPITRE 1. INITIATION A MATLAB

>> format compact % pour viter les sauts de ligne ` laffichage. e a >> A ans = 3 -1 1 2 0 1 -2 1 0 >> A(:) ans = 3 -1 1 2 0 1 -2 1 0 On peut aussi cr er directement un vecteur en s parant les composantes par un pointe e virgule : >> b = [3 ; 0 ; 2 ] ; size(b)

Un coefcient quelconque dune matrice est r f renc par ses indices de ligne et de ee e colonne, dans cet ordre. Par exemple, linstruction : >> A(1,2) renvoie la r ponse : e ans = 2 ans est le nom dune variable qui recoit le dernier r sultat dune instruction ou dune e suite dinstructions lorsquil na et affect a aucune variable. On peut faire safcher la e e` valeur dune variable sans afchage de son nom ni de ans >> disp(A(1,2)) Certaines fonctions de M ATLAB cr ent des matrices particuli` res. Les quelques mae e trices suivantes sont parmi les plus couramment utilis es : e eye(n) renvoie la matrice identit , habituellement not e In en math matiques ; e e e essayez eye(4), ones(n,m) renvoie une matrice a n lignes et m colonnes dont tous les coef` cients sont des 1, zeros(n,m) matrice a n lignes et m colonnes dont tous les coefcients sont ` des 0 ; elle sert beaucoup pour les initialisations. linspace(a,b,n) cr e une matrice ligne de n points r guli` rement espac s sur e e e e lintervalle [a, b] (bornes comprises). rand cr e une matrice al atoire. Essayez >> B = rand(3,4). Dans quel ine e tervalle sont choisis les coefcients de cette matrice ? La commande help permet de recevoir des informations (en anglais !) sur une fonction ; essayez : >> help linspace, >> help rand

1.3. VARIABLES ET MATRICES

1.3.2 Op rations usuelles e


M ATLAB permet deffectuer les op rations usuelles en etendant leur d nition aux e e matrices selon les r` gles de lalg` bre lin aire. e e e Laddition et la soustraction ne m ritent aucun commentaire particulier, sinon que les e tailles des matrices doivent etre egales, essayez : >> >> >> >> 3+5 ans -2 A + ones(3) m + x La derni` re commande aura entrain cette r ponse cinglante : e e e ??? Error using ==> + Matrix dimensions must agree. M ATLAB autorise que les dimensions ne soient pas egales lorsquune des variables est un scalaire. A + 1 fournit la m me valeur que A + ones(3). e La multiplication de deux variables sera possible si les matrices quelles repr sentent e respectent les r` gles de concordance des dimensions : e >> >> >> >> >> 3*4 c = A*b C = A*B b*c b*c

Comme les variables A et B repr sentent respectivement des matrices 3 3 et e 3 4, la variable C repr sente une matrice 3 4, mais la commande B*A susciterait e un message derreur de dimensions. On peut aussi remarquer que le produit scalaire des vecteurs b et c sobtient directement par b*c , alors que b*c d nira une matrice 3 3 (de rang 1 !). e M ATLAB autorise que les dimensions ne concordent pas lorsquune des variables repr sente un scalaire. e M ATLAB distingue la division a gauche et la division a droite : ` ` >> 3/4 ans = 0.7500 >> 3\4 ans = 1.3333

` CHAPITRE 1. INITIATION A MATLAB

Ainsi cette division doit elle sinterpreter comme le produit par linverse de la variable situ e du c t vers lequel penche la barre : 3/4 repr sente 3 1 alors que 3 \ 4 repr sente e oe e e 4 1 4. Cette id e se g n ralise aux variables repr sentant des matrices : e e e e 3 >> x = A\b ; >> A*x - b Comment interpr ter le dernier r sultat renvoy par la machine ? Vous aurez compris e e e que la variable x contient la solution du syst` me lin aire A x = b. Au passage, vous e e remarquerez que cette nouvelle affectation de la variable x ecrase la pr c dente. e e Quelle reexion vous sugg` re le r sultat de : e e >> b/A On peut se demander ce que repr sente la matrice M d nie par e e >> M = A\eye(3) M ATLAB autorise le produit et les divisions par un scalaire. L l vation a une puissance donn e est d nie par le symbole ee ` e e >> >> >> >> 23 A2 A0 A(-1) Vous avez retrouv la matrice M. e Les r` gles de priorit des op rations sont conformes a celles qui sont utilis es dans la e e e ` e plupart des langages de programmation. Elles sont donn es par le tableau suivant : e Niveau de priorit e Op ration e 1 puissance 2 multiplication et division 3 addition et soustraction A niveau de priorit egale, les op rations sont effectu es de la gauche vers la droite. Les e e e parenth` ses vous permettent dorganiser les priorit s dans vos calculs. Leur utilisation est e e recommand e pour eviter les ambiguit s et risques derreurs. e e >> >> >> >> >> >> 2 + 32 2 + 3*32 2 + (3*3)2 (2 + 3*3)2 A2\A A*A\A : essayez

1.3. VARIABLES ET MATRICES

1.3.3 Op rations sur les tableaux e


Une matrice peut etre vue comme un tableau de valeurs, ind pendament de lalg` bre e e lin aire. M ATLAB permet de travailler avec les valeurs contenues dans un tableau. Pour e laddition et la soustraction, il ny a pas de diff rence entre matrice et tableau de valeurs. e Pour la multiplication, les divisions et l l vation a une puissance, on fait pr c der le ee ` e e symbole dop ration dun point. Les tableaux doivent avoir la m me taille : e e >> >> >> >> >> >> A.2 M.*A b./c C.*B A.*B A.[2 1 2 ; 2 0 1 ; 1 1 1]

On remarquera que A. 2 el` ve a la puissance 2 chaque el ment de A. Cest un raccourci e ` e pour A. (2*ones(3)).

1.3.4

Manipulations sur les matrices

M ATLAB permet de manipuler les matrices par blocs : Essayez par exemple : C = [ones(3), rand(3,2) ; rand(2,3), eye(2)] On peut ensuite en extraire la sous-matrice form e des trois derni` res colonnes : e e C1 = C(:,3:5); et on retrouve ones(3) en faisant afcher C(1 :3,1 :3). M ATLAB propose quelques fonctions qui facilitent certaines manipulations. La fonction diag extrait la diagonale dune matrice, sous forme dun vecteur, ou cr e une matrice diagonale, a partir dun vecteur ; essayez par exemple les instructions e ` suivantes : >> >> >> >> R = rand(5); diag(R) diag(ans) diag(diag(R))

Largument g n ral de diag est double ; entrez : e e >> help diag Vous constatez que lon peut ainsi extraire dune matrice ses el ments dune parall` le a e e ` la diagonale. Essayez :

10 >> >> >> >>

` CHAPITRE 1. INITIATION A MATLAB


diag(R,1) diag(R,-2) d = ones(4,1); M = 2*eye(5)-(diag(d,1)+diag(d,-1))

tril renvoie la partie triangulaire inf rieure dune matrice, el ments diagonaux e e compris. Elle admet aussi plusieurs arguments >> tril(R) >> tril(R,1) triu renvoie la partie triangulaire sup rieure dune matrice. e reshape reformate une matrice, cest-` -dire change le nombre de lignes et de coa lonnes, en prenant les el ments colonne par colonne. e repmat cr e une grande matrice en recopiant une matrice donn e selon le format e e fournit.

1.4 Boucles et tests


Les principales instructions de contr le propos es par M ATLAB sont for, while o e et if ; elles fonctionnent a peu pr` s comme leurs equivalents dans les autres langages ` e de programmation.

1.4.1 La boucle for


La boucle for doit respecter la syntaxe suivante : for compteur = expression instructions end Generalement, expression est un vecteur de la forme dbut :incrment :fin e e et compteur prend successivement toutes les valeurs de expression pour executer instruc tions. Les instructions suivantes permettent de calculer une valeur approch e de ex , pour e x = 10, en utilisant la formule : n xk x e (1.1) k!
k=0

>> >> >> >> >> >>

x = 10; n = 50; s = 1; terme = 1; for k = 1:n, terme = x*terme/k ; s = s + terme ; end; s

1.4. BOUCLES ET TESTS

11

On pourra v rier plus tard que la valeur obtenue, s 2.2026 104 est assez proche e 10 de e . Plusieurs boucles peuvent etre embot es. Comme M ATLAB est un language interpr t , e ee il faut essayer d viter les boucles quand cest possible. Pour cela on peut utiliser des e 1 , boucles implicites. Pour construire la matrice H = (hi,j ) M3 (R) avec hi,j = i+j1 on peut utiliser les instructions suivantes : >> n = 3; >> H = zeros(3); >> for i = 1:n for j = 1:n H(i,j) = 1/(i+j-1); end; end; >> H Notez que lon a initialis la variable H. Cest recommand lorsque cest possible. e e Notez egalement que lon a indent les boucles : cest recommand pour une meilleure e e lisibilit ! e On peut aussi construire H de la facon suivante : >> >> >> >> >> J J I E H = = = = = 1:n; repmat(J,n,1); J; ones(n); E./(I+J-E);

Remarque 1 Dans le premier exemple dutilisation de for, la boucle tenait dans une ligne. Dans ce cas, une virgule doit s parer linitialisation de la boucle de linstruction e suivante. Dans la second exemple, puisque lon va a la ligne, le prompt de M ATLAB ne r apparait e ` que lorsque la boucle est correctement termin e. e

1.4.2 La boucle while


Linstruction while respecte la syntaxe suivante : while expression instructions end expression d signe le r sultat dune op ration logique. Elle est construite en utilisant e e e des op rateurs relationnels et logiques. e

12

` CHAPITRE 1. INITIATION A MATLAB

Op rateurs relationnels e Op rateur e egal diff rent e sup rieur e inf rieur ou egal e Symbole == = > <=

Op rateurs logiques e Op rateur e et logique non logique ou logique Symbole & |

Les instructions seront ex cut es tant que expression sera vraie. Toute valeur diff rente e e e de 0 est assimil e au 1 logique, cest-` -dire au vrai. Essayez e a >> >> >> >> >> x = [1 -1 1] ; y = [1 1 -1]; x>0, (x>0),x>0 x>=y x>0 & y>0 x>0 | y>0

Les instructions suivantes permettent de trouver approximativement le plus petit nombre positif repr sent dans larithm tique utilis e par M ATLAB : e e e e >> x = 1 ; while x>0 , xm = x; x = x/2; end; xm

1.4.3 Le choix conditionnel if


Linstruction if respecte la syntaxe suivante : if expression instructions end Les instructions ne seront ex cut es que si expression est vraie. Il est possible de e e proposer une alternative, en indiquant les instructions a executer lorsque expression est ` fausse : if expression instructions 1 else instructions 2 end Il est egalement possible demboter les choix propos s : e if expression1 instructions 1 elseif expression2 instructions 2

1.4. BOUCLES ET TESTS


else instructions 3 end

13

1.4.4 Utiliser un chier de commandes


Les exemples dutilisation de la boucle for nous ont amen s a ecrire plusieurs lignes e ` de commandes. Lorsque lon veut recommencer lex cution dun de ces exemples en e modiant la valeur dun param` tre, il faudra rappeler toutes les lignes qui suivent sa e d nition : cest le cas si lon veut evaluer (1.1) pour une autre valeurs de x ou de n. e Cette op ration devient tr` s d sagr able lorsque lon a emboit des boucles ! e e e e e De m me que vous utilisez un brouillon avant de rendre un devoir, de facon a pouvoir e ` faire des ratures, changer les expressions o` vous avez d tect une erreur, vous pouvez u e e editer un chier de commandes M ATLAB dont vous vous servirez comme dun brouillon. Un tel chier sappelle un M-chier. Il devra etre enregistr sous le nom de votre choix e avec le sufxe .m. Pour ecrire ce chier, vous devez utiliser un editeur : M ATLAB vous en propose un auquel vous pouvez acc der en vous servant des ic nes de la fen tre. e o e Nous allons illustrer cette possibilit en traitant un exemple qui utilise la boucle e while et le branchement if : il sagit de tester la conjecture de Syracuse. On part dun nombre entier diff rent de 1. Sil est impair, on le multiplie par 3 e et on ajoute 1 ; sinon, on le divise par 2. On recommence avec ce nouveau nombre tant quil nest pas egal a 1. Dans ce cas, en effet, on reproduira ind niment le cycle ` e { , 1, 4, 2, 1, }. Quelque soit le nombre entier dont on part, on nit toujours par obtenir la valeur 1. Cest en tous cas ce que montre lexp rience, car personne na jamais trouv de contre e e exemple. Mais, on a jamais pu d montrer quil devait en etre ainsi ! e On vous propose de tester cette conjecture. Lobjectif de lexercice est d crire un e programme M ATLAB qui propose a lutlisateur de donner un nombre entier diff rent de ` e 1, et a partir de ce nombre, de compter le nombre dit rations de la suite de Syracuse avant ` e quelle natteigne la valeur 1. On prendra la pr caution de limiter le nombre dit rations e e a 1000 pour eviter que le programme ne tourne ind niment. Cela pourrait se produire en ` e cas derreur de saisie. Pour cela, vous allez commencer par editer le chier dans lequel vous ecrirez ce pro gramme. Vous pouvez utiliser le chier qui vous est fournit sous le nom de Syracuse.m et qui contient le squelette de programme qui est donn au tableau 1.1. e Il vous faut remplacer les points de suspension par des instructions appropri es. Voici e quelques indications : - La fonction input permet de proposer a lutilisateur de rentrer un entier n initial. ` - Le symbole % permet de placer des commentaires. - Le nombre dit rations sera donn par la variable compteur. e e

14

` CHAPITRE 1. INITIATION A MATLAB

% Syracuse :

Tester la conjecture de Syracuse

n = input(Entrez un entier superieur a 1 : ) ; compteur = 1 ; % Compteur des itrations e while ... & ... if rem(n,2) ... n = ... ; else n = ... ; end compteur = compteur +1; end compteur

TAB . 1.1 Programme Syracuse.m - la boucle while sera cotr l e par deux expressions logiques, qui autoriseront son oe ex cution tant que n restera diff rent de 1 et compteur inf rieur ou egal a 1000. e e e ` - Le test sur la parit de n utilise la fonction rem (abr viation de remainder) qui e e donne le reste de la division enti` re par 2 : ce reste vaut 1 si n est impair et 0 sinon. e Remarque 2 On ne sest pas trop brid en limitant le nombre des it rations a 1000. Pour e e ` des valeurs initiales inf rieures ou egales a 10 000, la suite la plus longue est obtenue e ` pour une valeur initiale de 6171. Sa longueur est 262.

1.5 Fonctions de base


1.5.1 Fonctions scalaires
Ce sont les fonctions usuelles ; par exemple : sin cos tan exp log rem abs sqrt sign round tanh acosh

Ces fonctions font partie des fonctions el mentaires propos es par M ATLAB. Pour en e e avoir la liste, vous pouvez taper : >> help elfun Comme la liste est longue, vous pouvez contr ler son d lement : o e >> more on, help elfun, more off

1.5. FONCTIONS DE BASE

15

Le d lement se fait ligne a ligne (en tapant une touche quelconque) ou par pages e ` de 20 lignes (en tapant la barre despacements). Vous pouvez maintenant comparer la variable s calcul e en utilisant la formule (1.1) avec e10 ; e >> s - exp(10) Quelle commande devrez-vous entrer pour obtenir la valeur absolue de lerreur relative ? Ces fonctions traitent les variables matricielles comme des tableaux de nombres ; si la variable A repr sente une matrice A, la variable S = sin(A) repr sentera une matrice e e S dont les coefcients sont si,j = sin(ai,j ). Pour lexponentielle et la racine carr e, qui e poss` dent une version matricielle, M ATLAB propose les fonctions expm et sqrtm. e Le cas des polyn mes est un peu particulier : un polyn me peut etre d ni par ses o o e coefcients : on utilise dans ce cas une matrice ligne : par exemple, le polyn me Q(x) = o x3 + 2x2 3 sera repr sent par : e e >> Q = [1 2 0 -3]; Sa valeur au point x = 1.2 sera fournie par : >> polyval(Q,1.2) Les racines du polyn me Q seront fournies par la fonction roots. A linverse, on o peut aussi d terminer les coefcients dun polyn me a partir de ses racines en utilisant la e o ` fonction poly : >> r=[1 2 3]; K = poly(r) >> polyval(K,r) Ces instructions assignent a K la valeur [1 -6 11 -6] qui d nit le polyn me ` e o K(x) = x3 6x2 + 11x 6. Le polyn me ainsi calcul a toujours le coefcient de son o e terme de plus fort degr egal a 1. e ` Comme les fonctions usuelles polyval traite les matrices comme des tableaux, Il faudra utiliser la fonction polyvalm pour evaluer un polyn me de matrice. o Comparez polyval(K,A) et polyvalm(K,A). Certaines fonctions sp ciales sont egalement propos es par Matlab : par exemple, e e les fonctions de Bessel de premi` re esp` ce not es J (x) sont donn es par la fonction e e e e besselj dont le format dappel le plus courant est, pour le param` tre entier nu et la e variable x : y = besselj(nu,x) ; Vous pouvez retrouver linformation sur le format dutilisation par : >> help besselj La liste de ces fonctions sp ciales vous sera renvoy e par la commande : e e >> more on, help specfun, more off

16

` CHAPITRE 1. INITIATION A MATLAB

1.5.2 Fonctions vectorielles


Ces fonctions sont plutot destin es a agir sur des vecteurs, lignes ou colonnes. Elles e ` sont tr` s utiles a lanalyse des donn es. Citons par exemple : e ` e max min sum prod mean std sort find

dont vous trouverez lobjet par la commande help lorsquil nest pas evident. Elles agissent aussi sur les matrices, mais colonne par colonne. Essayez par exemple : >> >> >> >> b = rand(3,3) ; c = max(b) ; d = max(max(b)); b,c,d sort(c) sort(b)

Vous pouvez modier le chier Syracuse.m pour retrouver le r sultat annonc a la e e` remarque 2 en utilisant une boucle for et la fonction max.

1.5.3 Fonctions matricielles


Citons en quelques-unes : eig : valeurs et vecteurs propres dune matrice, inv : inverse, expm : exponentielle de matrice, size : dimensions de la matrice, norm : norme (2 par d faut, mais aussi 1 ou ), e rank : rang. Une liste un peu plus compl` te, mais non exhaustive, de ces fonctions vous est fournie e en annexe. Une liste compl` te est fournie en r ponse a la commande e e ` >> more on, help matfun, more off

1.6 Graphiques
1.6.1 Visualisation des courbes en 2D
M ATLAB permet de tracer facilement le graphe de fonctions scalaires. Cela se fait a laide de la fonction plot . Elle prend en argument des paires de vecteurs de m me ` e dimension. Voici par exemple le moyen dobtenir le graphe de la fonction cos 3x sur lintervalle [0, 2] : >> x = [0:0.01:2*pi] ; y =cos(3*x) ; plot(x,y); Le format de base de la fonction plot est en fait le suivant :

1.6. GRAPHIQUES
plot(x,y,s) ;

17

o` x contient les absisses, y les ordonn es, et s est une chaine de 1 a 3 caract` res : u e ` e s=ctm, pour la couleur (c) et le style (tm), qui peuvent etre choisis dans le tableau suivant :

Couleur y m c r g b k w jaune magenta cyan rouge vert bleu noir blanc : -. -+ o * x

Style trait continu (t) pointill s (t) e trait-point (t) tirets (t) plus (m) cercles (m) etoiles (m) croix (m)

Les style de trac suivis de (t) sont des trac s continus, avec une interpolation entre e e les points fournis, alors que pour les autres on utilise des marqueurs pour ne repr senter e que les points (xi , yi ). On peut combiner ces deux styles. On peut tracer les graphes de plusieurs fonctions simultan ment. Essayez maintenant : e >> z = sin(2*x);plot(x,y,x,z); On peut alors l gender notre graphique de la facon suivante : e >> legend(cos(3x),sin(2x)); On peut egalement obtenir ces deux courbes par la succession de commandes : >> plot(x,y); >> hold on; >> plot(x,z); La seule diff rence est que cette fois, les deux graphes sont trac s avec la m me e e e couleur. hold on g` re le graphique courant de facon que les commandes graphiques e a suivre vont sajouter a ce graphique. hold off est a valeur par d faut : dans ce cas ` ` e une nouvelle commande plot effacera le graphique existant. Les axes sont d nis automatiquement ; on peut choisir les bornes des coordonn es e e du graphe a laide de la fonction axis . Essayez par exemple : ` >> axis([-1 5 -1.5 1.5]); Pour la suite de notre travail, il est pr f rable que vous entriez maintenant la comee mande :

18 >> hold off;

` CHAPITRE 1. INITIATION A MATLAB

Le format de la fonction plot permet bien s r de repr senter facilement des courbes u e param triques : e >> plot(y,z); On obtient, pour les valeurs d nies plus haut, une courbe connue sous le nom de e courbe de Lissajoux. Les instructions suivantes vont r duire l g` rement l chelle, donner e e e e un titre et un nom aux axes, et faire apparatre une grille sur le fond : >> >> >> >> >> axis([-1.1 1.1 -1.1 1.1]) title(Courbe de Lissajoux); xlabel(x : axe des absisses); ylabel(y : axe des ordonnees); grid

Vous obtiendrez limpression sur papier dun graphe en utilisant la commande print qui enverra limpression sur limprimante a laquelle est reli votre ordinateur. Cest la ` e derni` re de vos gures qui sera imprim e. e e

Exercice On consid` re la fonction d nie par e e F (x) = 0.01 exp x + 10 cos x 3 x. (1.2)

On vous demande d crire un M-chier ExempleCourbe.m pour tracer la courbe e repr sentant cette fonction sur lintervalle [1, 10], en utilisant ses valeurs aux points e k xk = 1 + , 0 k 1100. Vous xerez la taille de la fen tre de visualisation de e 100 facon que les absisses soient comprises entre 1 et 11 et les ordonn es entre 50 et 200. e Vous pourrez compl ter cette gure en y ajoutant les axes et un titre. Ces axes peuvent e etre trac s ` la main en utilisant les fonctionnalit s de la fen tre graphique (voir les e a e e ic nes). Vous les obtiendrez aussi en terminant votre programme par les instructions o donn es dans lencadr ci-dessous. e e
... hold on ; plot([0,9],[0,0],9,0,>) plot([0,0],[-20,150],0,150,) hold off ;

1.6. GRAPHIQUES
Exercice

19

Vous allons cr er un chier qui repr sente la fonction de Bessel de param` tre = 0 e e e sur lintervalle [0, 50], et v rier graphiquement que ses racines sur cet intervalle sont e bien approch es par les expressions e (1.3) rj (2 j 1) + , 1 j 15. 2 4 Vous appellerez ce chier VisuRacBess.m. Il devra contenir des instructions pour : - d nir les absisses x (utiliser la fonction linspace), e - d nir le param` tre et calculer les y = J (x), en utilisant la fonction fzero. e e Cette fonction r soud les equations non lin aires. Lalgorithme utilis combine plue e e sieurs m thodes, dont celles de la s cante et de bissection. On doit fournir une vae e leur pour initialiser les it rations, et il est bon de disposer dune valeur assez voisine e de la solution cherch e. On se servira donc des expressions (1.3). e - repr senter sur la m me gure les y et laxe des x, e e - calculer les rj , (d nir un tableau R en utilisant une variable J = [1 :15] ; ), e - repr senter sur la gure pr c dente les points (rj , 0) par le symbole . e e e On voudrait pouvoir donner un titre a cette gure, et pour cela repr senter les lettres ` e grecques et : cela peut se faire de la facon suivante : title(La fonction J_{\nu } pour \nu = 0); On peut souhaiter des caract` res un peu plus grands pour ce titre : e title(La fonction {\nu } pour \nu = 0,Fontsize,12); La taille de fonte est pr cis e par la propri t Fontsize, suivie de la valeur choisie. e e ee A Cette instruction utilise les r` gles du langage LTEXqui est un langage de programe mation de traitement de texte particuli` rement bien adapt a la gestion des formules e e ` math matiques. Elle appelle quelques commentaires : e Le caract` re permet de mettre en position dindice les caract` res entre accolades e e qui le suivent. Le caract` re \ permet a LTEX de reconnatre ses commandes. Vous en trouverez e ` A quelques-unes dans le tableau 1.2.

1.6.2 Visualisation des courbes en 3D (*)


La fonction qui permet de repr senter une courbe dans lespace R3 est plot3. Sa e syntaxe est plot3(x,y,z,s) ; et cette fois x, y et z sont des vecteurs de m me dimension contenant les trois coore donn es. Essayez : e >> theta = pi*[-4:0.04:4]; r = linspace(1,6,201); >> x = r.*(1+cos(theta)); y = r.*sin(theta); z = r; >> plot3(x,y,z,k*); grid;

20

` CHAPITRE 1. INITIATION A MATLAB

minuscules grecques

majuscules grecques

symboles math matiques e

Commande Symbole Commande Symbole Commande

Symbole

\alpha \beta \gamma \omega \lambda \pi \rho \nu

\Delta \Theta \Gamma \Omega \Lambda \Phi \Psi \Sigma

\leq \geq \int \infty \sim \partial \in \rightarrow

TAB . 1.2 Principaux symboles math matiques reconnus par M ATLAB. e

1.6.3 Visualisation des surfaces (*)


M ATLAB permet de repr senter des surfaces donn es en coordonn es cart siennes ou e e e e sous forme param trique. La forme param trique peut s crire : e e e x = x(s, t) y = y(s, t) z = z(s, t) o` les param` tres s et t parcourent un certain domaine. Plusieurs fonctions permettent u e cette repr sentation, parmi lesquelles mesh repr sente un treillis, et surf une surface e e pleine. Elles ont le m me format dappel : e surf(X,Y,Z,C) ; X,Y et Z sont des matrices de m mes dimensions contenant les coordonn es de points de e e la surface. C permet de d nir les couleurs et peut etre omis. Nous allons repr senter le e e 2 2 c ne dequation x + y 2xz = 0 en utilisant la repr sentation param trique donnee o e e pour (, ) ] , [] 0, 12[ par : x = (1 + cos ), y = sin , z = . On peut proc der de la facon suivante : e >> n = 31 ; theta = pi*[-n:2:n]/n ; r = linspace(0,12,n); >> X = r*(1+cos(theta)) ;

1.6. GRAPHIQUES
>> Y = r*sin(theta) ; >> Z = r*ones(size(theta)); >> surf(X,Y,Z);

21

Il est important de remarquer que X, Y et Z sont des matrices de m me taille ! e La surface repr sent e laisse apparaitre les traces dune grille qui la recouvre. Lase e pect de la surface est contr l par la variable shading, dont les valeurs possibles sont oe faceted (valeur par d faut), flat (supprime le treillis), et interp (adoucit les trane sitions). Essayez : >> shading interp; Les couleurs sont d nies par une matrice C de m me taille que celles des coore e donn es, et par d faut, cette matrice est C=Z, de sorte que dune certaine facon, la couleur e e est proportionnelle a laltitude du point de la surface. Tout cela d pend du choix dune ` e palette graphique. Essayez : >> C = rand(size(Z)) ; surf(X,Y,Z,C); La palette de couleurs de la fen tre de visualisation est d nie par la variable colormap. e e Sa valeur par d fault est jet . Essayez : e >> colormap(cool); La liste des palettes disponibles est fournie avec celle de toutes les fonctions ou variables de contr le dun graphique 3D par la commande : o >> more on, help graph3d, more off Examinons a pr sent le trac dune surface donn e par son equation cart sienne z = ` e e e e f (x, y). En g n ral, on dispose dune famille de valeurs de x et dune famille de valeur de e e y stock es dans 2 vecteurs, respectivement x et y. On va devoir construire deux matrices e X et Y telles que les colonnes de X et les lignes de Y soient constantes : ces matrices seront utilisees pour le calcul des valeurs de f . On peut utiliser la fonction meshgrid . Ainsi, pour repr senter la surface d quation z = exp(x2 y 2 ) , 2 < x, y < 2, on e e pourra proc der comme suit : e >> [X,Y] = meshgrid(-2:.2:2, -2:.2:2); >> Z = X .* exp(-X.2 -Y.2); >> surf(Z); Si on ne souhaite que le treillis, on remplace la fonction surf par mesh. Si lon souhaite des isolignes, on utilise la fonction contour3 ; par exemple : >> v = linspace(0,max(max(Z)),20); contour3(Z,v);

22

` CHAPITRE 1. INITIATION A MATLAB

1.6.4 La notion dobjets graphiques (*)


Diff rents objets et leur identication e Lorsque que lon trace une gure, par exemple la courbe repr sentant la fonction e y = sin x sur lintervalle [3.5, 3.5], on utilise une fonction graphique de M ATLAB. On peut le faire simplement de la facon suivante : >> x = linspace(-3.5,3.5) ; >> y = sin(x); >> plot(x,y); Les commandes pr c dentes auront cr e la gure 1.3 e e e
1

0.8

0.6

0.4

0.2

0.2

0.4

0.6

0.8

1 4

F IG . 1.3 Une gure obtenue par la commande de base plot. La fonction plot que lon a utilis a g n r un assez grand nombre de donn es. Ces e e ee e donn es sont les caract ristiques de notre gure. Le syst` me de repr sentation graphique e e e e de M ATLAB est un syst` me orient objet, et les donn es qui caract risent une gure sont e e e e relatives aux diff rents objets qui la constituent. e Certaines de ces donn es peuvent etre pr cis es lors de lappel de la fonction : on peut e e e choisir le type de trac , sa couleur ... Dautres pourraient l tre en utilisant des fonctions e e qui le permettent : legend, xlabel... Si lon avait voulu modier la position la taille de la fen tre graphique, il aurait cee pendant fallu utiliser la fonction figure avant la fonction plot et xer les valeurs de la propri t Position. ee

1.6. GRAPHIQUES

23

Pour g rer une fen tre graphique, il convient de pouvoir identier ces objets, avant de e e xer ou de modier leurs propri t s. Cette identication se fait par les handles, litt ralement ee e les poign es pour les attraper ! e La premi` re etape consiste a r cup rer ces handles. La fonction findobj le permet. e ` e e Voici ce que peut fournir son appel : >> h = findobj h = 0 1.0000 151.0015 152.0022 Il ne sagit pas ensuite dutiliser les valeurs afch es, mais de se rappeler que h est e un vecteur de 4 composantes dont chacune est un handle. Quels sont les objets ainsi identi s ? e >> get(h,type) ans = root figure axes line La premi` re composante dont la valeur est 0 est la racine, cest-` -dire l cran. La e a e seconde est le fen tre. Son handle est egalement d sign par la fonction gcf (get current e e e gure). Cette structure est arborescente : a partir de la racine, on peut trouver une ou plusieurs ` fen tres ; dans chaque fen tre, un ou plusieurs syst` mes daxes, et dans chacun dentre e e e eux, un ou plusieurs courbes. Modier les propri tes e Chaque type dobjet g` re certaines propri t s. On va commencer par modier la taille e ee de la fen tre. Pour cela, il faut modier la propri t Position. e ee Pour voir comment elle est d nie, nous r cup rons sa valeur. e e e >> get(h(2),Position) ans = 181 457 560 420 Vous naurez pas les m mes valeurs. Ces valeurs repr sentent respectivement la dise e tance la fen tre au bord gauche de l cran, sa distance au bord inf rieur de l cran, sa e e e e largeur et sa hauteur. Elles sont donn es en Pixels. e Pour modier la taille de cette fen tre, il faut connatre la taille de l cran. Cest une e e propri t de la racine : ee

24 >> get(h(1),ScreenSize) ans = 1 1 1280

` CHAPITRE 1. INITIATION A MATLAB

1024

On peut pr f rer travailler en coordonn es relatives avant de xer cette taille : ee e >> set(h(2),Units,normalized,Position,[0.1 0.3 0.6 0.4]) Pour connatre lensemble des propri t s relatives a lobjet figure, il suft de taper ee ` get(h(2)). Pour obtenir la liste de ces propri t s avec les valeurs autoris es, lorsquelles sont ee e pr d nies, on tape set(h(2)). e e Lobjet h(3) est de type axes. On peut lister le champ de ses propri t s avec leur ee valeur actuelle : >> get(h(3)) Nous allons supprimer lencadrement, modier les limites de laxe des y, xer les positions et valeurs des ticks de laxe des x : >>set(h(3),Box,off) >>set(h(3),Ylim,[-1.1 1.1]) >>set(h(3),Ytick,[]) >>set(h(3),Xtick,[-pi -pi/2 0 pi/2 pi]) >>set(h(3),XtickLabel,-pi|-pi/2|0|pi/2|pi)
A On remarquera que les symboles LTEX ne sont pas pris en compte pour etiqueter les ticks. Une propri t du nom de Title gure dans la liste des propri t s de lobjet axes et ee ee sa valeur est un nombre r el. Il sagit l` encore dun handle, car le titre est lui m me un e a e objet graphique.

>>htit = get(h(3),Title) >>set(htit) >>set(htit,string,Fonction sinus,FontSize,12) >>set(htit,Color,[1 0 0]) La couleur obtenue est le rouge. La d nition des couleurs peut se faire par un tableau e de 3 valeurs comprises entre 0 et 1 qui donnent respectivement les poids relatifs du rouge, du vert et du bleu. (syst` me rgb). Le blanc est [1 1 1] et le noir [0 0 0]. e On peut aussi modier certaines propri t s de lobjet de type line On en obtient la ee liste par get(h(4)). Pour connatre les possibilit s offertes au niveau des types de trac , e e >>set(h(4),Linestyle) >>set(h(4),Marker)

1.7. M-FICHIERS
Fonction sinus

25

pi

pi/2

pi/2

pi

F IG . 1.4 Figure modi e gr ce a la manipulation des hanlde. e a ` On peut alors proposer >>set(h(4),Linestyle,none,Marker,+) >>set(h(4),Markersize,4) >>set(h(4),Ydata,cos(x)) La gure apr` s modication ressemblera, sauf pour les couleurs, a la gure 1.4. Il e ` faudrait quand m me modier son titre ... e

1.7 M-chiers
1.7.1 Scripts et fonctions
Bien que lon puisse faire beaucoup de choses en travaillant directement dans la fen tre de commandes de M ATLAB, nous avons d ja constat que quil etait souvent plus e e e pratique dutiliser des M-chiers. Ils permettent - de corriger plus facilement ses erreurs, - de garder un travail en cours pour le reprendre plus tard, - dex cuter plusiers fois un programme en modiant certains param` tres, e e - d changer son travail avec des camarades. e Jusqua pr sent, ces chiers etaient des chiers dinstructions, ou chiers scripts. e Un chier script est un chier contenant une suite dinstructions M ATLAB directement ex cutables. Ces instructions sont ex cut es en utilisant les variables de lespace de tra e e e vail, ou en cr ant des variables dans cet espace. e M ATLAB utilise egalement des M-chiers. En fait, un grand nombres des fonctions que nous avons rencontr es sont ecrites dans des M-chiers. Il sagit de chiers fonce tion. Vous pouvez egalement cr er vos propres fonctions. e Un chier fonction a sa premi` re ligne dinstruction ex cutable qui commence par e e le mot clef function. Il peut recevoir des variables en entr e, mais utilise ces variables e

26

` CHAPITRE 1. INITIATION A MATLAB

en dehors de lespace de travail. Aucune des variables cr ees ou modi es lors de son e e ex cution nest visible depuis lespace de travail a moins quelle ne soit une variable en e ` sortie de la fonction ! Nous allons illustrer la diff rence entre ces deux types de chiers sur un exemple. Si e le fonction f est sufsament r guli` re, la formule de Taylor permet dobtenir une valeur e e approch e de sa d riv e en un point x, pour un pas h, suivant e e e h f (x + h) f (x) = f (x) + f (x) + O(h2 ) h 2 f (x). (1.4)

% % % %

Fichier ScriptDn1 pour calculer function Res = Fonc1Dn1(h); la derivee numerique de sinus % Derivee numerique de sinus au point 1 pour le pas % au point 1 en fonction du h = 0.01. % pas h. x = 1; Dn = (sin(x+h) -sin(x))./h; Res = Dn;

x = 1; h = 0.01; Dn = (sin(x+h) -sin(x))./h;

TAB . 1.3 Fichier script et chier fonction. Le tableau 1.3 montre le contenu du chier script ScriptDn1.m et du chier fonction FoncDn1.m Une fois ces deux chiers sauvegard s dans votre espace de e travail, vous pourrez tapez les commandes quivantes : >> >> >> >> >> >> clear all ScriptDn1 who Err = abs(Dn-cos(1)) clear all FoncDn1

M ATLAB nest pas content et il vous le dit : ??? Input argument "h" is undefined. Error in ==> FoncDn1 at 6 Dn = (sin(x+h) -sin(x))./h; Lerreur est comment e ; M ATLAB vous indique le num ro de la ligne o` elle sest e e u produite. A pr sent, nous fournissons le pas en appel de la fonction e

1.7. M-FICHIERS
>> pas = 0.01 ; FoncDn1(pas) ans = 0.5361 >> Err = abs(Dn-cos(1)) ??? Undefined function or variable Dn. >> who Your variables are: ans pas

27

>> Der = FoncDn1(pas); >> Der-ans On peut faire quelques remarques : - Le chier script s x cute sans quon lui fournisse darguments. Le chier fonction e e a besoin quon lui fournisse les arguments quil ne cr e pas, ici le pas. e - Le nom de la variable affect e de la valeur de ce pas dans lespace de travail na pas e dimportance ; cest sa valeur qui est pass e. e - Les variables cr ees par l x cution du script sont vues dans lespace de travail. e e e Celles qui sont cr ees lors de l x cution de la fonction ne le sont pas. Ce sont e e e des variables locales. Largument en sortie prend le nom quon lui donne dans la session M ATLAB.

1.7.2 Fonctions
Fonctions simples Nous avons d j` rencontr la fonction F (x) = 0.01 ex + 10 cos x 3 x. ea e Dans ce cas, on dispose de deux facons pour cr er une fonction M ATLAB qui calcule e les valeurs de F : - comme la fonction F peut se d nir en une seule ligne, on peut le faire avec la e fonction inline >> F1 = inline(0.01*exp(x)+10*cos(x)-3*x) - de facon plus g n rale, on peut editer un chier que lon va appeler F2.m qui devra e e commencer par le mot-clef function : vous pouvez le d nir de la facon suivante e function y = F2(x) ; y = 0.01*exp(x)+10*cos(x)-3*x; La premi` re d nition est a utiliser lorsque lon nenvisage pas dutilisation ult rieure e e ` e de cette fonction. La d nition au moyen dun chier permet de la conserver. Cepene dant, ainsi quelle est r dig e, cette fonction a encore le d faut que son objet nest pas e e e imm diatement lisible ; on risque de lavoir oubli quand on aura besoin de la r utiliser. e e e Il faut donc la commenter. Cela se fait sur des lignes qui commencent par le symbole % . Ce symbole transforme en commentaires tous les caract` res qui le suivent dans la ligne courante. Entre autres e

28

` CHAPITRE 1. INITIATION A MATLAB

commentaires, vous devrez toujours indiquer le format dappel de la fonction. Voici comment je vous sugg` re d crire ce chier : e e function y = F2(x) ; % fichier fonction definissant la fonction F2(x) qui sert dexemple % au polycopie dinitiation a Matlab. % Lappel se fait selon : % >> y = F2(x); y = 0.01*exp(x)+10*cos(x)-3*x; Ces commentaires sont plac s imm diatement apr` s la premi` re ligne (de d claration). e e e e e De cette facon, ils constitueront la r ponse fournie par M ATLAB a la commande : e ` >> help F2 Les variables internes dun chier fonction sont locales ; elles ne sont pas vues depuis lespace de travail. Corollairement, les variables de lespace de travail que vous souhaitez utiliser dans une fonction doivent etre pass es en argument. La commande global per e met de d nir des variables globales. Elles doivent etre d clar es globales au d but de la e e e e fonction et dans lespace de travail. Exercice e e La formule (1.4) est dite dordre 1 car lerreur dapproximation de la d riv e est de la forme O(h). On peut obtenir une formule dordre 2, cest-` -dire avec une erreur en O(h2 ) a en utlisant la formule f (x + h) f (x h) h2 = f (x) + f (x) + O(h3 ) 2h 6 f (x). (1.5)

On vous demande d crire une fonction Fonc2Dn1.m qui calcule la d riv e ape e e proch e de la fonction sinus au point x = 1 pour le pas h en utilisant la formule (1.5) e Vous ecrirez egalement un script TestDn.m dans lequel : - vous d nirez le vecteur des pas, pas = 10.(-[1 : 16]); e - vous calculerez les d riv es approch es pour ces pas en utilisant les deux fonctions ; e e e - vous calculerez les erreurs Err1 et Err2 commises dans chaque cas ; - vous repr senterez ces erreurs en fonction du pas avec des coordonn es logarithe e miques : loglog(pas, Err1, b-+, pas, Err2, r-*) ; - vous pourrez r chir et commenter cette gure ! e e Fonctions de plusieurs variables On peut passer plusieurs arguments a une fonction. Supposons que lon souhaite cr er ` e une fonction M ATLAB qui calcule la fonction F(a, b) pr sentant un pic peu marqu au e e

1.7. M-FICHIERS
point a et un pic plus marqu au point b : e F(a, b) (x) = 1 2 + . (x a)2 + 0.01 (x b)2 + 0.002

29

Les param` tres a et b seront des variables de la fonction que lappellera par exemple e Foncapics. On peut encore proc der de deux facons. e - la premi` re utilise la fonction inline : Essayez. e la seconde consiste a cr er le chier Foncapics.m, par exemple : ` e function y = Foncapics(x,a,b); % Cette fonction prsente un pic peu marqu pour e e % x=a et un pic plus marqu pour x= b. e % Lappel se fait selon % >> y = Foncapics(x,a,b); % x est une matrice ; a et b sont des scalaires. y = 2./((x-a).2+0.01) + 1./((x-b).2+0.002); Exercice Cr ez les fonctions Fonc1Dn2.m et Fonc2Dn2.m qui calcule la d riv de la fonce e e tion sinus en un point x et pour un pas h a xer par lutilisateur. ` Exercice (*) Modiez les fonctions pr c dentes de facon que lon puisse passer un vecteur x et un e e vecteur h en arguments. Le format dappel devra pr ciser : e % Pour un vecteur x de longueur nx et un vecteur h % de longueur nh les drives seront calcules dans e e e % une matrice Dn telle que size(Dn) = [nx, nh]. Vous pouvez utiliser la fonction repmat. Passage dune fonction en argument On veut maintenant calculer lapproximation de la d riv e dune fonction a choisir e e ` par lutilisateur. La fonction Fonc1Dn3.m r alise cet objectif. Les restrictions dutilisation sont donn es e e dans le commentaire. function Dn = Fonc1Dn3(fonc,x,h); % Approximation ` lordre 1 de la drive de la a e e

30

` CHAPITRE 1. INITIATION A MATLAB

% fonction fonc au(x) point(s) x pour le pas h. % Appel se fait selon : % >> Dn = Fonc1Dn3(fonc, x, h) % Variables en entree : % - fonc est le nom de la fonction, % - x est scalaire ou vecteur, % - h, scalaire, est le pas du calcul. xp = x + h; y = feval(fonc,x); yp = feval(fonc,xp); Dn = (yp - y)/h; Le passage dune fonction en argument m rite quelques commentaires : e - si fonc.m est une fonction pr d nie de M ATLAB (par exemple sin) ou le nom e e dun chier de fonction (par exemple F2), on pourra ecrire lun ou lautre des deux appels ci-dessous : >> Dn = Fonc1Dn3(F2, x, pas); >> Dn = Fonc1Dn3(@F2, x, pas); - si fonc est le nom dune fonction d nie par inline, (par exemple F1), on devra e formuler lappel selon : >> Dn = Fonc1Dn3(F1, x, pas); A vous de cr er la fonction Fonc2Dn3.m pour une approximation a lordre 2. e ` Arguments optionnels en entr e (*) e Le nombre de variables en entr e nest pas n cessairement x . La fonction FoncDn4 e e e propose de choisir lordre de la formule dapproximation de la d riv e que lon va utiliser. e e On xe par d faut cet ordre a 1. On utilise les fonctions pr c dentes pour calculer les e ` e e approximations de la d riv e. e e function Dn = FoncDn4(fonc, x, h, ordre); % % % % % % % % % % Approximation ` lordre 1 ou 2 de la drive de la a e e fonction fonc au(x) point(s) x pour le pas h. Appel : >> Dn = FoncDn4(fonc, x, h); ou >> Dn = FoncDn4(fonc, x, h, ordre); Variables en entree : - fonc est le nom de la fonction, - x est scalaire ou vecteur, - h, scalaire, est le pas du calcul. - ordre est optionnel ; par defaut, ordre = 1.

if nargin ==3

1.7. M-FICHIERS
ordre = 1; end switch ordre case 1 Dn = Fonc1Dn3(fonc, x, h); case 2 Dn = Fonc2Dn3(fonc, x, h); otherwise Dn = []; disp(Ordre non valable); return end

31

Cette fonction appelle quelques commentaires : - nargin renvoie le nombre de variables utilis es dans lappel a la fonction. e ` - le branchement d nit par switch, case, end na pas et pr sent pr c demment. e e e e e e Il permet de choisir parmi plusieurs instructions suivant la valeur dune variable, ici ordre. Essayez de le remplacer par un test multiple utilisant if, elseif ... - les fonctions appel es, ici Fonc1Dn3.m et Fonc2Dn3.m doivent etre d nies e e dans le m me r pertoire que la fonction qui les appelle. e e Nombre variable darguments (*) La fonction dont on veut calculer la d riv e peut d pendre de param` tres, comme e e e e la fonction F(a, b) ci-dessus. On utilisera dans ce cas la fonction varargin, comme le montre lexemple ci-dessous : function Dn = Fonc1Dn5(fonc,x,h,varargin); % % % % % % % % % Approximation ` lordre 1 de la drive de la a e e fonction fonc au(x) point(s) x pour le pas h. Appel : >> Dn = Fonc1Dn5(fonc, x, h, p1, p2,...) ; Variables en entree : - fonc est le nom de la fonction, - x est scalaire ou vecteur, - h, scalaire, est le pas du calcul. - p1, p2, eventuels parametres de fonc

xp = x + h; y = feval(fonc,x,varargin{:}); yp = feval(fonc,xp,varargin{:}); Dn = (yp - y)/h;

32

` CHAPITRE 1. INITIATION A MATLAB

varargin d signe une liste de longueur quelconque de variables qui peuvent etre e de tout format ; elle est g r e comme une cellule de tableaux. ee Les cellules de tableaux sont un des moyens propos s par M ATLAB pour g rer une e e collection de variables de types et formats diff rents. Les lignes suivantes d nissent une e e cellule de tableaux et font safcher quelques-uns de ses el ments : e >> C ={1:3, rand(2),coucou}; >> C{1} ans = 1 2 3 >> c = C{3} c = coucou Les el ments dune cellule sont ordonn s comme ceux dune matrice, par ligne et par e e colonne ; on y fait r f rence par lutilisation daccolades au lieu de parenth` ses. ee e Exercice Ecrivez une fonction Fonc2Dn5.m qui fournisse une approximation a lordre 2 de la ` d riv e de la fonction argument en autorisant cette fonction a d pendre de param` tres. e e ` e e Ecrivez ensuite une fonction FoncDn6.m qui permette de choisir lordre, mais ne limpose pas. Son appel se fera selon >> Dn = FoncDn6( fonc, x, h, ordre, p1, p2, ...) Lorsque lon ne veut pas xer lordre et que la fonction fonc d pend de param` tres, e e on passera la matrice vide [] pour la variable ordre. Plusieurs arguments en sortie On peut red nir la fonction F2 de facon quelle fournisse aussi la d riv e F de la e e e fonction F : F (x) = 0.01 ex 10 sin x 3. Cela peut se faire de la facon suivante : function [y, yprime] = F2bis(x); % fichier fonction dfinissant la fonction e % F(x) = 0.01*exp(x)+10*cos(x)-3*x; % ainsi que sa derivee. % Lappel se fait selon : % y = F2bis(x); % et renvoie alors seulement les valeurs de F, ou selon % [y, yprime] = F2bis(x); y = 0.01*exp(x)+10*cos(x)-3*x; yprime = 0.01*exp(x) -10*sin(x) -3;

1.7. M-FICHIERS

33

Les deux arguments en sortie sont plac s entre crochets. Dans les deux formats dape pel, on calcule F (x) et F (x). On peut ne faire calculer que F (x) si lon ne veut pas les valeurs de la d riv e : e e function [y, yprime] = F2ter(x); % fichier fonction dfinissant la fonction e % F(x) = 0.01*exp(x)+10*cos(x)-3*x; % ainsi que sa derivee. % Lappel se fait selon : % y = F2ter(x); % et renvoie alors seulement les valeurs de F, ou selon % [y, yprime] = F2ter(x); y = 0.01*exp(x)+10*cos(x)-3*x; if nargout==2 yprime = 0.01*exp(x) -10*sin(x)-3; end

1.7.3 Fichiers de sauvegarde


Il est possible de sauvegarder des variables de lespace de travail en vue dune utilisation ult rieure. Cela se fait a laide de linstruction save. Le format le plus simple est le e ` suivant : save nomfichier X Y Z Les variables X, Y et Z seront sauvegard es dans un chier nomfichier.mat. On e peut les retrouver par lappel : load nomfichier Les chiers que vous avez ainsi sauvegard s apparaissent dans le r pertoire courant e e sous le nom nomfichier.mat. Ces chiers ne sont lisibles que par M ATLAB. Vous pouvez souhaiter exporter vos donn es pour les utiliser dans une autre circonstance. Il faut e alors cr er un chier ASCII. On peut le faire en simple (par d faut) ou double pr cision. e e e Essayez : >> >> >> >> >> >> >> >> >> >> >> A = rand(1,3); save data1 A save data2.txt A -ascii save data3.txt A -ascii -double clear all load data1 load data2.txt whos data2 - A load data3.txt data3 - A

34 Exercice

` CHAPITRE 1. INITIATION A MATLAB

Nous aurons besoin, pour un prochain TD, de disposer dun certain nombre de racines de l quation J0 (x) = 0. Nous allons cr er un chier contenant les valeurs approch es e e e des 200 plus petites racines de cette equation. Pour ce faire, vous modierez le chier VisuracBess.

1.7.4 Lecture de donn es ext rieures e e


M ATLAB peut lire des chiers cr es par dautres logiciels. Nous allons prendre lexemple e de chiers cr es par E XCELL. Ces chiers peuvent vous etre fournis sous plusieurs fore mats : pour les chiers .xls, vous pourrez utiliser les fonctions xlsread ou importdata ; pour les chiers .txt, vous pourrez utiliser les fonctions textread ou importdata. Exercice Vous pouvez recopier a ladresse indiqu e en introduction les chiers Traction.xls ` e et Bruits.txt. Vous allez lire ces chiers depuis M ATLAB. Pour chacun deux, vous allez r cup rer e e une matrice de deux colonnes. La premi` re colonne est constitu es dabsisses, et la see e conde dordonn es. Vous repr senterez les courbes repr sentant chacun de ces echantillons. e e e

35

36

CHAPITRE 2. ANNEXE : LEXIQUE NON EXHAUSTIF

Chapitre 2 Annexe : lexique non exhaustif

Caract` res sp ciaux et op rateurs logiques e e e Symbole = () [] . .. ... ; , % : Usage instruction daffectation utilis es pour marquer la priorit dune expression arithm tique ; e e e contiennent les variables en entr e des fonctions e utilis pour former matrices et vecteurs ; contient les variables en sortie des fonctions e point d cimal e r pertoire au-dessus du r pertoire courant e e continue une suite dinstructions a la ligne suivante ` termine une ligne ; evite lafchage s pare les el ments ou instructions dune ligne et les variables dune fonction e e commentaires utilis s pour la g n ration de vecteurs lignes d l ments r guli` rement espac s, e e e ee e e e par d faut avec un incr ment entier, sinon avec un incr ment a pr ciser ; e e e ` e d signe lensemble des indices dun tableau selon une de ses dimensions e force le format vecteur colonne se place avant et apr` s une chaine de caract` res e e permet de d nir a lint rieur dune chaine de caract` res e ` e e identicateur de fonction depuis la version 6 permet lexecution dune commande du syst` me dexploitation e ET logique ; op` re el ment par el ment pour les tableaux avec faux valant 0 e e e et toute valeur non nulle valant vrai OU logique NON logique OU exclusif, semploie sous la forme xor(A, B) fonction vectorielle logique qui vaut 1 si un el ment du vecteur est non nul e et 0 sinon ; elle op` re sur chaque colonne pour une matrice et semploie sous e la forme any(A) fonction vectorielle logique qui vaut 1 si chaque el ment du vecteur est non e nul ; semploie et op` re comme la pr c dente pour les tableaux e e e

( :) @ ! & | xor any

all

37

Op rateurs arithm tiques e e Symbole + * .* \ .\ / ./ ^ .^ . Usage addition soustraction produit matriciel ; les dimensions doivent etre compatibles (sauf le cas dun scalaire) produit el ment par el ment ; les deux variables doivent avoir les m mes dimensions e e e division a gauche, ou solution de syst` me(s) lin aire(s) : C = A \ B si A*C=B ` e e division a gauche, el ment par el ment ` e e division a droite, ou solution de syst` me(s) lin aire(s) : C = B/A si C*A=B ` e e division a droite, el ment par el ment ` e e puissance de scalaire ou de matrice puissance de chaque el ment dun tableau e conjugu e transpos e e e transpos e e Op rateurs relationnels e Symbole < <= > >= == = Usage inf rieur, compare el ment par el ment des tableaux de m me taille et prend pour e e e e valeur un tableau de cette taille , de coefcients 1 (vrai) ou 0 (faux) inf rieur ou egal, op re comme le pr c dent e e e e sup rieur e sup rieur ou egal e egal diff rent e Variables et fonctions dint r t g n ral e e e e Symbole help helpdesk what type lookfor ans whos save load clear Usage aide en ligne acc` s a une documentation hypertexte de Matlab, g r e par Netscape sous Unix e ` ee fournit la liste des M-chiers du repertoire courant afche le contenu dun M-chier indique les occurences dune chaine de caract` res dans laide en ligne e r sultat de la derni` re instruction lorsquil nest pas affect e e e afche la liste des variables courantes, et leur format sauvegarde une ou plusieurs variables de la session dans un chier retrouve les variables sauvegard es pr c demment e e e supprime une ou plusieurs variables de la session

38

CHAPITRE 2. ANNEXE : LEXIQUE NON EXHAUSTIF

Variables et fonctions dint r t g n ral e e e e Usage d nit une fonction ; en pratique, on enregistre les instructions qui la d nissent e e dans un M-chier de m me nom que la fonction (muni du sufxe .m) e feval evalue une fonction dont le nom est donn en argument e nargin nombre de variables en entr e dune fonction e nargout nombre darguments en sortie dune fonction varargin liste darguments variable en entr e e varargout liste darguments variable en sortie ; d nit une cellule de tableaux e global d nit des variables globales e pause arr` te la session en attente dune r ponse de lutilisateur e e disp afche une variable sans donner son nom, ou un texte find fournit les indices des el ments non nuls dun tableau e for initialise une boucle de r p tition dune suite dinstructions pour des valeurs e e dune variable (compteur) sp ci es par un vecteur e e while boucle de r p tition dune suite dinstructions tant quune condition reste vraie e e if instructions ex cut es sous condition e e else sutilise avec if elseif sutilise avec if end cl t le corps dinstructions de for, while et if o break arr` te l x cution des boucles for ou while e e e size dimensions dun tableau length longueur dun vecteur linspace cr e un vecteur de composantes uniform ment r parties entre deux valeurs e e e logspace cr e un vecteur de composantes r parties logarithmiquement entre deux valeurs e e fliplr inverse lordre des colonnes dun tableau flipud inverse lordre des lignes dun tableau reshape change les dimensions dun tableau ( avec les m mes el ments) e e repmat cr e un tableau en reproduisant une matrice selon les dimensions sp ci es e e e cat cr e une matrice par concatenation e cell cr e une cellule de tableaux e struct cr e une structure de matrices e format pr cise le format dafchage e echo controle lafchage des commandes ex cut es e e more controle le nombre de lignes de chaque page afch e e tic ouvre le compteur de dur e dexecution dune suite de commandes e toc ferme le compteur ouvert par tic cputime compteur de temps CPU cd change le repertoire de travail quit termine une session Matlab Nom function

39

Arithm tique, polyn mes et manipulation de donn es e o e Usage pr cision relative de larithm tique virgule-ottante utilis e e e e unit imaginaire des nombres complexes e valeur absolue ou module dun nombre complexe argument dun nombre complexe racine carr e e partie r elle e partie imaginaire conjugu complexe e plus grand diviseur commun plus petit multiple commun arrondi a lentier le plus proche ` arrondi vers 0 arrondi vers arrondi vers reste apr` s division enti` re : rem(x,y)= x-fix(x./y).*y e e reste sign : mod(x,y)=x-floor(x./y).*y e plus grande composante dun vecteur ; pour une matrice, la fonction renvoie un vecteur ligne form des maxima de chaque colonne e min plus petite composante dun vecteur sort trie les composantes dun vecteur selon lordre croissant mean moyenne des composantes dun vecteur sum somme des composantes dun vecteur std ecart-type des composantes dun vecteur cov matrice de covariance prod produit des composantes dun vecteur cumsum sommes cumul es des el ments dune matrice selon une dimension a pr ciser e e ` e poly construit un polyn me de racines donn es o e roots racines dun polyn mes o polyval evalue un polyn me donn par ses coefcients o e conv produit de polyn mes, ou convolution de vecteurs o deconv division polyn miale ou d convolution de vecteurs o e polyder fournit le polyn me d riv o e e fzero r soud une equation non lin aire e e fsolve r soud un syst` me d quations non lin aires e e e e fmin recherche le minimum dune fonction dune variable fmins recherche le minimum dune fonction de plusieurs variables diff op rateur aux diff rences ; permet de construire les diff r nces nies ou divis es e e ee e Nom eps pi i,j abs angle sqrt real imag conj gcp lcm round fix ceil floor rem mod max

40

CHAPITRE 2. ANNEXE : LEXIQUE NON EXHAUSTIF

Alg` bre lin aire e e Nom zeros ones eye rand randn diag tril triu inv lu chol qr null orth rank eig svd pinv det cond condest norm trace expm sqrtm Usage matrice de 0 matrice de 1 matrice identit e matrice al atoire, de coefcients uniform ment distribu s sur [0, 1] e e e matrice al atoire, de coefcients normalement distribu s e e extrait la diagonale dune matrice, ou cr e une matrice diagonale ou bande e extrait la partie triangulaire inf rieure dune matrice e extrait la partie triangulaire sup rieure dune matrice e inverse dune matrice (par r solution de syst` mes lin aires) e e e factorisation lu dune matrice, avec strat gie de pivot partiel e factorisation de Choleski dune matrice sym trique d nie positive e e factorisation orthogonale-triangulaire dune matrice fournit une base orthonorm e du noyau e fournit une base orthonorm e de limage e rang dune matrice tous les el ments propres dune matrice carr e e e valeurs et vecteurs singuliers dune matrice pseudo-inverse dune matrice d terminant e nombre de conditionnement pour la r solution des syst` mes lin aires, en norme 2 e e e estimation du conditionnement dune matrice carr e, en norme 1 e norme dune matrice (plusieurs normes sont propos es) e trace dune matrice exponentielle de matrice racine carr e matricielle dune matrice carr e e e

Analyse Nom exp, log, log10 sin, asin, sinh, asinh cos, acos, cosh, acosh tan, atan, tanh, atanh cot, acot, coth, acoth sec, asec, sech, asech csc, acsc, csch, acsch besselj, bessely, besselh besseli, besselk gamma, gammainc beta, betainc erf, erfinv Usage exponentielle de base e, logarithme n perien et de base 10 e sinus, arcsinus, sinus hyperbolique et argsh cosinus,... tangente,... cotangente,... secante,... cosecante,... fonctions de Bessel fonctions de Bessel modi es e fonctions gamma fonctions beta fonction derreur (ou fonction de Gauss) et sa r ciproque e

41

Graphiques et visualisations Nom figure plot fplot bar hist pie polar subplot hold axis title legend text xlabel semylogy plot3 bar3 meshgrid mesh hidden surf surfnorm contour meshc clabel quiver contour3 view colormap colorbar getframe movie image print Usage cr e une nouvelle fen tre de visualisation e e graphe lin aire en dimension 2 e graphe dune fonction entre deux valeurs graphe en rectangles verticaux histograme graphe en camembert graphe en coordonn es polaires e permet de partitionner une fen tre de visualisation e conserve le graphique courant d nit les bornes des axes e afche un titre (chaine de caract` res a fournir) e ` afche une l gende sur la gure e afche un commentaire (chaine de caract` res a fournir) en un point donn par e ` e ses coordonn es e pr cise le nom de la variable en absisse e graphique avec une echelle logarithmique en ordonn e e graphe lin aire en dimension 3 e graphe en parall` logrames verticaux e construit un jeu de coordonn es pour la visualisation tridimensionnelle dune e fonction de 2 variables visualise une surface maill e en dimension 3 e fait apparaitre (off) ou disparaitre (on) les parties cach es dune surface maill e e e visualise une surface ombr e (en couleurs) en dimension 3 e repr sente les normales aux surfaces en dimension 3 e repr sente les isolignes dune surface en dimension 2 e combine mesh et contour fait apparaitre les valeurs des isolignes repr sente des gradients par des ` ches e e repr sente les isolignes dune surface en dimension 3 e sp cie le point de vue dun graphe en dimension 3 e d nit le jeu de couleurs e afche une echelle des couleurs forme un vecteur colonne a partir dun graphique en vue dune animation ` execute lanimation visuelle avec la matrice pr c dente e e cr e une image en interpretant les valeurs des coefcients dune matrice e imprime un graphique, ou le sauvegarde en format post-script

42

CHAPITRE 2. ANNEXE : LEXIQUE NON EXHAUSTIF

Analyse num rique e Nom spline interp1 interpn quad quadl ode45 ode113 ode23s ode15s fft ifft fft2 Usage spline cubique dinterpolation interpolation de donn es en dimension 1 e interpolation de donn es en dimension n e int gration num rique par la m thode de Simpson e e e int gration num rique par une methode adaptative de Lobatto e e r solution approch e d quations ou de syst` mes diff rentiels non raides e e e e e par m thodes de Runge-Kutta emboit es dordre 4-5 e e r solution approch e d quations ou de syst` mes diff rentiels non raides e e e e e par des m thodes dAdams-Bashforth-Moulton de type PECE dordre variable e r solution approch e d quations ou de syst` mes diff rentiels raides e e e e e par la m thode de Rosenbrock dordre 2 e r solution approch e d quations ou de syst` mes diff rentiels raides e e e e e par une m thode de diff rentiation r trograde dordre variable e e e transform e de Fourier rapide en dimension 1 e transform e de Fourier rapide inverse en dimension 1 e transform e de Fourier rapide en dimension 2 e

Matrices creuses Nom sparfun sparse full speye spdiags nnz issparse spy symmmd symrcm pcg gmres luinc cholinc eigs Usage fournit une liste de fonctions qui sappliquent aux matrices creuses convertit au format creux une matrice pleine, ou cr e une matrice creuse e convertit au format plein une matrice creuse matrice identit en format creux e cr e une matrice diagonale ou une matrice bande en format creux e nombre d l ments non nuls ee vrai si la matrice est sous format creux visualise la r partition des coefcients non nuls dune matrice e renum rotation par lalgorithme du degr minimum e e renum rotation par lalgorithme Cuthill et Mac-Kee inverse e r solution dun syst` me lin aire de matrice sym trique d nie positive par la e e e e e m thode du gradient conjugu pr conditionn e e e e r solution dun syst` me lin aire par la m thode GMRES e e e e factorisation LU incompl` te dune M-matrice creuse e factorisation de Choleski incompl` te dune H-matrice creuse e quelques el ments propres dune matrice carr e e e

Chapitre 3 Bibliographie
Matlab Guide, D. J. Higham, N. J. Higham, SIAM, 2000. Introduction to Scientic Computing, A Matrix-Vector Approach Using MATLAB, C.F. Van Loan, MATLAB curriculum Series, 1997. Apprendre et Matriser Matlab, versions 4 et 5 et SIMULINKr , M. Mokhtari, A. Mesbah, Springer, 1997.

43

Vous aimerez peut-être aussi