Vous êtes sur la page 1sur 20

INSA Toulouse Dpartement STPI PO ICBE 2me anne UV3 dinformatique 2007-2008

Travaux pratiques de programmation Matlab

Arnaud Cockx Fabrice Deluzet Samy Gallego Alain Huard Alain Lin Jean-Christophe Michelucci Jrme Morchain Violaine Roussier-Michon

Table des matires


1 TP dinitiation (4 sances TP) 1.1 Acces Matlab . . . . . . . . . . . . . . . . . . 1.2 Variables et Matrices . . . . . . . . . . . . . . . . 1.2.1 Matrices . . . . . . . . . . . . . . . . . . 1.2.2 Oprations usuelles . . . . . . . . . . . . 1.2.3 Oprations sur les tableaux . . . . . . . . 1.2.4 Manipulations sur les matrices . . . . . . 1.3 Boucles et tests . . . . . . . . . . . . . . . . . . . 1.4 Fonctions de base . . . . . . . . . . . . . . . . . . 1.4.1 Fonctions scalaires . . . . . . . . . . . . . 1.4.2 Fonctions vectorielles . . . . . . . . . . . . 1.4.3 Fonctions matricielles . . . . . . . . . . . 1.5 Graphiques . . . . . . . . . . . . . . . . . . . . . 1.5.1 Visualisation des courbes en 2D . . . . . 1.5.2 Visualisation des courbes en 3D . . . . . . 1.5.3 Visualisation des surfaces . . . . . . . . . 1.6 M-chiers . . . . . . . . . . . . . . . . . . . . . . 1.6.1 Fichiers "scripts" ou chiers dinstructions 1.6.2 Fichiers functions . . . . . . . . . . . . 1.6.3 Fichiers de sauvegarde . . . . . . . . . . 1.7 Utiliser les aides en ligne . . . . . . . . . . . . . . 1.7.1 La recherche par mot clef . . . . . . . . . 1.7.2 La documentation hypertexte . . . . . . . 1.8 Expressions et fonctions MATLAB utilises . . . 5 6 9 9 11 13 13 14 16 16 17 18 18 18 20 20 22 22 24 28 29 29 29 29 31 32 32 33 34 35 37 38

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2 TP1 : Programmation structure, tracs de courbes (4 sances TP) 2.1 Mthodologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Premiers pas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 Dnition de fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4 Reprsentation de fonctions . . . . . . . . . . . . . . . . . . . . . . . . . 2.5 Dveloppement de Taylor dune fonction de plusieurs variables . . . . . . 2.6 Annotation dun trac, fonctionnalits avances . . . . . . . . . . . . . . 2.7 Expressions et fonctions MATLAB utilises . . . . . . . . . . . . . . . .

3 TP2 : Intgration numrique - Sensibilit la discrtisation (2 sances TP) 3.1 Mthodologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Mthode du point milieu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.1 Elments thoriques . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.2 Algorithme et programmation . . . . . . . . . . . . . . . . . . . . . . 3.2.3 Implmentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.4 Application numrique . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 Mthode des trapzes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.1 Elments thoriques . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.2 Algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.3 Implmentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.4 Application numrique . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4 Expressions et fonctions Matlab utilises . . . . . . . . . . . . . . . . . . . 4 TP3 : Recherche des zros dune fonction relle sances TP) 4.1 Objectif . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Mthodologie . . . . . . . . . . . . . . . . . . . . . . 4.3 Mthode de dichotomie (sans test de bornes) . . . . 4.3.1 Elments thoriques . . . . . . . . . . . . . . 4.3.2 Illustration thorique . . . . . . . . . . . . . . 4.3.3 Algorithme . . . . . . . . . . . . . . . . . . . 4.3.4 Implmentation . . . . . . . . . . . . . . . . . 4.3.5 Application numrique . . . . . . . . . . . . . 4.3.6 Contre-exemple . . . . . . . . . . . . . . . . . 4.4 Mthode de dichotomie (avec test de bornes) . . . . 4.4.1 Elments thoriques . . . . . . . . . . . . . . 4.4.2 Algorithme . . . . . . . . . . . . . . . . . . . 4.4.3 Implmentation . . . . . . . . . . . . . . . . . 4.4.4 Application numrique . . . . . . . . . . . . . 4.5 Expressions et fonctions Matlab utilises . . . . . . 4.6 Complment thorique sur la prcision de calcul . . . 5 TP4 : Diagonalisation de matrices (2 sances 5.1 Mthodologie . . . . . . . . . . . . . . . . . . 5.2 Quelques rappels mathmatiques (*) . . . . . 5.3 Position du problme physique . . . . . . . . 5.4 Programmation . . . . . . . . . . . . . . . . . 5.5 Expressions et fonctions MATLAB utilises . TP) . . . . . . . . . . . . . . . . . . . . variable relle (2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

39 40 40 40 42 42 43 43 43 45 45 45 45 46 47 47 47 47 48 49 50 50 51 51 51 51 52 52 52 52 53 54 54 55 55 57

6 TP5 : Application de lanalyse en composantes principales des donnes de procd de traitement biologique en lit bactrien (4 sances TP) 58 6.1 Mthodologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 6.2 Introduction au traitement biologique en lit bactrien . . . . . . . . . . . . . 59

6.3

6.4

6.5

6.2.1 Lits bactriens . . . . . . . . . . . . . . . . . . . . 6.2.2 Systmes de contrle . . . . . . . . . . . . . . . . . 6.2.3 Description de la campagne de mesures . . . . . . 6.2.4 Paramtres mesurs . . . . . . . . . . . . . . . . . Introduction lanalyse en composantes principales (ACP) 6.3.1 Ncssit dun traitement statistique . . . . . . . . 6.3.2 Dnition gomtrique de lACP . . . . . . . . . . 6.3.3 Dnition algbrique de lACP . . . . . . . . . . . Programmation . . . . . . . . . . . . . . . . . . . . . . . . 6.4.1 Rception et trac des donnes de bases . . . . . . 6.4.2 Calcul des variables centres rduites . . . . . . . . 6.4.3 Composantes principales et vecteurs principaux . . Expressions et fonctions MATLAB utilises . . . . . . . .

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

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

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

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

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

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

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

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

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

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

59 60 60 61 61 61 62 63 64 64 65 65 66 67 68 69 70 71 72 73 81

7 TP6 : Application des sries de Fourier ltude du violon (2 TD, 2 sances libres et 4 sances TP) 7.1 Etude du mouvement de la corde de violon . . . . . . . . . . . . . 7.1.1 Rsolution par onde progressive . . . . . . . . . . . . . . . . 7.1.2 Rsolution par mthode de sparation des variables . . . . . 7.2 Son produit par linstrument . . . . . . . . . . . . . . . . . . . . . 7.3 Expressions et fonctions Matlab utilises . . . . . . . . . . . . . . . 8 Annexe : lexique non exhaustif 9 Index des fonctions et expressions MATLAB utilises 10 Elments de programmation structure : 10.1 Une dmarche structure pas--pas : . . . . . . . . . . 10.2 Quelques ides de base de la programmation structure 10.3 Organigramme en programmation structure : . . . . . 10.4 Programmation structure avec Matlab : . . . . . . . . 11 Bibliographie . : . . . . . . . . . . . . . . . . . . . . . . . . . .

sances . . . . . . . . . . . . . . . . . . . . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

83 83 83 84 84 86

Chapitre 1

TP dinitiation (4 sances TP)

Matlab est un logiciel de calcul et de visualisation, dont les entits de base sont des matrices : Matlab est une abrviation de Matrix Laboratory. Matlab est un langage interprt : il propose des facilits de programmation et de visualisation, ainsi quun grand nombre de fonctions ralisant diverses mthodes numriques. La meilleure faon dapprendre utiliser ce logiciel est de lutiliser vous mme, 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 ! Ce document est destin vous aider pour quelques premiers pas avec Matlab. Les sections et sous-sections signales par (*) donnent des complments qui pourront vous tre utiles lavenir, mais peuvent tre rserves pour une lecture ultrieure.

1.1

Acces Matlab

Les ordinateurs sur lesquels vous allez travailler sont congurs sous un environnement Linux. Si vous pouvez en gnral naviguer dans vos dossiers de manire assez naturelle comme sous Windows, il est important de connatre quelques commandes Unix qui vous permettent certains raccourcis. Pour ouvrir une session, vous devez taper votre login et votre mot de passe. Si le login est unique pour chaque utilisateur, le mot de passe est modiable ! Pour fermer votre session, allez dans le menu dmarrer et choisissez logoutou quittez lenvironnement(cf gure 1.1).

Fig. 1.1 Quitter une session Linux Pour travailler dans cet environnement Linux, soit vous naviguez avec votre souris de manire plus ou moins intuitive, soit vous tapez des commandes Unix dans un shell (ou fentre de commande en franais). Pour ouvrir un shell, on parcourt le menu dmarrer, on choisit System et Terminal (Konsole) (gure 1.2). Pour quitter le shell il sut de 6

taper exit.

Sfrag replacements

Utilisateur Serveur Rpertoire courant vite de commandes uverture dun shell Fentre shell Fig. 1.2 Ouverture dune fentre shell (konsole). Les quelques commandes Unix connaitre sont : 1. cd : change le rpertoire de travail 2. ls : donne le contenu dun repertoire 3. rm : eace un chier 4. cp : copie un chier 5. mv : dplace un chier 6. mkdir : cre un rpertoire 7. rmdir : dtruit un rpertoite (vide) 8. man : donne le manuel daide dune commande 9. jobs : ache la liste des travaux en cours lanc depuis le shell courant 10. killn : stoppe le travail n 11. ps : liste lensemble des processus/travaux actifs 12. whoami : retourne lidentiant (login) de lutilisateur 7

13. grep : recherche un mot dans une liste Par exemple la commande ps -Ao pid,user,comm | grep whoami retourne lensemble des processus que lutilisateur a initi : $ whoami username $ ps -Ao pid,user,comm | grep whoami 7562 username konsole 7563 username konsole 7569 username bash 7578 username bash 9776 username matlab 9777 username bash 10182 username matlab_helper 10084 username MATLAB Le symbole | appel pipe ou tube de redirection permet denvoyer le rsultat de la commande ps la commande grep. La commande ps -Ao pid,user,comm | grep whoami recherche donc le mot username dans la liste de lensemble des processus et retroune les lignes o il apparat. Pour interrompre un programme en cours, on tape Ctrl C (dans le shell). Cela peut ne pas tre susant, dans ce cas on pourra utiliser la commande kill suivie du PID (Process IDentier). Par exemple si lon souhaite interrompre une session Matlab on utilisera : $ ps -Ao pid,user,comm | grep whoami | grep -i matlab 10084 username MATLAB 10182 username matlab_helper $ kill -KILL 10084 $ ps -Ao pid,user,comm | grep whoami | grep -i matlab $ Vous aurez parfois besoin dcrire dans des chiers indpendants des lignes de commandes. Il vous faudra alors un diteur de texte. Nous vous proposons dutiliser Emacs qui se lance par le menu "dmarrer" et la rubrique "diteurs de texte". On ouvre et on ferme un chier grce au menu "le" ou simplement en tapant la commande emacs dans un shell. Le presse papier (copier-coller) se trouve dans le menu "edit". Enn, pour accder au logiciel Matlab, vous pouvez utiliser le menu "dmarrer" ou taper simplement la commande matlab dans un shell (gure 1.3). Suivant la version (plus ou moins complte, cest dire avec ou sans lenvironnement java) que vous utiliserez, vous aurez tout disposition dans le logiciel Matlab (lditeur de Matlab sappelle edit et est disponible avec la version complte de la gure 1.3(a)) ou vous aurez besoin dun diteur de texte comme Emacs extrieur Matlab. Nous vous conseillons fortement dutiliser la version la plus lgre de Matlab et lditeur Emacs pour travailler en ICBE lINSA. Lexprience montre que la version complte "plante" trs rgulirement. Vous reconnaitrez la fentre de travail Matlab (gure 1.3) par le prompt : 8

(a) Version complte : matlab -jvm.

(b) Version allge : matlab -nojvm.

Fig. 1.3 Les direntes session de Matlab. Vous pourrez quitter Matlab en tapant dans cette fentre : quit Dans la suite de cette sance, vous tes invits taper les instructions aches dans ce texte aprs ce prompt. Les instructions et variables Matlab sont donnes dans une typographie de machine crire. Les oprations mathmatiques et valeurs reprsentes par ces variables sont crites en italiques.

1.2
1.2.1

Variables et Matrices
Matrices

Dans Matlab, toutes les variables reprsentent des matrices. Par exemple, on multiplie deux matrices a et b par a*b, et le produit de deux scalaires scrit de la mme faon : ils sont interprts comme des matrices 1X1. On peut dnir une matrice dans Matlab de plusieurs faons : par la liste de ses lments, en la gnrant par une suite dinstructions et de fonctions, en la lisant dans un chier extrieur. Si lon reprsente la touche enter de votre clavier par le symbole , les instructions 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. Dans la suite, le symbole ne sera plus indiqu. En ayant xecut lune ou lautre de ces commandes, vous aurez remarqu que Matlab ache la valeur de la variable A que vous venez de dnir. Vous pouvez viter lachage

en faisant suivre la commande dun point-virgule. Ne la retapez pas pour le vrier ; en utilisant la che ascendante de votre clavier , vous pouvez 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 : >> a vous recevrez le message : ??? Undefined function or variable a. Lnumration des lments dune matrice ou dun vecteur peut tre implicite. 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 fournit les dimensions dune variable par la fonction size : >> size(m) ans = 1

Si lon veut un vecteur colonne, on peut taper >> m = m ou >> x = x(:) Lapostrophe dnit la transposition : A reprsente la matrice AT . Les deux points ( :) imposent le format colonne. On peut aussi crer directement un vecteur en sparant les composantes par un pointvirgule : >> b = [3 ; 0 ; 2 ] ; size(b)

Un coecient quelconque dune matrice est rfrenc par ses indices de ligne et de colonne, dans cet ordre. Par exemple, linstruction : >> A(1,2) renvoie la rponse : 10

ans = 2 ans est le nom dune variable qui reoit le dernier rsultat dune instruction ou dune suite dinstructions lorsquil na t aect aucune variable. On peut faire sacher la valeur dune variable sans achage de son nom ni de ans >> disp(A(1,2)) Certaines fonctions de Matlab crent des matrices particulires. Les quelques matrices suivantes sont parmi les plus couramment utilises : eye(n) renvoie la matrice identit, habituellement note In en mathmatiques ; essayez eye(4), ones(n,m) renvoie une matrice n lignes et m colonnes dont tous les coecients sont des 1, zeros(n,m) matrice n lignes et m colonnes dont tous les coecients sont des 0 ; elle sert beaucoup pour les initialisations. linspace(a,b,n) cre une matrice ligne de n points rgulirement espacs sur lintervalle [a, b] (bornes comprises). rand cre une matrice alatoire. Essayez B = rand(3,4). Dans quel intervalle 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.2.2

Oprations usuelles

Matlab permet deectuer les oprations usuelles en tendant leur dnition aux matrices selon les rgles de lalgbre linaire. Laddition et la soustraction ne mritent aucun commentaire particulier, sinon que les tailles des matrices doivent tre gales, essayez : >> >> >> >> 3+5 ans -2 A + ones(3) m + x

La dernire commande aura entrain cette rponse cinglante : ??? Error using ==> + Matrix dimensions must agree. Matlab autorise que les dimensions ne soient pas gales lorsquune des variables est un scalaire. A + 1 fournit la mme valeur que A + ones(3). 11

La multiplication de deux variables sera possible si les matrices quelles reprsentent respectent les rgles de concordance des dimensions : >> >> >> >> >> 3*4 c = A*b C = A*B b*c b*c

Comme les variables A et B reprsentent respectivement des matrices 3 3 et 3 4, la variable C reprsente une matrice 3 4, mais la commande B*A 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 !). Matlab autorise que les dimensions ne concordent pas lorsquune des variables reprsente un scalaire. Matlab distingue la division gauche et la division droite : >> 3/4 ans = 0.7500 >> 3\4 ans = 1.3333 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 reprsente 4 1 3 4. Cette ide se gnralise aux variables reprsentant des matrices : >> x = A\b ; >> A*x - b Vous aurez compris que la variable x contient la solution du systme linaire A x = b. Comment interprter le dernier rsultat renvoy par la machine ? Au passage, vous remarquerez que cette nouvelle aectation de la variable x crase la prcdente. Quelle reexion vous suggre le rsultat de : >> b/A On peut se demander ce que reprsente la matrice M dnie par >> M = A\eye(3) Matlab autorise le produit et les divisions par un scalaire. Llvation une puissance donne est dnie par le symbole : essayez

12

>> >> >> >>

2^3 A^2 A^0 A^(-1)

Vous avez retrouv la matrice M . Les rgles de priorit des oprations sont conformes celles qui sont utilises dans la plupart des langages de programmation. Elles sont donnes par le tableau suivant : Niveau de priorit 1 2 3 Opration puissance multiplication et division addition et soustraction

A niveau de priorit gal, les oprations sont eectues de la gauche vers la droite. Les parenthses vous permettent dorganiser les priorits dans vos calculs. Leur utilisation est recommande pour viter les ambiguts et risques derreurs. >> >> >> >> >> >> 2 + 3^2 2 + 3*3^2 2 + (3*3)^2 (2 + 3*3)^2 A^2\A A*A\A

1.2.3

Oprations sur les tableaux

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

1.2.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)] 13

On peut ensuite en extraire la sous-matrice forme des trois dernires colonnes : 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 instructions suivantes : >> >> >> >> R = rand(5); diag(R) diag(ans) diag(diag(R))

Largument gnral de diag est double ; entrez : >> help diag Vous constatez que lon peut ainsi extraire dune matrice ses lments dune parallle la diagonale. Essayez : >> >> >> >> 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 compris. Elle admet aussi plusieurs arguments >> tril(R) >> tril(R,1) triu renvoie la partie triangulaire suprieure dune matrice. reshape reformate une matrice, cest--dire change le nombre de lignes et de colonnes, en prenant les lments colonne par colonne. repmat cre une grande matrice en recopiant une matrice donne selon le format fournit.

1.3

Boucles et tests

Les principales instructions de contrle proposes par Matlab sont for, while et if ; elles fonctionnent peu prs comme leurs quivalents dans les autres langages de programmation. La boucle for doit respecter la syntaxe suivante : for compteur = expression instructions end 14

Generalement, expression est un vecteur de la forme dbut :incrment :fin et compteur prend successivement toutes les valeurs de expression pour xecuter instructions. Par exemple, les instructions suivantes permettent de calculer une valeur approche de ex , pour x = 10, en utilisant lapproximation :
n

ex
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

On pourra vrier plus tard que la valeur obtenue, s 2.2026 104 est assez proche de e10 . Plusieurs boucles peuvent tre embotes. Comme Matlab est un language interprt, il faut essayer dviter les boucles quand cest possible. Pour cela on peut utiliser des boucles 1 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; Noter que lon a initialis la variable H. Cest recommand lorsque cest possible. On peut aussi construire H de la faon suivante : >> >> >> >> >> J J I E H = = = = = 1:n; repmat(J,n,1); J; ones(n); E./(I+J-E);

Linstruction while respecte la syntaxe suivante : while expression instructions end Les instructions seront xcutes tant que expression sera vraie. Les instructions suivantes permettent de trouver approximativement le plus petit nombre positif reprsent dans larithmtique utilise par Matlab : 15

>> x = 1 ;

while x>0 , xm = x; x = x/2; end; xm

Linstruction if respecte la syntaxe suivante : if expression instructions end Les instructions ne seront xcutes que si expression est vraie. Il est possible de proposer une alternative, en indiquant les instructions xecuter lorsque expression est fausse : if expression instructions 1 else instructions 2 end

1.4
1.4.1

Fonctions de base
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 lmentaires proposes par Matlab. Pour en avoir la liste, vous pouvez taper : >> help elfun Comme la liste est longue, vous pouvez contrler son dlement : >> more on, help elfun, more off Le dlement se fait ligne ligne (en tapant une touche quelconque) ou par pages de 20 lignes (en tapant la barre despacements). Vous pouvez maintenant comparer la variable s calcule prcdemment avec e10 ; >> 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 matrice S dont les coecients sont si,j = sin(ai,j ). Pour lexponentielle et la racine carre, qui possdent une version "matricielle", Matlab propose les fonctions expm et sqrtm. Le cas des polynmes est un peu particulier : un polynme peut tre dni par ses coecients : on utilise dans ce cas une matrice ligne : par exemple, le polynme Q(x) = x3 + 2x2 3 sera reprsent par : 16

>> 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, on peut aussi dterminer les coecients dun polynme partir de ses racines en 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 K(x) = x3 6x2 + 11x 6. Le polynme ainsi calcul a toujours le coecient de son terme de plus fort degr gal 1. Cest un polynme unitaire. Comme les fonctions usuelles polyval traite les matrices comme des tableaux, il faudra utiliser la fonction polyvalm pour valuer un polynme de matrice. Comparez polyval(K,A) et polyvalm(K,A). Certaines fonctions spciales sont galement proposes par Matlab : vous allez rencontrer les fonctions de Bessel de premire espce notes J (x) ; elles sont donnes par la fonction besselj dont le format dappel le plus courant est, pour le paramtre entier nu et 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 : >> more on, help specfun, more off

1.4.2

Fonctions vectorielles

Ces fonctions sont plutot destines agir sur des vecteurs, lignes ou colonnes. Citons par exemple : max sum mean sort min prod std dont vous trouverez lobjet par la commande help lorsquil nest pas vident. 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)

17

1.4.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 ), rank : rang. Une liste un peu plus complte, mais non exhaustive, de ces fonctions vous est fournie en annexe. Une liste complte est fournie en rponse la commande >> more on, help matfun, more off

1.5
1.5.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 de mme 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 : plot(x,y,s) ; o x contient les absisses, y les ordonnes, et s est une chaine de 1 3 caractres : s=ct, respectivement couleur et trac, qui peuvent tre choisis dans le tableau suivant :

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

Trac trait continu (c) pointills (c) trait-point (c) tirets (c) plus (d) cercles (d) toiles (d) croix (d)

Les types de trac prcds de (c) sont des tracs continus, avec une interpolation entre les points fournis, alors que pour les autres, ne sont reprsents que les points (xi , yi ). On peut combiner ces deux modes de trac. On peut tracer les graphes de plusieurs fonctions simultanment. Essayez maintenant : 18

>> z = sin(2*x);plot(x,y,x,z); On peut alors lgender notre graphique de la faon suivante : >> legend(cos(3x),sin(2x)); On peut galement obtenir ces deux courbes par la succession de commandes : >> plot(x,y); >> hold on; >> plot(x,z); La seule dirence est que cette fois, les deux graphes sont tracs avec la mme couleur. hold on gre le graphique courant de faon que les commandes graphiques suivre vont sajouter ce graphique. hold off est la valeur par dfaut : dans ce cas une nouvelle commande plot eacera le graphique existant. Les axes sont dnis automatiquement ; on peut choisir les bornes des coordonnes du graphe laide de la fonction axis . Essayez par exemple : >> axis([-1 5 -1.5 1.5]); Pour la suite de notre travail, il est prfrable que vous entriez maintenant la commande : >> hold off; Le format de la fonction plot permet bien sr de reprsenter facilement des courbes paramtriques : >> plot(y,z); On obtient, pour les valeurs dnies plus haut, une courbe connue sous le nom de courbe de Lissajoux. Les instructions suivantes vont rduire lgrement lchelle, donner 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 laquelle est reli votre ordinateur. Cest la dernire de vos gures qui sera imprime. (A utiliser bien sr avec parcimonie !) Exercice On considre la fonction dnie par F (x) = 0.01 exp x + 10 cos x 3 x. (1.2)

19

Tracer la courbe reprsentant cette fonction sur lintervalle [1, 10], en utilisant ses valeurs k aux points xk = 1 + 100 , 0 k 1100. Fixer la taille de la fentre de visualisation de faon que les absisses soient comprises entre 1 et 11 et les ordonnes entre 50 et 200. Complter cette gure en y ajoutant les axes et un titre. Ces axes peuvent tre tracs " la main" en utilisant les fonctionnalits de la fentre graphique (voir les icnes). On peut aussi les obtenir en tapant par exemple : >> hold on ; >> plot([0,9],[0,0],9,0,>) >> plot([0,0],[-20,150],0,150,^) Quant au titre, vous devez pouvoir lobtenir sans indication ...

1.5.2
est

Visualisation des courbes en 3D

La fonction qui permet de reprsenter une courbe dans lespace R3 est plot3. Sa syntaxe plot3(x,y,z,s) ; et cette fois x, y et z sont des vecteurs de mme dimension contenant les trois coordonnes. Essayez : >> 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;

1.5.3

Visualisation des surfaces

Matlab permet de reprsenter des surfaces donnes en coordonnes cartsiennes ou sous forme paramtrique. La forme paramtrique peut scrire : x = x(s, t) y = y(s, t) z = z(s, t) o les paramtres s et t parcourent un certain domaine. Plusieurs fonctions permettent cette reprsentation, parmi lesquelles mesh reprsente un treillis, et surf une surface pleine. Elles ont le mme format dappel : surf(X,Y,Z,C) ; X,Y et Z sont des matrices de mmes dimensions contenant les coordonnes de points de la surface. C permet de dnir les couleurs et peut tre omis. Nous allons reprsenter le cne dquation x2 + y 2 2xz = 0 en utilisant la reprsentation paramtrique donne pour (, ) ] , [] 0, 12[ par : x = (1 + cos ), y = sin , z = . On peut procder de la faon suivante : 20