Vous êtes sur la page 1sur 52

INITIATION MATLAB

Table des mati`res e


1 Initiation ` Matlab a 1.1 Pour commencer . . . . . . . . . . . . . . 1.2 Utiliser les aides en ligne . . . . . . . . . . 1.2.1 La recherche par mot clef . . . . . 1.2.2 La recherche par navigation . . . . 1.3 Variables et Matrices . . . . . . . . . . . . 1.3.1 Matrices . . . . . . . . . . . . . . 1.3.2 Oprations usuelles . . . . . . . . e 1.3.3 Oprations sur les tableaux . . . . e 1.3.4 Manipulations sur les matrices . . 1.4 Boucles et tests . . . . . . . . . . . . . . . 1.4.1 La boucle for . . . . . . . . . . . . 1.4.2 La boucle while . . . . . . . . . . . 1.4.3 Le choix conditionnel if . . . . . . . 1.4.4 Utiliser un chier de commandes . 1.5 Fonctions de base . . . . . . . . . . . . . . 1.5.1 Fonctions scalaires . . . . . . . . . 1.5.2 Fonctions vectorielles . . . . . . . . 1.5.3 Fonctions matricielles . . . . . . . . 1.6 Graphiques . . . . . . . . . . . . . . . . . 1.6.1 Visualisation des courbes en 2D . . 1.6.2 Visualisation des courbes en 3D (*) 1.6.3 Visualisation des surfaces (*) . . . 1.6.4 La notion dobjets graphiques (*) . 1.7 M-chiers . . . . . . . . . . . . . . . . . . 1.7.1 Scripts et fonctions . . . . . . . . . 1.7.2 Fonctions . . . . . . . . . . . . . . 1.7.3 Fichiers de sauvegarde . . . . . . . 1.7.4 Lecture de donnes extrieures . . . e e 2 Annexe : lexique non exhaustif 3 Bibliographie 5 5 6 6 7 8 8 11 13 13 14 14 15 16 17 18 18 20 20 20 20 23 24 26 29 29 31 37 38 39 47

. . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

` TABLE DES MATIERES

Chapitre 1 Initiation ` Matlab a


Matlab est un logiciel de calcul et de visualisation, dont les entits de base sont e des matrices : Matlab est une abrviation de Matrix Laboratory. e Matlab est un langage interprt : il propose des facilits de programmation et ee e de visualisation, ainsi quun grand nombre de fonctions ralisant diverses mthodes e e numriques. e La meilleure faon dapprendre ` utiliser ce logiciel est de lutiliser vous mme, c a e en faisant des essais, en commettant des erreurs et en essayant de comprendre les messages derreur qui vous seront renvoys. Ces messages sont en anglais ! e Ce document est destin ` vous aider pour quelques premiers pas avec Matlab. ea Les sections et sous-sections signales par (*) donnent des complments qui pourront e e vous tre utiles ` lavenir, mais peuvent tre rserves pour une lecture ultrieure. e a e e e e

1.1

Pour commencer

Nos salles de TP utilisent un environnemment Linux. Pour accder au logiciel e Matlab, vous avez plusieurs possibilits : e - Vous pouvez utiliser les icnes du menu droulant de KDE, et suivre les arboo e rescenses ` partir du menu CRI. Vous aurez acc`s ` plusieurs versions de Mata e a lab. Les sessions compl`tes mettent en uvre une machine virtuelle java. Elles e peuvent se rvler un peu trop lourdes lorsquil y a de nombreux utilisateurs. e e Elles ouvrent une fentre du type de celle reprsente ` la gure 1.1. e e e a - Vous pouvez accder aux mmes versions ` partir dun terminal. Cest cette e e a faon de procder que nous vous recommandons. Elle vous permet en c e eet de mieux organiser votre travail. Vous devez : ouvrir un terminal (icne sur la barre de thes de votre cran), c e crer un rpertoire pour le TP en cours. Aujourdhui, vous aller crer le e e e rpertoire InitMatlab en entrant la commande : e mkdir InitMatlab vous rendre dans ce rpertoire : e cd InitMatlab lancer par exemple une session compl`te : e 5

` CHAPITRE 1. INITIATION A MATLAB matlab -jvm

Fig. 1.1 Exemple de session matlab avec le support java (matlab -jvm). Vous reconna trez votre fentre de travail par le prompt : e >> Vous pourrez quitter Matlab en tapant dans cette fentre : e >> quit Dans la suite de cette sance, vous tes invits ` tester les instructions prsentes e e e a e e en les tapant apr`s le prompt. Les instructions et variables Matlab sont donnes e e dans une typographie de machine ` crire. Les oprations mathmatiques et valeurs ae e e reprsentes par ces variables sont crites en italiques. e e e Un certain nombre de chiers vous sont fournis. Vous pourrez les rcuprer en e e utilisant un navigateur et en vous rendant ` ladresse : a http ://www-gmm.insa-toulouse.fr/huard/InitMatlab/

1.2
1.2.1

Utiliser les aides en ligne


La recherche par mot clef

La commande lookfor est une commande de recherche par mot clef. Elle permet de retrouver toutes les fonctions Matlab dont les commentaires introductifs contient une chaine de caract`res donns. 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 rponse, jobtiens la liste suivante : e HIST Histogram. HISTC Histogram count. ROSE Angle histogram plot. On utilise ensuite la commande help pour plus de prcisions. Cette commande e ache les commentaires de la fonction indique. Ces commentaires contiennent lobe jet de la fonction ainsi que les dirents formats dappel. Ils contiennent galement e e une rubrique See Also qui donne les noms de fonctions dont lobjet est en rapport avec la fonction considre. Ces commentaires sont achs sur la fentre de travail. ee e e

Fig. 1.2 Page daccueil de la fentre ouverte par helpwin. e

1.2.2

La recherche par navigation

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

` 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 ` une documentation hypertexte compl`te e a e supporte par le navigateur internet. Il sut alors de se laisser guider dans sa ree cherche. Cette aide nest pas accessible lorsque lon utilise Matlab sans le support java.

1.3
1.3.1

Variables et Matrices
Matrices

Dans Matlab, toutes les variables reprsentent des matrices. Par exemple, on e multiplie deux matrices a et b par a*b, et le produit de deux scalaires scrit de e la mme faon : ils sont interprts comme des matrices 1X1. e c ee On peut dnir une matrice dans Matlab de plusieurs faons : e c par la liste de ses lments, ee en la gnrant par une suite dinstructions et de fonctions, e e en la lisant dans un chier extrieur. e Si lon reprsente la touche enter de votre clavier par le symbole , les instruce tions suivantes : >> A = [3 2 -2 ;-1 0 1 ;1 1 0] et >> A = [ 3 2 -2 -1 0 1 1 1 0 ] crent la mme matrice 3X3. e e Dans la suite, le symbole ne sera plus indiqu. Le symbole = dsigne loprateur e e e daectation. Il permet de xer ou de changer la valeur dune variable. En ayant xecut lune ou lautre de ces commandes, vous aurez remarqu que e e e Matlab ache la valeur de la variable A que vous venez de dnir. Vous pouvez e viter lachage en faisant suivre la commande dun point-virgule. Ne la retapez e pas pour le vrier ; en utilisant la `che ascendante de votre clavier , vous pouvez e e rappeler la commande >> 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] ; Matlab distingue les majuscules et les minuscules ; si vous tapez :

1.3. VARIABLES ET MATRICES >> a vous recevrez le message : ??? Undefined function or variable a.

Lensemble des variables actives peut tre consult grce aux commandes whos e e a et who : >> t = 1; >> whos Name Size Bytes A 3x3 72 Grand total is 9 elements using 72 bytes

Class double array

La commande clear permet de dtruire une variable. e >> who Your variables are: A t >> clear t >> who Your variables are: A La commande clear all rinitialise lenvironnement (en dtruisant toutes les vae e riables actives). Lnumration des lments dune matrice ou dun vecteur peut tre implicite. e e ee e Essayez par exemple : >> m = [-3:3] >> x = [1:-0.25:-1] Les matrices m et x sont des matrices ` une ligne (vecteurs-lignes). Matlab vous a fournit les dimensions dune variable par la fonction size : >> size(m) ans = 1

Si lon veut un vecteur, on peut taper >> m = m ou >> x = x(:)

10

` CHAPITRE 1. INITIATION A MATLAB

Lapostrophe dnit la transposition : A reprsente la matrice AT . Les deux e e points imposent le format colonne : >> 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 crer directement un vecteur en sparant les composantes par un e e point-virgule : >> b = [3 ; 0 ; 2 ] ; size(b) Un coecient quelconque dune matrice est rfrenc par ses indices de ligne et ee e de colonne, dans cet ordre. Par exemple, linstruction : >> A(1,2) renvoie la rponse : e ans = 2 ans est le nom dune variable qui reoit le dernier rsultat dune instruction ou c e dune suite dinstructions lorsquil na t aect ` aucune variable. On peut faire ee ea sacher la valeur dune variable sans achage de son nom ni de ans >> disp(A(1,2)) Certaines fonctions de Matlab crent des matrices particuli`res. Les quelques e e matrices suivantes sont parmi les plus couramment utilises : e eye(n) renvoie la matrice identit, habituellement note In en mathmatiques ; e e e essayez eye(4), ones(n,m) renvoie une matrice ` n lignes et m colonnes dont tous les coefa cients sont des 1, zeros(n,m) matrice ` n lignes et m colonnes dont tous les coecients sont a des 0 ; elle sert beaucoup pour les initialisations. linspace(a,b,n) cre une matrice ligne de n points rguli`rement espacs sur e e e e lintervalle [a, b] (bornes comprises). rand cre une matrice alatoire. Essayez >> B = rand(3,4). Dans quel intere e valle sont choisis les coecients 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

11

1.3.2

Oprations usuelles e

Matlab permet deectuer les oprations usuelles en tendant leur dnition e e e aux matrices selon les r`gles de lalg`bre linaire. e e e Laddition et la soustraction ne mritent aucun commentaire particulier, sinon e que les tailles des matrices doivent tre gales, essayez : e e >> >> >> >> 3+5 ans -2 A + ones(3) m + x La derni`re commande aura entrain cette rponse cinglante : e e e ??? Error using ==> + Matrix dimensions must agree. Matlab autorise que les dimensions ne soient pas gales lorsquune des variables e est un scalaire. A + 1 fournit la mme valeur que A + ones(3). e La multiplication de deux variables sera possible si les matrices quelles reprsentent 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 reprsentent respectivement des matrices 3 3 e et 3 4, la variable C reprsente une matrice 3 4, mais la commande B*A e susciterait 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 dnira une matrice 3 3 (de rang 1 !). e Matlab autorise que les dimensions ne concordent pas lorsquune des variables reprsente un scalaire. e Matlab distingue la division ` gauche et la division ` droite : a a >> 3/4 ans = 0.7500 >> 3\4 ans = 1.3333

12

` CHAPITRE 1. INITIATION A MATLAB

Ainsi cette division doit elle sinterpreter comme le produit par linverse de la variable situe du ct vers lequel penche la barre : 3/4 reprsente 3 1 alors que 3\4 e oe e 4 1 reprsente 3 4. Cette ide se gnralise aux variables reprsentant des matrices : e e e e e >> x = A\b ; >> A*x - b Comment interprter le dernier rsultat renvoy par la machine ? Vous aurez e e e compris que la variable x contient la solution du syst`me linaire A x = b. Au e e passage, vous remarquerez que cette nouvelle aectation de la variable x crase la e prcdente. e e Quelle reexion vous sugg`re le rsultat de : e e >> b/A On peut se demander ce que reprsente la matrice M dnie par e e >> M = A\eye(3) Matlab autorise le produit et les divisions par un scalaire. Llvation ` une puissance donne est dnie par le symbole ee a e e >> >> >> >> 2^3 A^2 A^0 A^(-1) Vous avez retrouv la matrice M. e Les r`gles de priorit des oprations sont conformes ` celles qui sont utilises e e e a e dans la plupart des langages de programmation. Elles sont donnes par le tableau e suivant : Niveau de priorit e Opration e 1 puissance 2 multiplication et division 3 addition et soustraction A niveau de priorit gale, les oprations sont eectues de la gauche vers la droite. ee e e Les parenth`ses vous permettent dorganiser les priorits dans vos calculs. Leur e e utilisation est recommande pour viter les ambiguits et risques derreurs. e e e >> >> >> >> >> >> 2 + 3^2 2 + 3*3^2 2 + (3*3)^2 (2 + 3*3)^2 A^2\A A*A\A : essayez

1.3. VARIABLES ET MATRICES

13

1.3.3

Oprations sur les tableaux e

Une matrice peut tre vue comme un tableau de valeurs, indpendament de e e lalg`bre linaire. Matlab permet de travailler avec les valeurs contenues dans un e e tableau. Pour laddition et la soustraction, il ny a pas de dirence entre matrice e et tableau de valeurs. Pour la multiplication, les divisions et llvation ` une puissance, on fait prcder ee a e e le symbole dopration dun point. Les tableaux doivent avoir la mme 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 l`ve ` la puissance 2 chaque lment de A. Cest un ee a ee raccourci pour A. (2*ones(3)).

1.3.4

Manipulations sur les matrices

Matlab 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 forme des trois derni`res colonnes : e e C1 = C(:,3:5); et on retrouve ones(3) en faisant acher C(1 :3,1 :3). Matlab propose quelques fonctions qui facilitent certaines manipulations. La fonction diag extrait la diagonale dune matrice, sous forme dun vecteur, ou cre une matrice diagonale, ` partir dun vecteur ; essayez par exemple les inse a tructions suivantes : >> >> >> >> R = rand(5); diag(R) diag(ans) diag(diag(R))

Largument gnral de diag est double ; entrez : e e >> help diag Vous constatez que lon peut ainsi extraire dune matrice ses lments dune paee rall`le ` la diagonale. Essayez : e a

14 >> >> >> >>

` 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 infrieure dune matrice, lments diagonaux e ee compris. Elle admet aussi plusieurs arguments >> tril(R) >> tril(R,1) triu renvoie la partie triangulaire suprieure dune matrice. e reshape reformate une matrice, cest-`-dire change le nombre de lignes et de a colonnes, en prenant les lments colonne par colonne. ee repmat cre une grande matrice en recopiant une matrice donne selon le e e format fournit.

1.4

Boucles et tests

Les principales instructions de contrle proposes par Matlab sont for, while o e et if ; elles fonctionnent ` peu pr`s comme leurs quivalents dans les autres lana e e gages 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 xecuter e instructions. Les instructions suivantes permettent de calculer une valeur approche de ex , e pour x = 10, en utilisant la formule :
n

e
k=0

xk k!

(1.1)

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

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

15

On pourra vrier plus tard que la valeur obtenue, s 2.2026 104 est assez e 10 proche de e . Plusieurs boucles peuvent tre embo ees. Comme Matlab est un language ine t terprt, il faut essayer dviter les boucles quand cest possible. Pour cela on peut ee e utiliser des boucles implicites. Pour construire la matrice H = (hi,j ) M3 (R) avec 1 , on peut utiliser les instructions suivantes : hi,j = i+j1 >> 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 pose e sible. Notez galement que lon a indent les boucles : cest recommand pour une e e e meilleure lisibilit ! e On peut aussi construire H de la faon suivante : c >> >> >> >> >> 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 sparer linitialisation de la boucle de linse truction suivante. Dans la second exemple, puisque lon va ` la ligne, le prompt de Matlab ne a rapparait que lorsque la boucle est correctement termine. e e

1.4.2

La boucle while

Linstruction while respecte la syntaxe suivante : while expression instructions end expression dsigne le rsultat dune opration logique. Elle est construite en e e e utilisant des oprateurs relationnels et logiques. e

16

` CHAPITRE 1. INITIATION A MATLAB

Oprateurs relationnels e Oprateur e gal e dirent e suprieur e infrieur ou gal e e Symbole == = > <=

Oprateurs logiques e Oprateur e et logique non logique ou logique Symbole & |

Les instructions seront xcutes tant que expression sera vraie. Toute valeur e e e dirente de 0 est assimile au 1 logique, cest-`-dire au vrai. Essayez e 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 reprsent dans larithmtique utilise par Matlab : 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 xcutes que si expression est vraie. Il est possible de e e e proposer une alternative, en indiquant les instructions ` xecuter lorsque expression ae est fausse : if expression instructions 1 else instructions 2 end Il est galement possible dembo les choix proposs : e ter e if expression1 instructions 1 elseif expression2 instructions 2

1.4. BOUCLES ET TESTS else instructions 3 end

17

1.4.4

Utiliser un chier de commandes

Les exemples dutilisation de la boucle for nous ont amens ` crire plusieurs e ae lignes de commandes. Lorsque lon veut recommencer lexcution dun de ces exemples e en modiant la valeur dun param`tre, il faudra rappeler toutes les lignes qui suivent e sa dnition : cest le cas si lon veut valuer (1.1) pour une autre valeurs de x ou e e de n. Cette opration devient tr`s dsagrable lorsque lon a emboit des boucles ! e e e e e De mme que vous utilisez un brouillon avant de rendre un devoir, de faon ` e c a pouvoir faire des ratures, changer les expressions o` vous avez dtect une erreur, u e e vous pouvez diter un chier de commandes Matlab dont vous vous servirez comme e dun brouillon. Un tel chier sappelle un M-chier. Il devra tre enregistr sous le nom de votre e e choix avec le suxe .m. Pour crire ce chier, vous devez utiliser un diteur : Matlab vous en propose e e un auquel vous pouvez accder en vous servant des icnes de la fentre. 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 dirent de 1. Sil est impair, on le multiplie par 3 et e on ajoute 1 ; sinon, on le divise par 2. On recommence avec ce nouveau nombre tant quil nest pas gal ` 1. Dans ce cas, en eet, on reproduira indniment le cycle e a 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 lexprience, car personne na jamais trouv de e e contre exemple. Mais, on a jamais pu dmontrer quil devait en tre ainsi ! e e On vous propose de tester cette conjecture. Lobjectif de lexercice est dcrire un e programme Matlab qui propose ` lutlisateur de donner un nombre entier dirent a e de 1, et ` partir de ce nombre, de compter le nombre ditrations de la suite de a e Syracuse avant quelle natteigne la valeur 1. On prendra la prcaution de limiter le e nombre ditrations ` 1000 pour viter que le programme ne tourne indniment. e a e e Cela pourrait se produire en cas derreur de saisie. Pour cela, vous allez commencer par diter le chier dans lequel vous crirez e e ce programme. 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 appropries. e Voici quelques indications : - La fonction input permet de proposer ` lutilisateur de rentrer un entier n a initial.

18

` 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 - Le symbole % permet de placer des commentaires. - Le nombre ditrations sera donn par la variable compteur. e e - la boucle while sera cotrle par deux expressions logiques, qui autoriseront oe son xcution tant que n restera dirent de 1 et compteur infrieur ou gal ` e e e e e a 1000. - Le test sur la parit de n utilise la fonction rem (abrviation de remainder) e e qui donne le reste de la division enti`re par 2 : ce reste vaut 1 si n est impair e et 0 sinon. Remarque 2 On ne sest pas trop brid en limitant le nombre des itrations ` 1000. e e a Pour des valeurs initiales infrieures ou gales ` 10 000, la suite la plus longue est e e a obtenue pour une valeur initiale de 6171. Sa longueur est 262.

1.5
1.5.1

Fonctions de base
Fonctions scalaires
sin cos tan exp log rem abs sqrt sign round tanh acosh

Ce sont les fonctions usuelles ; par exemple :

Ces fonctions font partie des fonctions lmentaires proposes par Matlab. Pour ee e en avoir la liste, vous pouvez taper : >> help elfun

1.5. FONCTIONS DE BASE Comme la liste est longue, vous pouvez contrler son dlement : o e >> more on, help elfun, more off

19

Le dlement se fait ligne ` ligne (en tapant une touche quelconque) ou par pages e a de 20 lignes (en tapant la barre despacements). Vous pouvez maintenant comparer la variable s calcule 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 reprsente une matrice A, la variable S = sin(A) reprsentera une e e matrice S dont les coecients sont si,j = sin(ai,j ). Pour lexponentielle et la racine carre, qui poss`dent une version matricielle, Matlab propose les fonctions expm e e et sqrtm. Le cas des polynmes est un peu particulier : un polynme peut tre dni par o o e e ses coecients : on utilise dans ce cas une matrice ligne : par exemple, le polynme o 3 2 Q(x) = x + 2x 3 sera reprsent 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 polynme Q seront fournies par la fonction roots. A linverse, o on peut aussi dterminer les coecients dun polynme ` partir de ses racines en e o a utilisant la fonction poly : >> r=[1 2 3]; K = poly(r) >> polyval(K,r) Ces instructions assignent ` K la valeur [1 -6 11 -6] qui dnit le polynme a e o 3 2 K(x) = x 6x + 11x 6. Le polynme ainsi calcul a toujours le coecient de o e son terme de plus fort degr gal ` 1. ee a Comme les fonctions usuelles polyval traite les matrices comme des tableaux, Il faudra utiliser la fonction polyvalm pour valuer un polynme de matrice. e o Comparez polyval(K,A) et polyvalm(K,A). Certaines fonctions spciales sont galement proposes par Matlab : par exemple, e e e les fonctions de Bessel de premi`re esp`ce notes J (x) sont donnes par la fonction e e e e besselj dont le format dappel le plus courant est, pour le param`tre entier nu et e la variable x : y = besselj(nu,x) ; Vous pouvez retrouver linformation sur le format dutilisation par : >> help besselj La liste de ces fonctions spciales vous sera renvoye par la commande : e e >> more on, help specfun, more off

20

` CHAPITRE 1. INITIATION A MATLAB

1.5.2

Fonctions vectorielles

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

dont vous trouverez lobjet par la commande help lorsquil nest pas vident. e 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 rsultat annonc ` e ea la 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 dfaut, mais aussi 1 ou ), e rank : rang. Une liste un peu plus compl`te, mais non exhaustive, de ces fonctions vous est e fournie en annexe. Une liste compl`te est fournie en rponse ` la commande e e a >> more on, help matfun, more off

1.6
1.6.1

Graphiques
Visualisation des courbes en 2D

Matlab permet de tracer facilement le graphe de fonctions scalaires. Cela se fait ` laide de la fonction plot . Elle prend en argument des paires de vecteurs a de mme dimension. Voici par exemple le moyen dobtenir le graphe de la fonction e 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) ;

21

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

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

Style trait continu (t) pointills (t) e trait-point (t) tirets (t) plus (m) cercles (m) toiles (m) e croix (m)

Les style de trac suivis de (t) sont des tracs continus, avec une interpolation e e entre les points fournis, alors que pour les autres on utilise des marqueurs pour ne reprsenter que les points (xi , yi). On peut combiner ces deux styles. e On peut tracer les graphes de plusieurs fonctions simultanment. Essayez maine tenant : >> z = sin(2*x);plot(x,y,x,z); On peut alors lgender notre graphique de la faon suivante : e c >> legend(cos(3x),sin(2x)); On peut galement obtenir ces deux courbes par la succession de commandes : e >> plot(x,y); >> hold on; >> plot(x,z); La seule dirence est que cette fois, les deux graphes sont tracs avec la mme e e e couleur. hold on g`re le graphique courant de faon que les commandes graphiques e c ` suivre vont sajouter ` ce graphique. hold off est a valeur par dfaut : dans ce a a e cas une nouvelle commande plot eacera le graphique existant. Les axes sont dnis automatiquement ; on peut choisir les bornes des coore donnes du graphe ` laide de la fonction axis . Essayez par exemple : e a >> axis([-1 5 -1.5 1.5]); Pour la suite de notre travail, il est prfrable que vous entriez maintenant la ee commande :

22 >> hold off;

` CHAPITRE 1. INITIATION A MATLAB

Le format de la fonction plot permet bien s r de reprsenter facilement des u e courbes paramtriques : e >> plot(y,z); On obtient, pour les valeurs dnies plus haut, une courbe connue sous le nom e de courbe de Lissajoux. Les instructions suivantes vont rduire lg`rement lchelle, e e e e donner un titre et un nom aux axes, et faire appara une grille sur le fond : tre >> >> >> >> >> 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 ` laquelle est reli votre ordinateur. a e Cest la derni`re de vos gures qui sera imprime. e e

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

On vous demande dcrire un M-chier ExempleCourbe.m pour tracer la courbe e reprsentant 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 fentre de visualisation de e 100 faon que les absisses soient comprises entre 1 et 11 et les ordonnes entre 50 et c e 200. Vous pourrez complter cette gure en y ajoutant les axes et un titre. Ces axes e peuvent tre tracs ` la main en utilisant les fonctionnalits de la fentre graphique e e a e e (voir les icnes). Vous les obtiendrez aussi en terminant votre programme par les o instructions donnes 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 (*) Soit (x) la fonction dnie sur R par (x) = e On consid`re la fonction e a, b, = xa xb 1 . exp( 0 1 ) si |x| < 1, 1 x2 sinon.

23

(1.3)

On vous demande de reprsenter cette fonction pour a = 1, b = 2 et = 0.5. e Vous dnirez la fentre de reprsentation pour que 2 x 3 et 0.5 y e e e 0.5. On voudrait pouvoir donner un titre ` cette gure, et pour cela reprsenter les a e lettres grecques et : cela peut se faire de la faon suivante : c title(La fonction \phi_{a,b,\epsilon}); On peut souhaiter des caract`res un peu plus grands pour ce titre : e title(La fonction \phi_{a,b,\epsilon},Fontsize,12); La taille de fonte est prcise par la proprit Fontsize, suivie de la valeur choisie. e e ee A Cette instruction utilise les r`gles du langage LTEXqui est un langage de proe grammation de traitement de texte particuli`rement bien adapt ` la gestion des e e a formules mathmatiques. Elle appelle quelques commentaires : e Le caract`re permet de mettre en position dindice les caract`res entre accoe e lades qui le suivent. Le caract`re \ permet ` LTEX de reconna ses commandes. Vous en troue a A tre verez quelques-unes dans le tableau 1.2.

1.6.2

Visualisation des courbes en 3D (*)

La fonction qui permet de reprsenter 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 mme dimension contenant les trois e coordonnes. 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;

24

` CHAPITRE 1. INITIATION A MATLAB

minuscules grecques majuscules grecques

symboles mathmatiques e

Commande

Symbole

Commande

Symbole

Commande

Symbole

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

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

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

Tab. 1.2 Principaux symboles mathmatiques reconnus par Matlab. e

1.6.3

Visualisation des surfaces (*)

Matlab permet de reprsenter des surfaces donnes en coordonnes cartsiennes e e e e ou sous forme paramtrique. La forme paramtrique peut scrire : 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 peru e mettent cette reprsentation, parmi lesquelles mesh reprsente un treillis, et surf e e une surface pleine. Elles ont le mme format dappel : e surf(X,Y,Z,C) ; X,Y et Z sont des matrices de mmes dimensions contenant les coordonnes de e e points de la surface. C permet de dnir les couleurs et peut tre omis. Nous ale e lons reprsenter le cne dequation x2 + y 2 2xz = 0 en utilisant la reprsentation e o e paramtrique donnee pour (, ) ] , [] 0, 12[ par : e x = (1 + cos ), y = sin , z = . On peut procder de la faon suivante : e c >> >> >> >> >> n = 31 ; theta = pi*[-n:2:n]/n ; r = linspace(0,12,n); X = r*(1+cos(theta)) ; Y = r*sin(theta) ; Z = r*ones(size(theta)); surf(X,Y,Z);

1.6. GRAPHIQUES

25

Il est important de remarquer que X, Y et Z sont des matrices de mme taille ! e La surface reprsente laisse apparaitre les traces dune grille qui la recouvre. e e Laspect de la surface est contrl par la variable shading, dont les valeurs possibles oe sont faceted (valeur par dfaut), flat (supprime le treillis), et interp (adoucit les e transitions). Essayez : >> shading interp; Les couleurs sont dnies par une matrice C de mme taille que celles des coore e donnes, et par dfaut, cette matrice est C=Z, de sorte que dune certaine faon, la e e c couleur est proportionnelle ` laltitude du point de la surface. Tout cela dpend a e du choix dune palette graphique. Essayez : >> C = rand(size(Z)) ; surf(X,Y,Z,C); La palette de couleurs de la fentre de visualisation est dnie par la variable e e colormap. Sa valeur par dfault est jet . Essayez : e >> colormap(cool); La liste des palettes disponibles est fournie avec celle de toutes les fonctions ou variables de contrle dun graphique 3D par la commande : o >> more on, help graph3d, more off Examinons ` prsent le trac dune surface donne par son quation cartsienne a e e e e e z = f (x, y). En gnral, on dispose dune famille de valeurs de x et dune famille de e e valeur de y stockes dans 2 vecteurs, respectivement x et y. On va devoir construire e deux matrices 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 reprsenter la surface dquation z = exp(x2 y 2) , 2 < x, y < 2, e e on pourra procder 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);

26

` CHAPITRE 1. INITIATION A MATLAB

1.6.4

La notion dobjets graphiques (*)

Dirents objets et leur identication e Lorsque que lon trace une gure, par exemple la courbe reprsentant la fonction e y = sin x sur lintervalle [3.5, 3.5], on utilise une fonction graphique de Matlab. On peut le faire simplement de la faon suivante : c >> x = linspace(-3.5,3.5) ; >> y = sin(x); >> plot(x,y); Les commandes prcdentes auront cr la gure 1.3 e e ee
1

0.8

0.6

0.4

0.2

0.2

0.4

0.6

0.8

1 4

Fig. 1.3 Une gure obtenue par la commande de base plot. La fonction plot que lon a utilis a gnr un assez grand nombre de donnes. e e ee e Ces donnes sont les caractristiques de notre gure. Le syst`me de reprsentation e e e e graphique de Matlab est un syst`me orient objet, et les donnes qui caractrisent e e e e une gure sont relatives aux dirents objets qui la constituent. e Certaines de ces donnes peuvent tre prcises lors de lappel de la fonction : e e e e on peut choisir le type de trac, sa couleur ... Dautres pourraient ltre en utilisant e e des fonctions qui le permettent : legend, xlabel... Si lon avait voulu modier la position la taille de la fentre graphique, il aurait e cependant fallu utiliser la fonction figure avant la fonction plot et xer les valeurs de la proprit Position. ee

1.6. GRAPHIQUES

27

Pour grer une fentre graphique, il convient de pouvoir identier ces objets, e e avant de xer ou de modier leurs proprits. Cette identication se fait par les ee handles, littralement les poignes pour les attraper ! e e La premi`re tape consiste ` rcuprer ces handles. La fonction findobj le pere e a e e met. 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 aches, mais de se rappeler que h e est un vecteur de 4 composantes dont chacune est un handle. Quels sont les objets ainsi identis ? e >> get(h,type) ans = root figure axes line La premi`re composante dont la valeur est 0 est la racine, cest-`-dire lcran. La e a e seconde est le fentre. Son handle est galement dsign par la fonction gcf (get e e e e current gure). Cette structure est arborescente : ` partir de la racine, on peut trouver une a ou plusieurs fentres ; dans chaque fentre, un ou plusieurs syst`mes daxes, et dans e e e chacun dentre eux, un ou plusieurs courbes. Modier les proprites e Chaque type dobjet g`re certaines proprits. On va commencer par modier la e ee taille de la fentre. Pour cela, il faut modier la proprit Position. e ee Pour voir comment elle est dnie, nous rcuprons sa valeur. e e e >> get(h(2),Position) ans = 181 457 560 420 Vous naurez pas les mmes valeurs. Ces valeurs reprsentent respectivement la e e distance la fentre au bord gauche de lcran, sa distance au bord infrieur de lcran, e e e e sa largeur et sa hauteur. Elles sont donnes en Pixels. e Pour modier la taille de cette fentre, il faut conna la taille de lcran. Cest e tre e une proprit de la racine : ee

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

` CHAPITRE 1. INITIATION A MATLAB

1024

On peut prfrer travailler en coordonnes relatives avant de xer cette taille : ee e >> set(h(2),Units,normalized,Position,[0.1 0.3 0.6 0.4]) Pour conna lensemble des proprits relatives ` lobjet figure, il sut de tre ee a taper get(h(2)). Pour obtenir la liste de ces proprits avec les valeurs autorises, lorsquelles sont ee e prdnies, on tape set(h(2)). e e Lobjet h(3) est de type axes. On peut lister le champ de ses proprits avec ee leur 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 tiqueter e les ticks. Une proprit du nom de Title gure dans la liste des proprits de lobjet axes ee ee et sa valeur est un nombre rel. Il sagit l` encore dun handle, car le titre est lui e a mme un objet graphique. e

>>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 dnition des couleurs peut se faire par un e tableau 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 e 0 0]. On peut aussi modier certaines proprits de lobjet de type line On en obtient ee la liste par get(h(4)). Pour conna les possibilits oertes au niveau des types de trac, tre e e >>set(h(4),Linestyle) >>set(h(4),Marker)

1.7. M-FICHIERS
Fonction sinus

29

pi

pi/2

pi/2

pi

Fig. 1.4 Figure modie grce ` la manipulation des hanlde. e a 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, ` la gure 1.4. e a Il faudrait quand mme modier son titre ... e

1.7
1.7.1

M-chiers
Scripts et fonctions

Bien que lon puisse faire beaucoup de choses en travaillant directement dans la fentre de commandes de Matlab, nous avons dja constat que quil tait souvent e e e e plus pratique dutiliser des M-chiers. Ils permettent - de corriger plus facilement ses erreurs, - de garder un travail en cours pour le reprendre plus tard, - dexcuter plusiers fois un programme en modiant certains param`tres, e e - dchanger son travail avec des camarades. e Jusqua prsent, ces chiers taient des chiers dinstructions, ou chiers scripts. e e Un chier script est un chier contenant une suite dinstructions Matlab directement xcutables. Ces instructions sont xcutes en utilisant les variables de lese e e e e pace de travail, ou en crant des variables dans cet espace. e Matlab utilise galement des M-chiers. En fait, un grand nombres des fonce tions que nous avons rencontres sont crites dans des M-chiers. Il sagit de chiers e e fonction. Vous pouvez galement crer vos propres fonctions. e e Un chier fonction a sa premi`re ligne dinstruction xcutable qui commence e e e par le mot clef function. Il peut recevoir des variables en entre, mais utilise ces e

30

` CHAPITRE 1. INITIATION A MATLAB

variables en dehors de lespace de travail. Aucune des variables cres ou modies ee e lors de son xcution nest visible depuis lespace de travail ` moins quelle ne soit e e a une variable en sortie de la fonction ! Nous allons illustrer la dirence entre ces deux types de chiers sur un exemple. e Si le fonction f est susament rguli`re, la formule de Taylor permet dobtenir une e e valeur approche de sa drive en un point x, pour un pas h, suivant e e e h f (x + h) f (x) = f (x) + f (x) + O(h2 ) f (x). h 2 (1.4)

% % % %

Fichier ScriptDn1 pour calculer la derivee numerique de sinus au point 1 pour le pas h = 0.01.

function Res = Fonc1Dn1(h); % Derivee numerique de sinus % au point 1 en fonction du % 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 sauvegards dans votre espace de e travail, vous pourrez tapez les commandes quivantes : >> >> >> >> >> >> clear all ScriptDn1 who Err = abs(Dn-cos(1)) clear all FoncDn1

Matlab 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 commente ; Matlab vous indique le numro de la ligne o` elle sest e e u produite. A prsent, 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

31

>> Der = FoncDn1(pas); >> Der-ans On peut faire quelques remarques : - Le chier script sxcute sans quon lui fournisse darguments. Le chier fonce e tion a besoin quon lui fournisse les arguments quil ne cre pas, ici le pas. e - Le nom de la variable aecte de la valeur de ce pas dans lespace de travail e na pas dimportance ; cest sa valeur qui est passe. e - Les variables cres par lxcution du script sont vues dans lespace de travail. ee e e Celles qui sont cres lors de lxcution de la fonction ne le sont pas. Ce sont ee e e des variables locales. Largument en sortie prend le nom quon lui donne dans la session Matlab.

1.7.2

Fonctions

Fonctions simples Nous avons dj` rencontr la fonction F (x) = 0.01 ex + 10 cos x 3 x. ea e Dans ce cas, on dispose de deux faons pour crer une fonction Matlab qui c e calcule les valeurs de F : - comme la fonction F peut se dnir en une seule ligne, on peut le faire avec e la fonction inline >> F1 = inline(0.01*exp(x)+10*cos(x)-3*x) - de faon plus gnrale, on peut diter un chier que lon va appeler F2.m qui c e e e devra commencer par le mot-clef function : vous pouvez le dnir de la faon e c suivante function y = F2(x) ; y = 0.01*exp(x)+10*cos(x)-3*x; La premi`re dnition est ` utiliser lorsque lon nenvisage pas dutilisation e e a ultrieure de cette fonction. La dnition au moyen dun chier permet de la consere e ver. Cependant, ainsi quelle est rdige, cette fonction a encore le dfaut que son e e e objet nest pas immdiatement lisible ; on risque de lavoir oubli quand on aura e e besoin de la rutiliser. Il faut donc la commenter. e

32

` CHAPITRE 1. INITIATION A MATLAB

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. e Entre autres commentaires, vous devrez toujours indiquer le format dappel de la fonction. Voici comment je vous sugg`re dcrire 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 placs immdiatement apr`s la premi`re ligne (de dclaration). e e e e e De cette faon, ils constitueront la rponse fournie par Matlab ` la commande : c e a >> 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 tre passes en argument. La commande e e global permet de dnir des variables globales. Elles doivent tre dclares gloe e e e bales au dbut de la fonction et dans lespace de travail. e Exercice e e La formule (1.4) est dite dordre 1 car lerreur dapproximation de la drive est de la forme O(h). On peut obtenir une formule dordre 2, cest-`-dire avec une erreur a 2 en O(h ) en utlisant la formule f (x + h) f (x h) h2 = f (x) + f (x) + O(h3 ) f (x). 2h 6 (1.5)

On vous demande dcrire une fonction Fonc2Dn1.m qui calcule la drive ape e e proche de la fonction sinus au point x = 1 pour le pas h en utilisant la formule e (1.5) Vous crirez galement un script TestDn.m dans lequel : e e - vous dnirez le vecteur des pas, pas = 10.^(-[1 : 16]); e - vous calculerez les drives approches pour ces pas en utilisant les deux fonce e e tions ; - vous calculerez les erreurs Err1 et Err2 commises dans chaque cas ; - vous reprsenterez ces erreurs en fonction du pas avec des coordonnes logae e rithmiques : loglog(pas, Err1, b-+, pas, Err2, r-*) ; - vous pourrez rchir et commenter cette gure ! e e

1.7. M-FICHIERS Fonctions de plusieurs variables

33

On peut passer plusieurs arguments ` une fonction. Supposons que lon souhaite a crer une fonction Matlab qui calcule la fonction F(a, b) prsentant un pic peu e e marqu au point a et un pic plus marqu au point b : e e F(a, b) (x) = 1 2 + . (x a)2 + 0.01 (x b)2 + 0.002

Les param`tres a et b seront des variables de la fonction que lappellera par e exemple Foncapics. On peut encore procder de deux faons. e c - la premi`re utilise la fonction inline : Essayez. e la seconde consiste ` crer le chier Foncapics.m, par exemple : a 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 Crz les fonctions Fonc1Dn2.m et Fonc2Dn2.m qui calcule la driv de la fonction ee e e sinus en un point x et pour un pas h ` xer par lutilisateur. a Exercice (*) Modiez les fonctions prcdentes de faon que lon puisse passer un vecteur x e e c et un vecteur h en arguments. Le format dappel devra prciser : 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 drive dune fonction ` choie e a sir par lutilisateur. La fonction Fonc1Dn3.m ralise cet objectif. Les restrictions dutilisation sont e donnes dans le commentaire. e

34 function Dn = Fonc1Dn3(fonc,x,h);

` CHAPITRE 1. INITIATION A MATLAB

% Approximation ` lordre 1 de la drive de la a e e % 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 mrite quelques commentaires : e - si fonc.m est une fonction prdnie de Matlab (par exemple sin) ou le nom e e dun chier de fonction (par exemple F2), on pourra crire lun ou lautre des e deux appels ci-dessous : >> Dn = Fonc1Dn3(F2, x, pas); >> Dn = Fonc1Dn3(@F2, x, pas); - si fonc est le nom dune fonction dnie par inline, (par exemple F1), on e devra formuler lappel selon : >> Dn = Fonc1Dn3(F1, x, pas); A vous de crer la fonction Fonc2Dn3.m pour une approximation ` lordre 2. e a Arguments optionnels en entre (*) e Le nombre de variables en entre nest pas ncessairement x. La fonction e e e FoncDn4 propose de choisir lordre de la formule dapproximation de la drive que e e lon va utiliser. On xe par dfaut cet ordre ` 1. On utilise les fonctions prcdentes e a e e pour calculer les approximations de la drive. 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.

1.7. M-FICHIERS % - ordre est optionnel ; par defaut, ordre = 1.

35

if nargin ==3 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 Cette fonction appelle quelques commentaires : - nargin renvoie le nombre de variables utilises dans lappel ` la fonction. e a - le branchement dnit par switch, case, end na pas t prsent prcdemment. e ee 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 appeles, ici Fonc1Dn3.m et Fonc2Dn3.m doivent tre dnies dans e e e le mme rpertoire que la fonction qui les appelle. e e Nombre variable darguments (*) La fonction dont on veut calculer la drive peut dpendre 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{:});

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

` CHAPITRE 1. INITIATION A MATLAB

varargin dsigne une liste de longueur quelconque de variables qui peuvent tre e e de tout format ; elle est gre comme une cellule de tableaux. ee Les cellules de tableaux sont un des moyens proposs par Matlab pour grer une e e collection de variables de types et formats dirents. Les lignes suivantes dnissent e e une cellule de tableaux et font sacher quelques-uns de ses lments : ee >> C ={1:3, rand(2),coucou}; >> C{1} ans = 1 2 3 >> c = C{3} c = coucou Les lments dune cellule sont ordonns comme ceux dune matrice, par ligne et ee e par colonne ; on y fait rfrence par lutilisation daccolades au lieu de parenth`ses. ee e Exercice Ecrivez une fonction Fonc2Dn5.m qui fournisse une approximation ` lordre 2 a de la drive de la fonction argument en autorisant cette fonction ` dpendre de e e a e param`tres. 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 dpend de pae ram`tres, on passera la matrice vide [] pour la variable ordre. e Plusieurs arguments en sortie On peut rednir la fonction F2 de faon quelle fournisse aussi la drive F de e c e e la fonction F : F (x) = 0.01 ex 10 sin x 3. Cela peut se faire de la faon suivante : c 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);

1.7. M-FICHIERS % 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;

37

Les deux arguments en sortie sont placs entre crochets. Dans les deux formats e dappel, on calcule F (x) et F (x). On peut ne faire calculer que F (x) si lon ne veut pas les valeurs de la drive : 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 ultrieure. Cela se fait ` laide de linstruction save. Le format le plus e a simple est le suivant : save nomfichier X Y Z Les variables X, Y et Z seront sauvegardes dans un chier nomfichier.mat. On e peut les retrouver par lappel : load nomfichier Les chiers que vous avez ainsi sauvegards apparaissent dans le rpertoire coue e rant sous le nom nomfichier.mat. Ces chiers ne sont lisibles que par Matlab. Vous pouvez souhaiter exporter vos donnes pour les utiliser dans une autre circonse tance. Il faut alors crer un chier ASCII. On peut le faire en simple (par dfaut) e e ou double prcision. Essayez : e >> >> >> >> >> >> A = rand(1,3); save data1 A save data2.txt A -ascii save data3.txt A -ascii -double clear all load data1

38 >> >> >> >> >> load data2.txt whos data2 - A load data3.txt data3 - A

` CHAPITRE 1. INITIATION A MATLAB

1.7.4

Lecture de donnes extrieures e e

Matlab peut lire des chiers crs par dautres logiciels. Nous allons prendre ee lexemple de chiers crs par Excell. Ces chiers peuvent vous tre fournis sous ee e plusieurs formats : 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 ` ladresse indique en introduction les chiers Traction.xls a e et Bruits.txt. Vous allez lire ces chiers depuis Matlab. Pour chacun deux, vous allez rcuprer e e une matrice de deux colonnes. La premi`re colonne est constitues dabsisses, et e e la seconde dordonnes. Vous reprsenterez les courbes reprsentant chacun de ces e e e chantillons. e

39

40

CHAPITRE 2. ANNEXE : LEXIQUE NON EXHAUSTIF

Chapitre 2 Annexe : lexique non exhaustif

Caract`res spciaux et oprateurs logiques e e e Symbole = () [] . .. ... ; , % : Usage instruction daectation utilises pour marquer la priorit dune expression arithmtique ; e e e contiennent les variables en entre des fonctions e utilis pour former matrices et vecteurs ; contient les variables en sortie des fonctions e point dcimal e rpertoire au-dessus du rpertoire courant e e continue une suite dinstructions ` la ligne suivante a termine une ligne ; evite lachage spare les lments ou instructions dune ligne et les variables dune fonction e ee commentaires utiliss pour la gnration de vecteurs lignes dlments rguli`rement espacs, e e e ee e e e par dfaut avec un incrment entier, sinon avec un incrment ` prciser ; e e e a e dsigne 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 dnir ` lintrieur dune chaine de caract`res e a e e identicateur de fonction depuis la version 6 permet lexecution dune commande du syst`me dexploitation e ET logique ; op`re lment par lment pour les tableaux avec faux valant 0 e ee ee 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 lment du vecteur est non nul ee 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 lment du vecteur est non ee nul ; semploie et op`re comme la prcdente pour les tableaux e e e

( :) @ ! & | xor any

all

41

Oprateurs arithmtiques e e Symbole + * .* \ .\ / ./ ^ .^ . Usage addition soustraction produit matriciel ; les dimensions doivent tre compatibles (sauf le cas dun scalaire) e produit lment par lment ; les deux variables doivent avoir les mmes dimensions ee ee e division ` gauche, ou solution de syst`me(s) linaire(s) : C = A \ B si A*C=B a e e division ` gauche, lment par lment a ee ee division ` droite, ou solution de syst`me(s) linaire(s) : C = B/A si C*A=B a e e division ` droite, lment par lment a ee ee puissance de scalaire ou de matrice puissance de chaque lment dun tableau ee conjugue transpose e e transpose e Oprateurs relationnels e Symbole < <= > >= == = Usage infrieur, compare lment par lment des tableaux de mme taille et prend pour e ee ee e valeur un tableau de cette taille , de coecients 1 (vrai) ou 0 (faux) infrieur ou gal, opre comme le prcdent e e e e e suprieur e suprieur ou gal e e gal e dirent e Variables et fonctions dintrt gnral e e e e Symbole help helpdesk what type lookfor ans whos save load clear Usage aide en ligne acc`s ` une documentation hypertexte de Matlab, gre par Netscape sous Unix e a ee fournit la liste des M-chiers du repertoire courant ache le contenu dun M-chier indique les occurences dune chaine de caract`res dans laide en ligne e rsultat de la derni`re instruction lorsquil nest pas aect e e e ache la liste des variables courantes, et leur format sauvegarde une ou plusieurs variables de la session dans un chier retrouve les variables sauvegardes prcdemment e e e supprime une ou plusieurs variables de la session

42

CHAPITRE 2. ANNEXE : LEXIQUE NON EXHAUSTIF

Variables et fonctions dintrt gnral e e e e Usage dnit une fonction ; en pratique, on enregistre les instructions qui la dnissent e e dans un M-chier de mme nom que la fonction (muni du suxe .m) e feval value une fonction dont le nom est donn en argument e e nargin nombre de variables en entre dune fonction e nargout nombre darguments en sortie dune fonction varargin liste darguments variable en entre e varargout liste darguments variable en sortie ; dnit une cellule de tableaux e global dnit des variables globales e pause arr`te la session en attente dune rponse de lutilisateur e e disp ache une variable sans donner son nom, ou un texte find fournit les indices des lments non nuls dun tableau ee for initialise une boucle de rptition dune suite dinstructions pour des valeurs e e dune variable (compteur) spcies par un vecteur e e while boucle de rptition dune suite dinstructions tant quune condition reste vraie e e if instructions xcutes sous condition e e e else sutilise avec if elseif sutilise avec if end clt le corps dinstructions de for, while et if o break arr`te lxcution des boucles for ou while e e e size dimensions dun tableau length longueur dun vecteur linspace cre un vecteur de composantes uniformment rparties entre deux valeurs e e e logspace cre un vecteur de composantes rparties 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 mmes lments) e ee repmat cre un tableau en reproduisant une matrice selon les dimensions spcies e e e cat cre une matrice par concatenation e cell cre une cellule de tableaux e struct cre une structure de matrices e format prcise le format dachage e echo controle lachage des commandes xcutes e e e more controle le nombre de lignes de chaque page ache e tic ouvre le compteur de dure 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

43

Arithmtique, polynmes et manipulation de donnes e o e Usage prcision relative de larithmtique virgule-ottante utilise e e e unit imaginaire des nombres complexes e valeur absolue ou module dun nombre complexe argument dun nombre complexe racine carre e partie relle e partie imaginaire conjugu complexe e plus grand diviseur commun plus petit multiple commun arrondi ` lentier le plus proche a 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 cart-type des composantes dun vecteur e cov matrice de covariance prod produit des composantes dun vecteur cumsum sommes cumules des lments dune matrice selon une dimension ` prciser e ee a e poly construit un polynme de racines donnes o e roots racines dun polynmes o polyval evalue un polynme donn par ses coecients o e conv produit de polynmes, ou convolution de vecteurs o deconv division polynmiale ou dconvolution de vecteurs o e polyder fournit le polynme driv o e e fzero rsoud une quation non linaire e e e fsolve rsoud un syst`me dquations non linaires e e e e fmin recherche le minimum dune fonction dune variable fmins recherche le minimum dune fonction de plusieurs variables diff oprateur aux dirences ; permet de construire les dirnces nies ou divises e e ee e Nom eps pi i,j abs angle sqrt real imag conj gcp lcm round fix ceil floor rem mod max

44

CHAPITRE 2. ANNEXE : LEXIQUE NON EXHAUSTIF

Alg`bre linaire 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 alatoire, de coecients uniformment distribus sur [0, 1] e e e matrice alatoire, de coecients normalement distribus e e extrait la diagonale dune matrice, ou cre une matrice diagonale ou bande e extrait la partie triangulaire infrieure dune matrice e extrait la partie triangulaire suprieure dune matrice e inverse dune matrice (par rsolution de syst`mes linaires) e e e factorisation lu dune matrice, avec stratgie de pivot partiel e factorisation de Choleski dune matrice symtrique dnie positive e e factorisation orthogonale-triangulaire dune matrice fournit une base orthonorme du noyau e fournit une base orthonorme de limage e rang dune matrice tous les lments propres dune matrice carre ee e valeurs et vecteurs singuliers dune matrice pseudo-inverse dune matrice dterminant e nombre de conditionnement pour la rsolution des syst`mes linaires, en norme 2 e e e estimation du conditionnement dune matrice carre, en norme 1 e norme dune matrice (plusieurs normes sont proposes) e trace dune matrice exponentielle de matrice racine carre matricielle dune matrice carre 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 nperien et de base 10 e sinus, arcsinus, sinus hyperbolique et argsh cosinus,... tangente,... cotangente,... secante,... cosecante,... fonctions de Bessel fonctions de Bessel modies e fonctions gamma fonctions beta fonction derreur (ou fonction de Gauss) et sa rciproque e

45

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 cre une nouvelle fentre de visualisation e e graphe linaire en dimension 2 e graphe dune fonction entre deux valeurs graphe en rectangles verticaux histograme graphe en camembert graphe en coordonnes polaires e permet de partitionner une fentre de visualisation e conserve le graphique courant dnit les bornes des axes e ache un titre (chaine de caract`res ` fournir) e a ache une lgende sur la gure e ache un commentaire (chaine de caract`res ` fournir) en un point donn par e a e ses coordonnes e prcise le nom de la variable en absisse e graphique avec une echelle logarithmique en ordonne e graphe linaire en dimension 3 e graphe en parall`logrames verticaux e construit un jeu de coordonnes pour la visualisation tridimensionnelle dune e fonction de 2 variables visualise une surface maille en dimension 3 e fait apparaitre (off) ou disparaitre (on) les parties caches dune surface maille e e visualise une surface ombre (en couleurs) en dimension 3 e reprsente les normales aux surfaces en dimension 3 e reprsente les isolignes dune surface en dimension 2 e combine mesh et contour fait apparaitre les valeurs des isolignes reprsente des gradients par des `ches e e reprsente les isolignes dune surface en dimension 3 e spcie le point de vue dun graphe en dimension 3 e dnit le jeu de couleurs e ache une chelle des couleurs e forme un vecteur colonne ` partir dun graphique en vue dune animation a execute lanimation visuelle avec la matrice prcdente e e cre une image en interpretant les valeurs des coecients dune matrice e imprime un graphique, ou le sauvegarde en format post-script

46

CHAPITRE 2. ANNEXE : LEXIQUE NON EXHAUSTIF

Analyse numrique e Nom spline interp1 interpn quad quadl ode45 ode113 ode23s ode15s fft ifft fft2 Usage spline cubique dinterpolation interpolation de donnes en dimension 1 e interpolation de donnes en dimension n e intgration numrique par la mthode de Simpson e e e intgration numrique par une methode adaptative de Lobatto e e rsolution approche dquations ou de syst`mes direntiels non raides e e e e e par mthodes de Runge-Kutta emboites dordre 4-5 e e rsolution approche dquations ou de syst`mes direntiels non raides e e e e e par des mthodes dAdams-Bashforth-Moulton de type PECE dordre variable e rsolution approche dquations ou de syst`mes direntiels raides e e e e e par la mthode de Rosenbrock dordre 2 e rsolution approche dquations ou de syst`mes direntiels raides e e e e e par une mthode de direntiation rtrograde dordre variable e e e transforme de Fourier rapide en dimension 1 e transforme de Fourier rapide inverse en dimension 1 e transforme 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 cre une matrice creuse e convertit au format plein une matrice creuse matrice identit en format creux e cre une matrice diagonale ou une matrice bande en format creux e nombre dlments non nuls ee vrai si la matrice est sous format creux visualise la rpartition des coecients non nuls dune matrice e renumrotation par lalgorithme du degr minimum e e renumrotation par lalgorithme Cuthill et Mac-Kee inverse e rsolution dun syst`me linaire de matrice symtrique dnie positive par la e e e e e mthode du gradient conjugu prconditionn e e e e rsolution dun syst`me linaire par la mthode 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 lments propres dune matrice carre ee 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 Ma triser Matlab, versions 4 et 5 et SIMULINKr , M. Mokhtari, A. Mesbah, Springer, 1997.

47

Aide-mmoire pour MATLAB

Dans les exemples ci-dessous : x,y,z sont des scalaires ; u,v,w sont des vecteurs ; A,B,C sont des matrices

GENERAL General purpose commands help load help plot load toto load toto.txt save toto affiche laide propos dune commande Charge des variables depuis un fichier : charge le fichier espace de travail TOTO.MAT charge le fichier texte TOTO.TXT sauve les variables dans le fichier TOTO.MAT affiche la liste des variables dfinies efface variables et fonctions de la mmoire

save whos clear

OPS Operators and special characters = z=x+y z=x+y % Blabla z=x+y ; x=y ,u=v u=[1 2 3] u=[1,2,3] A=[1 2 3;4 5 6] x=u(2) x=A(1,2) x=A(5) u=A(:,2) u=A(2,:) u=A(:) B=A(:,5:7) v=5:8 v=5:2:10 v=5:0.5:7 * .* Affectation idem, avec commentaire idem, sans affichage du rsultat Deux instructions sur la mme ligne Dfinit un vecteur ligne idem Dfinit une matrice 2x3 (2 lignes x 3 cols) 2me lment du vecteur u lment de A situ la ligne 1, colonne 2 5me lment de A (lu colonne par colonne) toute la 2me colonne de A toute la 2me ligne de A tous les lments de A (en une colonne) toutes les lignes, colonnes 5 7 v reoit [5 6 7 8] v reoit [5 7 9] v reoit [5 5.5 6 6.5 7]

[ ]

( )

+ + * \

/ ^ oprations sur scalaires ./ .^ opr. lmt par lmt sur vecteurs ou matrices A = B ./ C chaque lmt de B est divis par le mme lmt de C x=u*v sur vecteurs : produit scalaire C=A*B sur matrices : produit matriciel division matricielle gauche v = A\u v est solution de : A*v = u - si A est carre, v vaut INV(A)*u - sinon v est solution aux moindres carrs division matricielle droite v = u/A v est solution de : v*A = u - si A est carre, v vaut u*INV(A) - sinon v est solution aux moindres carrs A matrice transpose et conjugue de A A. matrice transpose non conjugue de A galit, ingalit Attention : & et ! ont la mme priorit

== &

ET , OU , NON

LANG Programming language constructs if if i==j x=2 ; elseif abs(i-j)==1 x=-1 ; else x=0 ; end for x=1:10 y=y+1/x; u(x)=0; end while x<10 x=x+.5 ; end

for

for x=1:.1:10 y=y+1/x ; end

while

script

function

global input pause

Le fichier TOTO.M contient par exemple: Pour lexcuter : z1=x+y ; toto z2=x-y ; Toutes les variables sont globales Le fichier TATA.M contient par exemple: Pour lexcuter : function [c,d]=tata(a,b) [z1,z2]=tata(x,y) c=a+b ; d=a-b ; Toutes les variables sont locales global x,y x et y sont des variables globales (dclaration renouveler dans chaque fonction) z=input(Combien ?) La rponse est value, par exemple : 3 ou [1 3] ou 3*10 ou 3*a+b ou sqrt(2) Attend une touche au clavier

ELMAT Elementary matrices and matrix manipulation zeros ones eye diag length size ans pi i inf NaN A=zeros(3) A=ones(3,5) A=eye(3) A=diag(u) u=diag(A) x=length(u) [l c]=size(A) = 3.1416 = sqrt(-1) = + Not a Number matrice 3x3 remplie avec des 0 matrice 3x5 remplie avec des 1 matrice 3x3 identit la matrice diagonale A reoit le vecteur u le vecteur u reoit la diagonale de A nombre d'lments du vecteur u nombre de lignes et de colonnes de A dernire rponse qui na pas t affecte

ELFUN Elementary math functions exp sin sinh atan2 abs angle real imag log cos cosh z = rho phi z = z = log10 tan tanh atan(y,x) = abs(x) = angle(x) real(x) imag(x) sqrt asin asinh

acos acosh

atan atanh

arc tangente de y/x (entre - et ) valeur absolue relle (ou module complexe) phase dun nombre complexe partie relle partie imaginaire

MATFUN Matrix functions numerical linear algebra norm det trace inv eig x=norm(v) x=norm(A) x=det(A) x=trace(A) B=inv(A) [W L]=eig(A) pour un vecteur : racine(somme(vi)) pour une matrice : max(valeurs singulires) dterminant dune matrice carre somme des lments diagonaux

polyeig

inverse de la matrice carre A Si A est carre : A*V-*V=0 W : matrice contenant les vecteurs propres V L : matrice diagonale des valeurs propres [W L]=polyeig(A,B,C) Si A,B,C sont carres: (A+*B+C)*V=0 W : matrice contenant les vecteurs propres V L : vecteur contenant les valeurs propres R=chol(A) factorisation de Cholesky : A=R*R A doit tre dfinie, positive, symtrique R triangulaire suprieure (avec diagonale) factorisation Lower Upper : A = L*U A doit tre carre U triang sup, L triang inf (avec diag) dcomposition orthogonale-triangulaire : A = Q*R R triang sup, Q unitaire (?)

chol

lu

[L U]=lu(A)

qr

[Q R]=qr(A)

DATAFUN Data analysis and Fourier transforms min mean std var sort sum prod cumsum trapz cumtrapz max median z=min(x,y) z=max(v) z=mean(v) sigma=std(u) sigma=std(u,1) x=var(u) x=var(u,1) v=sort(u) x=sum(u) w=cumsum(v) x=trapz(v) x=trapz(u,v) w=cumtrapz(v) w=cumtrapz(u,v) v=diff(u) minimum de 2 valeurs composante maximum dans un vecteur moyenne, mdiane dviation standard estime (= cart-type) idem sur population complte variance estime (=sigma) idem sur population complte trie les lments par ordre croissant somme ou produit des lments somme cumulative des lments intgrale de v par les trapzes (delta=1) intgrale de v.du intgrale cumulative intgrale cumulative de v.du

diff

gradient

del2

diffrences dordre 1 : v(i)=u(i+1)-u(i) u v/delta v=diff(u,x) diffrences dordre x : v=diff(diff((u))) drive xime de u v/delta^x AX = drives de A selon x (colonnes), en chaque point AY = drives selon y (lignes) AX et AY ont la mme dimension que A [AX AY]=gradient(A) deltax = deltay = 1 [AX AY]=gradient(A,h) deltax = deltay = h [AX AY]=gradient(A,hx,hy) deltax = hx , deltay = hy [AX AY]=gradient(A,u,v) u et v = coordonnes en x et y L = Laplacien de A , en chaque point L a la mme dimension que A B=del2(A) mmes syntaxes que la fonction gradient

POLYFUN Interpolation and polynomials interp1 Interpolation une dimension vy=interp1(ux,uy,vx) interpole les points de coordonnes (vx,vy) entre les points (ux,uy) vy=interp1(uy,vx) ux vaut 1, 2, 3, Interpolation linaire par dfaut Sinon, rajouter le paramtre spline ou cubic Interpolation 2 dimensions vz=interp2(ux,uy,uz,vx,vy) interpole les points de coordonnes (vx,vy,vz) entre les points (ux,uy,uz) vz=interp2(uz,vx,vy) les coordonnes ux et uy sont 1,2,3, Interpolation linaire par dfaut Sinon, rajouter le paramtre spline ou cubic r=roots(p) calcule les racines du polynme dfini par : p(1).x^n + + p(n).x + p(n+1) p=polyfit(u,v,n) calcule les coefficients du polynme de degr n qui approche les points (ui,vi) au sens des moindres carrs y=polyval(p,x) value le polynme p pour la valeur x

interp2

roots polyfit

polyval

FUNFUN Function functions and ODE solvers fun est dfinie dans le fichier FUN.M (voir plus haut LANG function) fplot trace une fonction fplot(fun,[x1 x2]) trace fun(x) entre x1 et x2 fplot(fun,[x1 x2],[],[],[],P1,P2,]) appelle fun(x,P1,P2,) trace une fonction implicite : ezplot(fun,[x1,x2,y1,y2]) trace fun(x,y)=0 dans le domaine trace une courbe paramtrique : ezplot(funx,funy,t1,t2) trace x=funx(t), y=funy(t) recherche un minimum dune fonction (optimisation 1D) x=fminbnd(fun,x1,x2) fun(x) est un minimum local (x1<x<x2) x=fminbnd(fun,x1,x2,[],P1,P2,) appelle fun(x,P1,P2,) recherche un minimum dune fonction (optimisation n D) U=fminsearch(fun,U0) fun(U) est minimum local (U0 val init) U=fminsearch(fun,U0,[],P1,P2,) appelle fun(U,P1,P2,) recherche un zero dune fonction : fun(x) est 0 x=fzero(fun,x0) x0 valeur initiale x=fzero(fun,[x1 x2]) x1 < x < x2 x=fzero(fun,x0,[],P1,P2,) appelle fun(x,P1,P2,) intgration numrique dune fonction z=quad(fun,x1,x2) intgre fun(x) entre x1 et x2 z=quad(fun,x1,x2,[],[],P1,P2,) appelle fun(x,P1,P2,) intgration numrique dune fonction de 2 variables fun doit accepter un vecteur pour x : fun(ux,y) z=dblquad(fun,x1,x2,y1,y2) intgre fun(x,y) rsout le systme dqua diffs du 1er ordre : du/dt=fun(t,u) fun doit retourner un vecteur colonne ode45(fun,[t0,tmax],u0) trace u(t) de t0 tmax [t,u]=ode45(fun,[t0,tmax],u0) retourne t et u(t) t = instants de t0 tmax (vecteur colonne) u = valeurs aux instants t, ranges par lignes

ezplot

fminbd

fminsearch

fzero

quad quad8 dblquad

ode45 ode23 ode113

GRAPH2D Two dimensionnal graphs plot plot(ux,uy) trace uy(ux) plot(ux1,uy1,ux2,uy2,) tracs multiples plot(uy) si uy est rel : trace uy([1 2 ]) si uy est complexe : trace Nyquist Un paramtre additionnel peut tre ajout chaque trac : plot(ux1,uy1,g-,ux2,uy2,ro) trac 1 en trait continu vert, trac 2 en cercles rouges identiques plot, avec axe(s) logarithmiques

loglog semilogx semilogy polar subplot

polar(ur,ut) subplot(x,y,z)

trace en polaire : ur=rho, ut=thta divise la figure en x parties verticalement et y horizontalement, et active la z-ime

hold figure legend title xlabel ylabel

hold on la figure courante ne seffacera pas hold off la fig courante seffacera chaque trac figure cre une nouvelle figure figure(3) active la figure 3 legend(Courbe 1,Courbe 2) title(Titre) xlabel(Axe X)

GRAPH3D Three dimensionnal graphs plot3 plot3(ux,uy,uz) plot(ux1,uy1,uz1,ux2,uy2,uz2,) paramtre additionnel: go : y*-- mesh(Ax,Ay,Az) trace un maillage mesh(ux,uy,Az) trace un maillage mesh(Az) trace un maillage trace une surface (idem mesh) trace une courbe en 3D tracs multiples vert,ronds,pointills jaune,toiles,tirets 3D en couleurs sur une grille sur une grille rgulire

mesh

surf