Está en la página 1de 130

ISIMA Deuxième Année F4

COURS DE LOGICIEL NUMÉRIQUE


MATLAB

Jonas KOKO


2010 Institut Supérieur d'Informatique, de Modélisation et de leurs Appli ations Campus des

Cézeaux

B.P. 1025 - 63173 AUBIERE CEDEX

http://www.isima.fr
2
Table des matières

1 Prise en main 13
1.1 Démarrage et aide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.2 Cal ulatri e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.3 Pon tuation, ommentaires, interruption . . . . . . . . . . . . . . . . . . . . . . . 17
1.4 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.5 Gestion de la mémoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.6 Répertoire de travail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.7 Sauvegarde de l'environnement de travail . . . . . . . . . . . . . . . . . . . . . . 20

2 Ve teurs et Matri es 21
2.1 Création d'un ve teur ou d'une matri e . . . . . . . . . . . . . . . . . . . . . . . 21
2.1.1 Ve teurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.1.2 Matri es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.1.3 Quelques matri es prédénies . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.2 Opérations sur les matri es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.2.1 Opérations globales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.2.2 Opérations élément par élément . . . . . . . . . . . . . . . . . . . . . . . . 31
2.3 Manipuler les matri es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.3.1 Conversion matri e/ve teur . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.3.2 Extra tion, extension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.3.3 Suppression d'une ligne ou d'une olonne . . . . . . . . . . . . . . . . . . 35
2.3.4 La fon tion diag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.3.5 Matri es par blo s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.4 Normes ve torielles et matri ielles . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.5 Fon tion mathématiques élémentaires . . . . . . . . . . . . . . . . . . . . . . . . 39
2.6 Exer i es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3 Algèbre linéaire 43
3.1 Systèmes linéaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.1.1 Systèmes arrés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.1.2 Systèmes re tangulaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.2 Inverses et déterminants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.3 Valeurs propres, ve teurs propres . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.4 Fa torisations de matri es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

3
4 TABLE DES MATIÈRES

3.4.1 Fa torisation LU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.4.2 Fa torisation de Cholesky . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.4.3 Fa torisation QR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.4.4 Dé omposition en valeurs singulières . . . . . . . . . . . . . . . . . . . . . 55
3.5 Exer i es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

4 Graphisme 59
4.1 Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.2 Graphisme 2D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.2.1 Les axes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.2.2 Les ommentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
4.2.3 Dé omposition de la fenêtre en sous-fenêtres . . . . . . . . . . . . . . . . . 63
4.2.4 Sauvegarder une gure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
4.3 Visualisation 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4.3.1 Courbes 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4.3.2 Surfa e analytique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.3.3 Surfa e dénie par un ensemble de points . . . . . . . . . . . . . . . . . . 69
4.3.4 Courbes de niveau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
4.4 Exer i es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

5 Matri es reuses et méthodes itératives 77


5.1 Mode de sto kage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
5.2 Création . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
5.3 Opérations sur les matri es reuses . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.4 Fa torisation et méthodes dire tes . . . . . . . . . . . . . . . . . . . . . . . . . . 80
5.4.1 Fa torisation LU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
5.4.2 Fa torisation de Cholesky . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
5.5 Permutation des lignes et des olonnes . . . . . . . . . . . . . . . . . . . . . . . . 82
5.6 Fa torisation in omplète et pré onditionnement . . . . . . . . . . . . . . . . . . . 86
5.6.1 Fa torisation LU in omplète . . . . . . . . . . . . . . . . . . . . . . . . . 87
5.6.2 Fa torisation de Cholesky in omplète . . . . . . . . . . . . . . . . . . . . 87
5.7 Méthodes itératives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
5.7.1 Méthode du gradient onjugué pré onditionné . . . . . . . . . . . . . . . . 89
5.7.2 Méthode GMRES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
5.8 Exer i es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

6 Programmation ave Matlab 95


6.1 Types de données et variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
6.2 S ripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
6.3 Fon tions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
6.4 Stru tures de ontrle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
6.4.1 La bou le for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
6.4.2 La bou le while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
6.4.3 L'alternative if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
6.4.4 Les expressions logiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
6.4.5 Instru tions de rupture de séquen e . . . . . . . . . . . . . . . . . . . . . 105
6.5 Quelques fon tions internes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
6.5.1 Les fon tions logiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
6.5.2 La fon tion find . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
TABLE DES MATIÈRES 5

6.5.3 Fon tions de rédu tion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108


6.5.4 Opérations sur les ensembles . . . . . . . . . . . . . . . . . . . . . . . . . 112
6.6 Importation/exportation de données . . . . . . . . . . . . . . . . . . . . . . . . . 114
6.6.1 Les fon tions save et load . . . . . . . . . . . . . . . . . . . . . . . . . . 114
6.6.2 Les fon tions fprintf et fs anf . . . . . . . . . . . . . . . . . . . . . . . 116
6.7 Optimisation d'un ode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
6.8 Exer i es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
6 TABLE DES MATIÈRES
Table des gures

3.1 Régression linéaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47


4.1 Graphe de la fon tion y = x sin x cos 2x . . . . . . . . . . . . . . . . . . . . . . . . 60
4.2 Graphes de y = x sin x cos x, y = e−x +sin x et y = esin x . . . . . . . . . . . . . . . 62
4.3 Axes légendés ave des formules mathématiques. . . . . . . . . . . . . . . . . . . 62
4.4 Polynmes de T heby hev pour n = 0, 1, 2, 3. . . . . . . . . . . . . . . . . . . . . 64
4.5 Polynmes de T heby hev pour n = 1, 2, 3, 4. . . . . . . . . . . . . . . . . . . . . 65
4.6 Courbe 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4.7 Commande plot3(x,y,z) ave x, y et z des matri es . . . . . . . . . . . . . . . 67
4.8 Surfa e tra ée ave plot3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.9 Tra é l de fer de la surfa e dénie par (4.1) . . . . . . . . . . . . . . . . . . . . 68
4.10 Tra é l de fer de la surfa e dénie par (4.1), ave view(30,60) . . . . . . . . . 69
4.11 Tra é l de fer d'une surfa e obtenue par un ensemble de points . . . . . . . . . . 70
4.12 Nuage de points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4.13 Triangulation de Delaunay d'un ensemble de points . . . . . . . . . . . . . . . . . 71
4.14 Tra é par fa ettes d'une surfa e dénie sur la triangulation 4.13 . . . . . . . . . . 71
4.15 Tra é par fa ettes d'une surfa e dénie sur la triangulation 4.13 . . . . . . . . . . 72
4.16 Courbes de niveau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
4.17 Courbes de niveau ave valeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
4.18 Courbes de niveau ave valeurs séle tionnées . . . . . . . . . . . . . . . . . . . . 74
4.19 Traje toires z1 , z2 et z3 dans le plan . . . . . . . . . . . . . . . . . . . . . . . . . 75
4.20 Lignes de niveaux sur une surfa e . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.1 Visualisation de la matri e reuse west0479 . . . . . . . . . . . . . . . . . . . . . 79
5.2 Visualisation des matri es L et U de la fa torisation LU de west0479 . . . . . . 81
5.3 Visualisation de la matri e west0479 permutée ave symr m . . . . . . . . . . . . 84
5.4 Visualisation de la matri e west0479 permutée ave symamd . . . . . . . . . . . . 84
5.5 Visualisation de la matri e du Lapla ien . . . . . . . . . . . . . . . . . . . . . . . 85
5.6 Visualisation de la matri e du Lapla ien permutée ave symamd . . . . . . . . . . 86

7
8 TABLE DES FIGURES
Liste des tableaux

1.1 Listes de mots réservés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19


1.2 Constantes et variables prédénies . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.1 Quelques matri es prédénies disponibles . . . . . . . . . . . . . . . . . . . . . . 25
2.2 Opérateurs arithmétiques élémentaires . . . . . . . . . . . . . . . . . . . . . . . . 27
2.3 Fon tions mathématiques pour les omplexes . . . . . . . . . . . . . . . . . . . . 40
2.4 Quelques fon tions trigonométriques . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.5 Exponentielles et logarithmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.1 Tableau des observation du modèle linéaire . . . . . . . . . . . . . . . . . . . . . 45
3.2 Quelques fon tions de fa torisation de matri es . . . . . . . . . . . . . . . . . . . 50
3.3 Tableau des observations du modèle quadratique de l'exer i e 3.2 . . . . . . . . . 56
4.1 Couleur, symbole et style d'un tra é . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.1 Solveurs itératifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.1 Opérateurs de omparaison de Matlab . . . . . . . . . . . . . . . . . . . . . . . 104
6.2 Opérateurs logiques de Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
6.3 Instru tions de rupture de séquen e . . . . . . . . . . . . . . . . . . . . . . . . . . 105
6.4 Fon tions logiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106

9
10 LISTE DES TABLEAUX
Liste des programmes

6.1 Fon tion matri e de distan e ave des bou les for . . . . . . . . . . . . . . . . . 118
6.2 Fon tion matri e de distan es ve torisée . . . . . . . . . . . . . . . . . . . . . . . 118

11
12 LISTE DES PROGRAMMES
Chapitre 1

Prise en main

1.1 Démarrage et aide

Sur Unix et dérivées, le démarrage de Matlab se fait simplement en tapant matlab dans une
fenêtre de ommande. Sur Windows, il sut de liquer sur l'i ne Matlab. Dans les deux as, on
obtient sur la fenêtre de ommande le prompt >>, ara téristique de Matlab.
L'aide en ligne s'obtient en tapant la ommande help. Une longue liste de sujets, pour lesquels
l'aide est disponible, apparaît alors.
>> help

HELP topi s:

matlab/general - General purpose ommands.


matlab/ops - Operators and spe ial hara ters.
matlab/lang - Programming language onstru ts.
matlab/elmat - Elementary matri es, matrix manipulation.
matlab/elfun - Elementary math fun tions.
matlab/spe fun - Spe ialized math fun tions.
matlab/matfun - Matrix fun tions, numeri al linear algebra.
matlab/datafun - Data analysis and Fourier transforms.
matlab/audio - Audio support.
matlab/polyfun - Interpolation and polynomials.
matlab/funfun - Fun tion fun tions and ODE solvers.
matlab/sparfun - Sparse matri es.
matlab/graph2d - Two dimensional graphs.
matlab/graph3d - Three dimensional graphs.
matlab/spe graph - Spe ialized graphs.
matlab/graphi s - Handle Graphi s.
matlab/uitools - Graphi al user interfa e tools.
matlab/strfun - Chara ter strings.
matlab/iofun - File input/output.
matlab/timefun - Time and dates.
matlab/datatypes - Data types and stru tures.
matlab/ver trl - Version ontrol.
matlab/demos - Examples and demonstrations.

13
14 CHAPITRE 1. PRISE EN MAIN

toolbox/lo al - Preferen es.


toolbox/optim - Optimization Toolbox.
toolbox/pde - Partial Differential Equation Toolbox.

For more help on dire tory/topi , type "help topi ".

Après, il sut d'exé uter


>>help sujet
pour avoir l'aide sur le sujet on erné. Pour avoir la des ription d'une fon tion Matlab, il sut
d'exé uter la ommande help ave le nom de la fon tion
>>help fon tion
Par exemple, si on veut la des ription de la fon tion plot, qui permet de tra er des ourbes 2D,
on tape simplement
>>help plot

PLOT Linear plot.


PLOT(X,Y) plots ve tor Y versus ve tor X. If X or Y is a matrix,
then the ve tor is plotted versus the rows or olumns of the matrix,
whi hever line up. If X is a s alar and Y is a ve tor, length(Y)
dis onne ted points are plotted.

PLOT(Y) plots the olumns of Y versus their index.


If Y is omplex, PLOT(Y) is equivalent to PLOT(real(Y),imag(Y)).
In all other uses of PLOT, the imaginary part is ignored.

Various line types, plot symbols and olors may be obtained with
PLOT(X,Y,S) where S is a hara ter string made from one element
from any or all the following 3 olumns:

y yellow . point - solid


m magenta o ir le : dotted
yan x x-mark -. dashdot
r red + plus -- dashed
g green * star
b blue s square
w white d diamond
k bla k v triangle (down)
^ triangle (up)
< triangle (left)
> triangle (right)
p pentagram
h hexagram

For example, PLOT(X,Y,' +:') plots a yan dotted line with a plus
at ea h data point; PLOT(X,Y,'bd') plots blue diamond at ea h data
point but does not draw any line.
1.1. DÉMARRAGE ET AIDE 15

PLOT(X1,Y1,S1,X2,Y2,S2,X3,Y3,S3,...) ombines the plots defined by


the (X,Y,S) triples, where the X's and Y's are ve tors or matri es
and the S's are strings.

For example, PLOT(X,Y,'y-',X,Y,'go') plots the data twi e, with a


solid yellow line interpolating green ir les at the data points.

The PLOT ommand, if no olor is spe ified, makes automati use of


the olors spe ified by the axes ColorOrder property. The default
ColorOrder is listed in the table above for olor systems where the
default is yellow for one line, and for multiple lines, to y le
through the first six olors in the table. For mono hrome systems,
PLOT y les over the axes LineStyleOrder property.

PLOT returns a olumn ve tor of handles to LINE obje ts, one


handle per line.

The X,Y pairs, or X,Y,S triples, an be followed by


parameter/value pairs to spe ify additional properties
of the lines.

See also SEMILOGX, SEMILOGY, LOGLOG, GRID, CLF, CLC, TITLE, XLABEL,
YLABEL, AXIS, AXES, HOLD, COLORDEF, LEGEND, SUBPLOT, and STEM.
Il est possible de retrouver toutes les fon tions ontenant un mot lé. Pour ela on utilise
la ommande lookfor. Par exemple, si on re her he les fon tions relatives à la fa torisation de
matri es
>> lookfor fa torization
CHOL Cholesky fa torization.
CHOLUPDATE Rank 1 update to Cholesky fa torization.
LU LU fa torization.
QRDELETE Delete olumn from QR fa torization.
QRINSERT Insert olumn in QR fa torization.
QRUPDATE Rank 1 update to QR fa torization.
QZ QZ fa torization for generalized eigenvalues.
CHOLINC Sparse In omplete Cholesky.
LUINC Sparse In omplete LU fa torization.
SYMBFACT Symboli fa torization analysis.
Remarque 1.1 Si dans l'aide en ligne, les fon tions et ommandes Matlab apparaissent en
lettres majus ules 'est seulement pour les distinguer des autres mots. Les fon tions et om-
mandes Matlab doivent être odées en minus ules.
Les ommandes d'éditions de Matlab sont simples:
↑ remonter dans l'historique de ommandes;
↓ des endre dans l'historique de ommandes;
←, → dépla ement sur la ligne;
Ba kspa e, Delete modi ations sur la ligne de ommande.
16 CHAPITRE 1. PRISE EN MAIN

1.2 Cal ulatri e

Une ligne de ommande de Matlab est de la forme1


[variable=℄expression[;℄
Lorsque le point-virgule (;) est absent en n de ligne, la valeur de l'expression est a hée à
l'é ran. Les sorties Matlab sont don en grande partie gérées par le point-virgule. Lorsqu'il n'y a
pas de variable pour ré upérer la valeur de l'expression, 'est la variable par défaut de Matlab,
ans, qui est utilisée. Voi i quelques exemples de ligne de ommande
>> 2*pi/9
ans =
0.6981

>> x=6^10
x =
60466176
Par défaut les réels sont a hés2 en simple pré ision (5 hires signi atifs). On peut modier
l'a hage ave la ommande format.
>> pi
ans =
3.1416

>> format long


>> pi
ans =
3.14159265358979

>> format short


>> pi
ans =
3.1416
Pour obtenir un a hage de réels en virgule otante, il sut de rajouter e dans à la ommande
format.
>> format short e
>> pi^6
ans =
9.6139e+02
Enn, format short g ou format long g laisse le hoix à Matlab d'utiliser le meilleur
a hage (virgule xe ou virgule ottante) en fon tion du réel.
Les nombres omplexes se odent de façon naturelle ave i ou j omme imaginaire pure.
>> 1.5+i
ans =
1 Tout e qui apparaît entre [℄ est, i i, optionnel.
2 Tous les al uls dans Matlab sont en double pré ision
1.3. PONCTUATION, COMMENTAIRES, INTERRUPTION 17

1.5000 + 1.0000i

>> =sqrt(-1)
=
0 + 1.0000i
Les opérateurs sont les mêmes que pour les nombres réels.
>> 1=exp(i)
1 =
0.5403 + 0.8415i

>> 2=sqrt(-2)
2 =
0 + 1.4142i

>> 1+ 2
ans =
0.5403 + 2.2557i

>> 1* 2
ans =
-1.1900 + 0.7641i

>> 1/ 2
ans =
0.5950 - 0.3821i

1.3 Pon tuation, ommentaires, interruption

Une ligne de ommande Matlab peut omporter plusieurs ommandes séparées par des
virgules (,) ou des points-virgules (;).
>> x=3/8, y=2.2678/37.80; z=(x+y)/sqrt(-4)
x =
0.3750

z =
0 - 0.2175i
Une ligne de ommande Matlab peut omporter des ommentaires signalés par le symbole
%. Tout e qui suit e symbole est alors ignoré par l'interpréteur Matlab.
>> x=pi % nombre réel
x =
3.1416

>> z=sqrt(-1) % nombre omplexe


z =
0 + 1.0000i
18 CHAPITRE 1. PRISE EN MAIN

Si une expression est trop longue pour tenir sur une ligne de ommande, alors on termine la
ligne par ... (3 points).
>> y= os(2*pi/3)*(sin(5.78*pi/4)^2+...
os(pi/5)^2)

y =
-0.8125
Un traitement Matlab peut être à tout moment interrompu en appuyant simultanément sur
les tou hes Ctrl et C.

1.4 Variables

Les noms des variables Matlab sont des mots de 63 ara tères maximum, sans espa e et sans
symbole de pon tuation. Le nom d'une variable doit obligatoirement ommen er par une lettre
de l'alphabet. Il y a une distin tion entre majus ules et minus ules pour les noms de variables.
>> x1=3.8675, X1=pi^2
x1 =
3.8675

X1 =
9.8696
Comme tous les langages, Matlab dispose de mots- lés. Certains mots- lés ne peuvent être
utilisés omme variables. Ce sont les mots réservés du langage. La liste des mots- lés de Matlab
est donnée dans le tableau 1.1.
>> for=2.16
??? for=2.16
|
Error: "identifier" expe ted, "=" found.
La liste de de es mots réservés est fournie par la fon tion iskeyword. D'autres mots- lés, non
réservés, représentent des variables ou des onstantes prédénies, f. tableau 1.2. Ces mots- lés
peuvent être utilisés omme variables dénies par l'utilisateur.
>> pi, realmax
ans =
3.1416

ans =
1.7977e+308

>> pi=278, realmax=.2568


pi =
278

realmax =
0.2568
1.5. GESTION DE LA MÉMOIRE 19

break ase at h ontinue else elseif end for fun tion


global if otherwise persistent return swit h try while

Tab. 1.1  Listes de mots réservés

ans answer variable Matlab par défaut


eps pré ision numérique relative, eps=2.220446049250313e-016
inf l'inni mathématique ∞, e.g. 1.0/0.
nan littéralement Not a Number, e.g. 0/0
pi onstante π = 3.14159265358979

i ou j nombre omplexe −1
nargin nombre d'arguments d'entrée d'une fon tion
nargout nombre d'arguments de sortie d'une fon tion
realmin plus petit réel utilisable
realmax plus grand réel utilisable
bitmax plus grand entier utilisable, sto ké en double pré ision
varargin nombre variable d'arguments d'entrée d'une fon tion
varargout nombre variable d'arguments de sortie d'une fon tion

Tab. 1.2  Constantes et variables prédénies

1.5 Gestion de la mémoire

La ommande who donne la liste des variables a tives dans l'espa e de travail. Mais elle est
moins pré ise. Pour avoir plus d'informations, il est préférable d'utiliser la ommande whos qui
donne non seulement les variables mais aussi leur type, leur taille ( omme tableau) et l'espa e
mémoire o upé. Voi i un exemple.

>> whos
Name Size Bytes Class

A 50x50 20000 double array


x 1x10001 80008 double array
y 1x10001 80008 double array
zz 100x100 80000 double array

Il est possible de supprimer une ou plusieurs variables ave la ommande lear. Par exemple

>> lear x zz

supprime les variables x et zz de l'espa e de travail. En parti ulier lear all ea e toutes les
variables de l'espa e de travail.
20 CHAPITRE 1. PRISE EN MAIN

1.6 Répertoire de travail

Avant de ommen er à travailler, il faut indiquer à Matlab le répertoire dans lequel on veut
travailler. Sous Unix, le répertoire de travail est le répertoire ourant. Sous Windows, le répertoire
par défaut s'appelle works et se trouve dans le répertoire d'installation de Matlab. Pour le hanger
il sut d'entrer le nom de votre répertoire de travail dans la fenêtre Current Dire tory de la
barre de menu.

1.7 Sauvegarde de l'environnement de travail

La fon tion save permet de sauvegarder (par défaut en binaire) tout (par défaut) ou partie de
l'espa e de travail, qui se ré upère grâ e à la ommande load. Par exemple si on veut sauvegarder
les variables X et Y dans le  hier Fi hXY il sut d'exé uter la ligne de ommande
>> save Fi hXY X Y
Par défaut le  hier de sauvegarde est en binaire et omporte l'extension .mat.
La fon tion load est l'inverse de la fon tion save. Par exemple, pour ré upérer les variables
X et Y sauvegardées dans le  hier Fi hXY, il sut de faire
>> load Fi hXY X Y
La ommande diary permet de sauvegarder l'intégralité d'une session de travail. Elle est très
utile lorsqu'on tâtonne. On démarre la sauvegarde ave diary on et on arrête ave diary off.
Dans tous les as lorsqu'on tape diary, on passe d'un état à un autre, i.e. on passe de diary on
à diary off ou vi e versa. Il est possible d'utiliser la forme fon tionnelle suivante
>> diary('nomfi h')
Alors toute la session sera sauvegardée dans le  hier nomfi h.
Chapitre 2

Ve teurs et Matri es

Comme son nom l'indique, Matlab ne travaille qu'ave des matri es, au sens large. Ainsi,
un s alaire est pour Matlab une matri e 1 × 1 et un ve teur de taille n, une matri e n × 1 ou
1 × n suivant que le ve teur est en olonne ou en ligne. En plus des opérations usuelles sur les
matri es (somme, soustra tion, produit) Matlab dispose d'opérateurs qui agissent élément par
élément, permettant de se passer des bou les.

2.1 Création d'un ve teur ou d'une matri e

2.1.1 Ve teurs
Pour dénir un ve teur (ligne ou olonne) il sut de donner la liste de ses éléments entre
ro hets ([℄). Pour un ve teur ligne, les éléments sont séparés au hoix par un espa e ou une
virgule (,)
>> v=[1 2 3℄
v =
1 2 3

>> v=[3,6,8,1.765℄
v =
3.0000 6.0000 8.0000 1.7650
Pour un ve teur olonne, les éléments sont séparés au hoix par un point-virgule (;) ou un
retour- hariot.
>> w=[1; 2; 3℄
w =
1
2
3

>> w=[3.56
2.9
6.3456
4.5℄

21
22 CHAPITRE 2. VECTEURS ET MATRICES

w =
3.56000
2.90000
6.34560
4.50000
On peut utiliser l'opérateur : (énumération) pour réer un ve teur. La syntaxe générale est
v=debut[:pas℄:fin
où debut et fin sont des nombres, pas est le pas de la tabulation. Par défaut pas=1.
>> v=-1:.5:1
v =
-1.0000 -0.5000 0 0.5000 1.0000
Remarque 2.1 Un ve teur généré par énumération est toujours un ve teur ligne.

Il est possible de mixer les diérentes formes de saisie de ve teurs.


>> v=[-5 3 7 0:2:8℄
v =
-5 3 7 0 2 4 6 8
Pour a éder à un élément d'un ve teur, on utilise son indi e entre parenthèses.
>> v=0:10
v =
0 1 2 3 4 5 6 7 8 9 10

>> v(7)
ans =
6
On peut générer des ve teurs dont les omposantes sont uniformément réparties grâ e à la
fon tion linspa e dont la syntaxe est
linspa e(x1,x2,n)
génère un ve teur ligne de n omposantes, subdivision uniforme de l'intervalle [x1, x2℄.
>> x=linspa e(0,1,5)
x =
0 0.2500 0.5000 0.7500 1.0000
Par défaut, i.e. en l'absen e du troisième argument, le ve teur généré est de taille 100. Pour
avoir un ve teur ligne ave des omposantes réparties suivant une é helle logarithmique, on
utilise logspa e. la syntaxe est la même que pour linspa e sauf que par défaut, le ve teur
généré est de taille 50.
>> x=logspa e(0,1,5)
x =
1.0000 1.7783 3.1623 5.6234 10.0000
Pour avoir le ve teur transposé, l'apostrophe ' (prime) sut.
2.1. CRÉATION D'UN VECTEUR OU D'UNE MATRICE 23

>> v=[3.56; 2.9; 6.3456; 4.5℄


v =
3.5600
2.9000
6.3456
4.5000

>> vt=v'
vt =
3.5600 2.9000 6.3456 4.5000
La taille d'un ve teur est obtenue grâ e à la fon tion length.
>> v=0:pi/5:1.5*pi;
>> n=length(v)
n =
8

>> v=[℄; % ve teur vide


>> length(v)
ans =
0
Pour savoir si on a aaire à un ve teur ligne ou à un ve teur olonne, on utilise la fon tion
size qui retourne le nombre de lignes et de olonnes d'un tableau passé en argument. La fon tion
size est détaillée dans la se tion 2.1.2.

2.1.2 Matri es
Pour dénir une matri e, il sut de séparer les lignes de la matri e par un point-virgule (;).
Par exemple
>> A=[1 2 3; 4 1 2; 0 2 4℄
A =
1 2 3
4 1 2
0 2 4
On peut aussi réer une matri e dire tement à partir de ve teurs. Si v1, v2, v3 sont des
ve teurs lignes de même taille, alors [v1; v2; v3℄ est une matri e dont les lignes sont les
ve teurs v1, v2 et v3; et [v1' v2' v3'℄ est une matri e dont les olonnes sont les ve teurs v1',
v2' et v3'.
>> v1=[1 2 3℄;
>> v2=[1 1 1℄;
>> v3=[3.5 7.8 0.5℄;
>> A=[v1; v2; v3℄, B=[v1' v2' v3'℄
A =
1.0000 2.0000 3.0000
1.0000 1.0000 1.0000
3.5000 7.8000 0.5000
B =
24 CHAPITRE 2. VECTEURS ET MATRICES

1.0000 1.0000 3.5000


2.0000 1.0000 7.8000
3.0000 1.0000 0.5000
Don B est la transposée de A. Pour résumer, les lignes d'une matri e sont séparées par un
point-virgule (ou un retour- hariot) et les olonnes par un espa e (ou une virgule).
Comme pour les ve teurs, la matri e transposée s'obtient grâ e à l'apostrophe (').
>> A=[8 2 7; 0 1 3℄
A =
8 2 7
0 1 3

>> B=A'
B =
8 0
2 1
7 3
Pour a éder à un élément d'une matri e, il sut de pré iser son numéro de ligne et son
numéro de olonne entre parenthèses.
>> A=pas al(3)
A =
1 1 1
1 2 3
1 3 6

>> A(3,2)
ans =
3
La fon tion size retourne la taille d'une matri e au sens Matlab, 'est-à-dire en nombre de
lignes et de olonnes. La syntaxe est
[m,n℄=size(A)
qui donne la taille m × n de la matri e A.
>> A=[0 2 5 6; 3 6 5 2; 1 1 2 2℄;
>> [m,n℄=size(A)
m =
3
n =
4
A noter que si v est un ve teur la fon tion length(v) est équivalente à max(size(v)).
Remarque 2.2 Si v est un ve teur, length(v) retourne 0 tandis que size(v) retourne le
ve teur vide, i.e. [℄.

2.1.3 Quelques matri es prédénies


Matlab dispose de plusieurs matri es prédénies dont quelques unes sont données gure 2.1.
2.1. CRÉATION D'UN VECTEUR OU D'UNE MATRICE 25

Fon tion Matri e générée


zeros matri e nulle
eye matri e identité
ones matri e ne ontenant que des 1
hilb matri e de Hilbert
pas al matri e de Pas al
rand matri e aléatoire (loi uniforme)
randn matri e aléatoire (loi normale)

Tab. 2.1  Quelques matri es prédénies disponibles

Matri e identité
La matri e identité d'ordre n s'obtient par la fon tion eye.

>> I=eye(5)
I =
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1

Matri e nulle
La fon tion zeros permet d'avoir une matri e nulle de taille m × n.

>> O=zeros(3,2)
O =
0 0
0 0
0 0

Pour une matri e nulle arrée un seul argument sut.

>> O=zeros(2)
O =
0 0
0 0

On peut aussi générer un ve teur (ligne ou olonne) ne ontenant que des zéros

>> U=zeros(1,4)
U =
0 0 0 0
26 CHAPITRE 2. VECTEURS ET MATRICES

Matri e ne ontenant que des 1


La fon tion ones retourne une matri e m × n ne ontenant que des 1.
>> Un=ones(3,5)
Un =
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
Comme pour la matri e nulle, un seul argument sut pour une matri e arrée.

Matri e de Hilbert
C'est la matri e arrée H = (hij ) d'ordre n dénie par
1
hij = , i, j = 1, . . . , n.
i+j−1
Elle est fournie par la fon tion hilb.
>> H=hilb(4)
H =
1.0000 0.5000 0.3333 0.2500
0.5000 0.3333 0.2500 0.2000
0.3333 0.2500 0.2000 0.1667
0.2500 0.2000 0.1667 0.1429

Matri e de Pas al
C'est la matri e arrée d'ordre n, symétrique dénie positive obtenue à partir du triangle de
Pas al. La matri e de Pas al est entière et son inverse aussi.
>> P=pas al(3)
P =
1 1 1
1 2 3
1 3 6

>> inv(P) % inverse de P


ans =
3 -3 1
-3 5 -2
1 -2 1

Matri es aléatoires
Ave Matlab il est possible d'obtenir une matri e m × n générée de manière aléatoire soit
selon une loi uniforme (fon tion rand) soit selon une loi normale (randn).
>> U=rand(2,3), N=randn(2,3)
U =
2.2. OPÉRATIONS SUR LES MATRICES 27

0.9501 0.6068 0.8913


0.2311 0.4860 0.7621

N =
-0.4326 0.1253 -1.1465
-1.6656 0.2877 1.1909

2.2 Opérations sur les matri es

Le tableau 2.2 présente les opérateurs arithmétiques élémentaires dans l'ordre roissant de
priorité. Ces opérateurs sont valables pour les s alaires, les ve teurs et les matri es, moyennant
les pré autions d'usage.

Opérateurs Opération
+ Addition
- Soustra tion
* Multipli ation
/ Division
\ Division inverse (pour la résolution de systèmes linéaires)
 Puissan e

Tab. 2.2  Opérateurs arithmétiques élémentaires

Remarque 2.3 Les opérateurs *, / et  peuvent être pré édés d'un point (i.e. .*, ./ et .)
pour signier que l'opération s'ee tue élément par élément, f. Ÿ 2.2.2.

Pour avoir de l'aide en ligne sur les opérateurs


help arith opérateurs arithmétiques élémentaires, sans les divisions;
help slash opérateurs de division;
help ops tous les opérateurs disponibles dans Matlab.

2.2.1 Opérations globales


Les opérations globales entre matri es permettent de reproduire les opérations usuelles du
al ul matri iel.

Addition, soustra tion


L'addition ou la soustra tion de deux matri es (ou ve teurs) n'est possible que si les matri es
sont de même dimension ou si l'un des deux opérandes est un s alaire. Dans e dernier as,
l'opération est ee tuée entre le s alaire et tous les éléments de la matri e.
>> A=pas al(3), B=ones(3)
A =
28 CHAPITRE 2. VECTEURS ET MATRICES

1 1 1
1 2 3
1 3 6

B =
1 1 1
1 1 1
1 1 1

>> X=A-B
X =
0 0 0
0 1 2
0 2 5

>> Y=A+B
Y =
2 2 2
2 3 4
2 4 7

>> Z=B+5
Z =
6 6 6
6 6 6
6 6 6

Produit de ve teurs
Un ve teur ligne et un ve teur olonne de même taille, peuvent être multipliés dire tement
par l'opérateur *. Le résultat du produit est soit un s alaire (produit s alaire) soit une matri e.
>> u=[2 5 6℄; v=ones(3,1);
>> x=u*v
x =
13

>> X=v*u
X =
2 5 6
2 5 6
2 5 6

Don le produit s alaire de deux ve teurs olonnes s'obtient en multipliant (à gau he) l'un des
deux ve teurs par la transposée de l'autre.
>> u=ones(3,1); v=[3; 5; 7℄;
>> x=u'*v
x =
15
2.2. OPÉRATIONS SUR LES MATRICES 29

>> y=v'*u
y =
15
On peut aussi utiliser la fon tion Matlab dot qui al ule le produit s alaire de deux ve teurs
de même longueur. Ave les ve teurs pré édents on a
>> dot(u,v)
ans =
15

>> dot(u,v')
ans =
15

Produit de matri es
L'opérateur * permet d'ee tuer le produit matri iel usuel entre deux matri es. Les dimen-
sions des deux matri es opérandes doivent don être ompatibles, i.e. le nombre de olonnes de
la première doit être égal au nombre de lignes de la se onde.
>> A=pas al(3); B=[2 3 0 1; 5 7 2 1; 8 3 4 1℄;
>> C=A*B
C =
15 13 6 3
36 26 16 6
65 42 30 10

>> Z=B*C
??? Error using ==> *
Inner matrix dimensions must agree.
Dans le as où l'un des opérandes est un s alaire et l'autre une matri e, la multipli ation est
toujours valide. L'opération s'ee tue sur haque élément de la matri e.
>> A=ones(2,4);
>> B=2*A
B =
2 2 2 2
2 2 2 2

>> C=A*3
C =
3 3 3 3
3 3 3 3

Division
Si A et B sont des matri es, l'opération Matlab B/A est équivalente à BA−1 . Ce qui revient
à résoudre le système linéaire XA = B . Ce qui est très peu ourant.
L'opérateur / est utilisé le plus souvent ave omme deuxième opérande un s alaire, le premier
pouvant être un s alaire, un ve teur ou une matri e.
30 CHAPITRE 2. VECTEURS ET MATRICES

>> A=pas al(3); u=ones(1,3);


>> B=A/4
B =
0.2500 0.2500 0.2500
0.2500 0.5000 0.7500
0.2500 0.7500 1.5000

>> v=u/3
v =
0.3333 0.3333 0.3333
L'opérateur \ sert à résoudre les systèmes linéaires par élimination de Gauss. Pour Matlab,
le système linéaire
Ax = b
a pour solution x = A\b. Voi i un exemple de résolution d'un système linéaire ave Matlab par
élimination de Gauss.
>> A=[3 0 1;0 5 -2;1 -2 7℄;
>> b=[1;2;3℄;
>> x=A\b
x =
0.1364
0.6364
0.5909
L'opérateur \ sera étudié en détail au Ÿ 3.1.

Puissan e
Si A est une matri e arrée et a un s alaire, l'opération Matlab A^a est équivalente à Aa .
Si a est un entier plus grand que 1, alors la matri e A est multipliée a fois pour avoir le résultat.
Pour d'autres valeurs de a, le al ul fait intervenir les valeurs propres et les ve teurs propres.
>> A=pas al(3);
A =
1 1 1
1 2 3
1 3 6

>> A^2
ans =
3 6 10
6 14 25
10 25 46

>> A^(1.25)
ans =
1.1845 1.5082 1.8773
1.5082 3.1541 5.1705
1.8773 5.1705 9.9251
2.3. MANIPULER LES MATRICES 31

2.2.2 Opérations élément par élément


Une variante très utile des opérateurs *, / et ^ permet d'ee tuer les opérations entre matri es
élément par élément. Il sut simplement de rajouter un point devant l'opérateur pour que
Matlab ee tue l'opération élément par élément. Soit A = (Aij ) et B = (Bij ) des matri es de
mêmes dimensions m × n, on a
C=A.*B équivalent à Cij = Aij ∗ Bij , i = 1, . . . , m, j = 1, . . . , n
C=A./B équivalent à Cij = Aij /Bij , i = 1, . . . , m, j = 1, . . . , n
C=A.^B équivalent à Cij = (Aij )Bij , i = 1, . . . , m, j = 1, . . . , n.
Les bou les en i et j sont don déroulées indire tement par Matlab.
>> A=pas al(3), B=ones(3);
A =
1 1 1
1 2 3
1 3 6

>> C1=A*B
C1 =
3 3 3
6 6 6
10 10 10

>> C2=A.*B
C2 =
1 1 1
1 2 3
1 3 6

Soit à tabuler la fon tion


1
y= , x ∈ [−1, 1].
1 + x2
Les ommandes en ligne Matlab pour la tabulation sont alors.
>> x=-1:.25:1;
>> y=1.0./(1+x.*x)
y =
0.5000 0.6400 0.8000 0.9412 1.0000 0.9412 0.8000 0.6400 0.5000
On ommen e don par tabuler x par simple énumération, puis on tabule y en utilisant les
opérateurs ./ et .* . A noter que le 1.0 permet de distinguer le point signalant un réel du point
de l'opérateur ./.

2.3 Manipuler les matri es

Par manipuler nous entendons


 onversion d'un ve teur en matri e et vi e versa ;
 extra tion d'une sous-matri e, extension d'une matri e;
 extra tion des diagonales ou des parties triangulaires supérieure et inférieure.
32 CHAPITRE 2. VECTEURS ET MATRICES

2.3.1 Conversion matri e/ve teur


Une matri e peut être fa ilement onvertie en ve teur grâ e à l'opérateur : (deux-points).
Le ve teur résultat est omposé de olonnes de la matri e sour e mises bout à bout.
>> A=[1 3 5; 2 4 6℄
A =
1 3 5
2 4 6

>> u=A(:)
u =
1
2
3
4
5
6
Pour la onversion d'un ve teur en matri e, on utilise la fon tion reshape. La syntaxe est
A=reshape(u,m,n)
dé oupe le ve teur u en n ve teurs de longueurs m pour former la matri e A. La matri e est
remplie olonne par olonne. Ave le ve teur u de l'exemple pré édent on a
>> A=reshape(u,2,3)
A =
1 3 5
2 4 6

>> B=reshape(u,3,2)
B =
1 4
2 5
3 6

2.3.2 Extra tion, extension


L'opérateur : s'utilise aussi pour extraire un sous-ve teur ou une sous-matri e par énuméra-
tion des indi es on ernés. La syntaxe est
debut:[pas:℄fin
où debut, pas et fin sont des expressions entières.
>> v=[0:.5:pi℄
v =
0 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000

>> w=v(2:5)
w =
0.5000 1.0000 1.5000 2.0000
2.3. MANIPULER LES MATRICES 33

>> A=[1 2 3; 4 1 2; 0 2 4℄
A =
1 2 3
4 1 2
0 2 4

>> v=A(:,1) % toutes les lignes de la olonne 1


v =
1
4
0

>> H=A(2:3,2:3) % H=A(i,j), 2<=i,j<=3


H =
1 2
2 4

>> u=A(2,:) % toutes les olonnes de la ligne 2


u =
4 1 2
Au lieu d'énumérer les indi es, on peut utiliser un ve teur d'indi es pour extraire un sous-
ve teur
>> u=[0:2:10℄
u =
0 2 4 6 8 10

>> I=[2 5 6℄;


>> v=u(I)
v =
2 8 10
Remarque 2.4 La taille du ve teur extrait est elle du ve teur d'indi es mais l'orientation
(ve teur ligne ou olonne) est elle du ve teur sour e.

On peut répliquer un ve teur plusieurs fois, pour avoir une matri e, en ombinant l'opéra-
teur : et un ve teur d'indi es.
>> u=[1:3℄'; v=u'
v =
1 2 3

>> A=u(:,[1 1 1℄)


A =
1 1 1
2 2 2
3 3 3
34 CHAPITRE 2. VECTEURS ET MATRICES

>> B=v([1 1℄,:)


B =
1 2 3
1 2 3
Pour extraire une sous-matri e, on peut aussi utiliser un ve teur d'indi es ou une matri e
d'indi es pour spé ier la sous-matri e à extraire.
>> a=randn(5); % matri e aléatoire d'ordre 5 (loi normale)
>> I=[2 4 3℄; J=[2 1℄; % indi es des éléments à extraire
>> b=a(I,J) % b(i,j)=a(I(i),J(j))
b =
-0.5883 -0.0376
-0.1364 0.1746
2.1832 0.3273

>> IJ=[2 3; 2 3℄ % matri e d'indi es


IJ =
2 3
2 3

>> =a(IJ)
=
-0.0376 0.3273
-0.0376 0.3273
Dans le as d'une matri e d'indi es, l'indexation se fait omme suit, en supposant que la matri e
d'indi es imat est de taille 2 × 3
 
A(imat(1, 1) imat(1, 2) imat(1, 3)
A(imat) =
A(imat(2, 1) imat(2, 2) imat(2, 3)

Comme dans un ve teur ou une matri e d'indi es, un indi e peut être répété, la matri e
extraite peut-être théoriquement plus grande que la matri e sour e. Il s'agit alors d'une ex-
tension.
>> a=[1 4 7; 2 5 8; 3 6 9℄'
a =
1 2 3
4 5 6
7 8 9

>> IJ=[2 3 2 3; 1 2 1 2; 2 2 2 2; 1 1 1 1℄ % les indi es à extraire


IJ =
2 3 2 3
1 2 1 2
2 2 2 2
1 1 1 1

>> b=a(IJ)
b =
2.3. MANIPULER LES MATRICES 35

4 7 4 7
1 4 1 4
4 4 4 4
1 1 1 1

>> [m,n℄=size(b) % taille de la matri e extraite


m =
4
n =
4

2.3.3 Suppression d'une ligne ou d'une olonne


Grâ e à la matri e vide, [℄, on peut supprimer une ligne ou une olonne d'une matri e.
>> A=[8 2 7; 0 1 3℄
A =
8 2 7
0 1 3

>> A(:,2)=[℄ % suppression de la 2ème olonne


A =
8 7
0 3

>> A(1,:)=[℄ % suppression de la 1ère ligne


A =
0 3

2.3.4 La fon tion diag


La fon tion diag permet de réer une matri e diagonale ou d'extraire la diagonale d'une
matri e. Si u est un ve teur, alors A=diag(u) est la matri e diagonale dont la diagonale est u.
Si A est une matri e, alors v=diag(A) est le ve teur ontenant les éléments diagonaux de A. La
fon tion diag(diag(A)) retourne une matri e diagonale dont la diagonale est elle de la matri e
A.
>> A=hilb(4)+rand(4)
A =
1.4565 1.1154 0.5096 0.6603
0.5185 1.1253 0.6557 1.0936
1.1547 1.1718 1.1355 0.2246
0.6947 0.9382 1.0836 0.4957

>> u=diag(A)
u =
1.4565
1.1253
1.1355
0.4957
36 CHAPITRE 2. VECTEURS ET MATRICES

>> D=diag(u)
D =
1.4565 0 0 0
0 1.1253 0 0
0 0 1.1355 0
0 0 0 0.4957

>> DD=diag(diag(A))
DD =
1.4565 0 0 0
0 1.1253 0 0
0 0 1.1355 0
0 0 0 0.4957

La fon tion diag admet un deuxième argument k permettant de désigner la |k|-ème sur-
diagonale (si k > 0) ou sous-diagonale (si k < 0). Si A est une matri e arrée d'ordre n, alors
diag(A,k) est un ve teur de taille n − |k|.

>> n=5;
>> H=pas al(5)
H =
1 1 1 1 1
1 2 3 4 5
1 3 6 10 15
1 4 10 20 35
1 5 15 35 70

>> u=diag(H,2)
u =
1
4
15

Si u est un ve teur de taille n, alors diag(u,k) est une matri e arrée, diagonale, d'ordre n + |k|.

>> n=4;
>> A=diag(2*ones(n-1,1),1)
A =
0 2 0 0
0 0 2 0
0 0 0 2
0 0 0 0
2.3. MANIPULER LES MATRICES 37

En ombinant les diérentes formes de la fon tion diag, on peut générer une matri e tridia-
gonale. Comme exemple, voi i omment générer la matri e de rigidité (à un oe ient près),
 
2 −1 0 ··· 0

 −1 2 −1 0 ··· 0 

 0 −1 2 −1 0 0 
R= .. .. .. .
 

 . . . 

 0 ··· 0 −1 2 −1 
0 ··· 0 0 −1 2

pour une triangulation uniforme sur un intervalle ]a, b[.

>> n=5;
>> R=diag(2*ones(n,1))-diag(ones(n-1,1),1)-diag(ones(n-1,1),-1)
R =
2 -1 0 0 0
-1 2 -1 0 0
0 -1 2 -1 0
0 0 -1 2 -1
0 0 0 -1 2

2.3.5 Matri es par blo s


La onstru tion de matri es par blo s est parti ulièrement fa ile ave Matlab. Soit à onstruire
une matri e B de la forme
 
A I
B=
O A

où A est une matri e n × n, O la matri e nulle d'ordre n et In la matri e identité d'ordre n.

>> A=pas al(3); % matri e de Pas al d'ordre 3


>> I3=eye(3); % matri e identité d'ordre 3
>> Zero=zeros(3); % matri e nulle d'odre 3
>> B=[A I3; Zero A℄
B =

1 1 1 1 0 0
1 2 3 0 1 0
1 3 6 0 0 1
0 0 0 1 1 1
0 0 0 1 2 3
0 0 0 1 3 6
38 CHAPITRE 2. VECTEURS ET MATRICES

2.4 Normes ve torielles et matri ielles

Les 3 normes ve torielles usuelles de Rn , à savoir


n
(2.1)
X
k x k1 = |xi |,
i=1

n
!1/2
(2.2)
X
k x k2 = x2i ,
i=1

k x k∞ = max |xi |, (2.3)


i=1,...,n

son al ulées respe tivement ave norm(x,1), norm(x,2) et norm(x,inf). Par défaut, norm(x)
retourne la norme Eu lidienne de x.
>> x=rand(10,1);
>> n1=norm(x,1), n2=norm(x,2), ni=norm(x,inf)
n1 =
5.6686
n2 =
2.0042
ni =
0.9501
Plus généralement, il est possible de al uler la norme p d'un ve teur de Rn , à savoir
n
!1/p
X
p
k x kp = |xi | .
i=1

Il sut de le pré iser dans le se ond argument de la fon tion norm.


Lorsque le premier argument de la fon tion norm est une matri e, la fon tion norm retourne
la norme matri ielle subordonnée à la norme ve torielle spé iée dans le deuxième argument de
la fon tion norm. La valeur par défaut pour le deuxième argument est toujours p = 2.
Soit A une matri e m × n. La norme matri ielle subordonnée à la norme p est donnée par
k Ax kp
k A kp = max
x6=0 k x kp
Dans le as des normes usuelles (i.e. p = 1, 2, ∞) on a.
X
k A k1 = max |aij |,
j
i
1/2
ρ(AT A)

k A k2 = ,
X
k A k∞ = max |aij |,
i
j

où ρ(AT A) est le rayon spe tral de la matri e AT A. Si A est une matri e arrée symétrique, alors
k A k2 = ρ(A)
la plus grande valeur propre (en valeur absolue) de la matri e A.
2.5. FONCTION MATHÉMATIQUES ÉLÉMENTAIRES 39

>> A=rand(3,4)
A =
0.4103 0.3529 0.1389 0.6038
0.8936 0.8132 0.2028 0.2722
0.0579 0.0099 0.1987 0.1988

>> n1=norm(A,1), n2=norm(A,2), ni=norm(A,inf)


n1 =
1.3618
n2 =
1.4520
ni =
2.1818
La norme k · k2 étant di ile à al uler pour des matri es de grande taille (puisque faisant
appel aux valeurs propres), on peut l'estimer ave la fon tion normest.
La fon tion norm peut aussi al uler la norme de Frobenius d'une matri e arrée, dénie par
 1/2
n
1/2
k A kF = tr(AT A)
X
a2ij 

=
i,j=1

Pour ela, il sut d'utiliser norm(A,'fro').


>> a=hilb(4)
a =
1.0000 0.5000 0.3333 0.2500
0.5000 0.3333 0.2500 0.2000
0.3333 0.2500 0.2000 0.1667
0.2500 0.2000 0.1667 0.1429

>> nf=norm(a,'fro')
nf =
1.5097

2.5 Fon tion mathématiques élémentaires

Les fon tions mathématiques élémentaires sont dénies à la fois pour des s alaires (réels ou
omplexes) et pour les tableaux. Dans le as des tableaux, le résultat est un tableau de même
dimension que le tableau passé en argument. La fon tion s'applique sur haque élément du
tableau. Le tableau 2.3-2.5 donne quelques fon tions mathématiques élémentaires usuelles. Pour
la liste omplète, taper help elfun.

2.6 Exer i es

Exer i e 2.1 Tabuler, dans l'intervalle [−1, 1], la fon tion


(
1
x sin x si x 6= 0,
f (x) =
1 si x = 0
40 CHAPITRE 2. VECTEURS ET MATRICES

Fon tion Résultat


abs valeur absolue ou module
angle argument d'un nombre omplexe
imag partie imaginaire d'un nombre omplexe
real partie réelle d'un nombre omplexe
onj nombre omplexe onjugué

Tab. 2.3  Quelques fon tions mathématiques élémentaires omplexes

Fon tion Résultat


os osinus
a os ar osinus
osh osinus hyperbolique
sin sinus
asin ar sinus
sinh sinus hyperbolique
tan tangente
atan ar tangente
tanh tangente hyperbolique

Tab. 2.4  Quelques fon tions trigonométriques

Fon tion Résultat


exp exponentielle
log logarithme népérien
log10 logarithme base 10
sqrt ra ine arrée
nthroot ra ine n-ème

Tab. 2.5  Exponentielles et logarithmes


2.6. EXERCICES 41

en utilisant seulement les opérateurs vus dans e hapitre en évitant l'apparition de nan à ause
d'une division par zéro, tout en in luant zéro dans la tabulation de l'intervalle. On pourra repré-
senter f à l'aide de la fon tion plot(x,y) qui tra e la ourbe de y = f (x).
Exer i e 2.2 (Polynmes de T heby hev) On appelle polynme de T heby hev de degré
n la fon tion Tn : [−1, 1] → R, dénie par

Tn (x) = cos (n arccos x) .

Tabuler les fon tions Tn , pour 0 ≤ n ≤ 4, dans le même tableau. On n'utilisera qu'une seule
instru tion Matlab pour l'évaluation de toutes les fon tions Tn .
Exer i e 2.3 Soit U une matri e n × 3, dont haque ligne représente un ve teur de R3 . É rire
une instru tion Matlab qui al ule la norme eu lidienne de toutes les lignes de la matri e U .
Exer i e 2.4 Soit x et y deux ve teurs de Rn . É rire les instru tions Matlab pour générer les
matri es suivantes
aij = xi yj
bij = xi + yj
xi
cij =
yj
|yj |
dij = xi

pour i, j = 1, . . . , n.
Exer i e 2.5 Soit K = (kij ) une matri e arrée d'ordre n. Construire une matri e arrée
A = (aij ) d'ordre 3n, dont tous les éléments sont nuls sauf

a3i−2,3j−2 ← kij , a3i−1,3j−1 ← kij , a3i,3j ← kij , i, j = 1, . . . , n.

Exer i e 2.6 (Matri e de Vandermonde) Pour x = (x1 x2 · · · xn )T un ve teur de Rn , une


matri e de Vandermonde est de la forme
xm xm−1
 
1 1 ··· x1 1
 xm
2 xm−1
2 ··· x2 1 
V = . .. .. .. .. 
 
 .. . . . . 
xm
n xm−1
n ··· xn 1

Générer la matri e V .
42 CHAPITRE 2. VECTEURS ET MATRICES
Chapitre 3

Algèbre linéaire

Toute la puissan e de Matlab est symbolisée par l'opérateur \ utilisé pour la résolution
des systèmes linéaires quelque soit leur nature (triangulaire, arré, re tangulaire sur ou sous
déterminé). Plusieurs fon tions de fa torisation de matri es sont également disponibles.

3.1 Systèmes linéaires

L'opérateur Matlab \ (ba kslash ) est la ommande générique pour résoudre un système
d'équations linéaires
Ax = b (3.1)
ave A une matri e m × n et b ∈ Rn . Avant le al ul de la solution, les oe ients de la matri e
A sont examinés. Ainsi l'opérateur \ déte te automatiquement les as suivants:
 A est triangulaire (moyennant quelques permutations);
 A est symétrique dénie positive
 A est arrée non singulière n'entrant pas dans les deux as pré édents;
 A est re tangulaire surdéterminée (m > n) ou surdéterminée (m < n).

3.1.1 Systèmes arrés


C'est le as le plus ourant: A est une matri e arrée d'ordre n et b un ve teur de Rn .
>> A=hilb(4) % matri e du système
A =
1.0000 0.5000 0.3333 0.2500
0.5000 0.3333 0.2500 0.2000
0.3333 0.2500 0.2000 0.1667
0.2500 0.2000 0.1667 0.1429

>> b=ones(4,1) % se ond membre du système


b =
1
1
1
1

43
44 CHAPITRE 3. ALGÈBRE LINÉAIRE

>> x=A\b % resolution


x =
-4.0000
60.0000
-180.0000
140.0000

Lorsque la matri e A est singulière ou presque singulière un message d'avertissement est


émis. Dans l'exemple suivant A est une matri e de Hilbert d'ordre 4 rendue presque singulière
(la première et la quatrième olonnes sont presque identiques). La norme du résidu indique que
la solution al ulée est loin de la solution exa te.

>> A=hilb(4); A(:,4)=A(:,1)+10^-15;


>> b=ones(4,1);
>> x=A\b
Warning: Matrix is lose to singular or badly s aled.
Results may be ina urate. RCOND = 7.103259e-18.
x =
1.0e+15 *

-1.1262
0.0000
-0.0000
1.1262

>> norm(A*x-b)
ans =
0.0021

Si on a plusieurs se onds membres b1 , . . . , bm disponibles, on en fait une matri e se ond


membre B = (b1 · · · bm ) et on applique l'opérateur \ ave ette matri e. On gagne du temps
ar les olonnes de B sont transformées simultanément pendant l'élimination. La solution X =
(x1 · · · xm ) est alors une matri e dont haque olonne xi est la solution du système Ax = bi .

>> A=hilb(4)
>> b1=ones(4,1), b2=rand(4,1), b3=randn(4,1)
>> B=[b1 b2 b3℄
B =
1.0000 0.9501 -0.4326
1.0000 0.2311 -1.6656
1.0000 0.6068 0.1253
1.0000 0.4860 0.2877

>> x=A\B
x =
-4.0000e+00 6.5070e+01 1.8275e+02
6.0000e+01 -6.5867e+02 -1.8019e+03
-1.8000e+02 1.4952e+03 3.9972e+03
1.4000e+02 -9.3269e+02 -2.4585e+03
3.1. SYSTÈMES LINÉAIRES 45

3.1.2 Systèmes re tangulaires


Les systèmes re tangulaires surdéterminés (m > n) se ren ontrent le plus souvent en identi-
 ation de paramètres. Si A est une matri e m × n, alors le système (3.1) admet une solution si
b ∈ ImA. Ce qui est peu probable si m >> n. Dans e as on peut se ontenter d'une proje tion
orthogonale de b sur ImA. Ce qui revient à résoudre le problème de moindres arrés
1
min k Ax − b k22 . (3.2)
x∈Rn 2
Une solution de (3.2) vérie le système aux équations normales
AT Ax = AT b. (3.3)
Ce système a toujours au moins une solution. Si A est de rang plein, alors AT A est inversible et
l'unique solution de (3.3) est donnée par
x = (AT A)−1 AT b.

La matri e A+ = (AT A)−1 AT est appelée pseudo-inverse de A ar A+ A = In (mais AA+ 6= I).

t y
-1.00 4.00
-0.75 5.25
-0.50 3.00
0.00 5.00
0.30 6.75
0.50 7.00
1.00 9.00

Tab. 3.1  Tableau des observation du modèle linéaire


Un exemple simple est la régression linéaire. Un modèle linéaire à une entrée y(t) = a + tb est
mesuré en diérentes valeurs de t pour produire les observations du tableau 3.1. Les paramètres
a et b sont à déterminer pour minimiser (au sens des moindres arrés) l'erreur des observations
du tableau 3.1.
Cela donne le système surdéterminé
a − 1.00b = 4.00
a − 0.75b = 5.25
a − 0.50b = 3.00
a + 0.00b = 5.00
a + 0.30b = 6.75
a + 0.50b = 7.00
a + 1.00b = 9.00

La solution aux moindres arrés de e système est al ulé ave l'opérateur \.


46 CHAPITRE 3. ALGÈBRE LINÉAIRE

>> A=[1 -1; 1 -0.75; 1 -0.5; 1 0; 1 0.3; 1 0.5 1 1℄


A =
1.0000 -1.0000
1.0000 -0.7500
1.0000 -0.5000
1.0000 0
1.0000 0.3000
1.0000 0.5000
1.0000 1.0000

>> b=[4 5.25 3 5 6.75 7 9℄


b =
4.0000
5.2500
3.0000
5.0000
6.7500
7.0000
9.0000

>> x=A\b
X =
5.8719
2.4520

La droite de régression y = 5.8719 + 2.4520t et les points de l'é hantillon sont représentées dans
la gure 3.1
Les systèmes surdéterminés se ren ontrent aussi dans les problèmes d'éléments nis lorsque
les onditions aux bords sont des relations linéaires entre variables. Dans e as, le plus simple
est de rajouter es relations aux système d'équations fournies par la dis rétisation. On obtient
alors un système surdéterminé.
Pour un système sous-déterminé (m < n), il y a plus d'in onnues que d'équations. La matri e
AT A du système aux équations normales (3.3) est don singulière. En onséquen e, la solution
n'est jamais unique. Matlab fourni une solution parti ulière (en utilisant la fa torisation QR).
>> A=pas al(4); A(4,:)=[℄ % suppression de la 4ème ligne de A
A =
1 1 1 1
1 2 3 4
1 3 6 10

>> b=[2;3;7℄;
>> x=A\b
x =
2.3333
0
-2.0000
1.6667
3.2. INVERSES ET DÉTERMINANTS 47

10

8
y=5.8719+2.4520t

2
−1 −0.5 0 0.5 1
t

Fig. 3.1  Régression linéaire

>> norm(A*x-b)
ans =
2.1756e-15
Une solution générale est la somme de la solution parti ulière et d'un ve teur du noyau dont
la base est déterminée à l'aide de la fon tion null ( f. l'aide en ligne).

3.2 Inverses et déterminants

Les fon tions det et inv al ulent le déterminant et la matri e inverse d'une matri e arré
passée en argument.
>> a=hilb(4);
>> det(a)
ans =
1.6534e-07

>> ai=inv(a)
ai =
1.6000e+01 -1.2000e+02 2.4000e+02 -1.4000e+02
-1.2000e+02 1.2000e+03 -2.7000e+03 1.6800e+03
2.4000e+02 -2.7000e+03 6.4800e+03 -4.2000e+03
-1.4000e+02 1.6800e+03 -4.2000e+03 2.8000e+03

>> ai*a % vérifi ation


ans =
48 CHAPITRE 3. ALGÈBRE LINÉAIRE

1.0000e+00 0 3.5527e-15 0
0 1.0000e-00 0 -2.8422e-14
0 1.1369e-13 1.0000e+00 -1.1369e-13
0 -1.1369e-13 -5.6843e-14 1.0000e+00
La matri e de Pas al a une inverse entière.
>> P=pas al(5)
P =

1 1 1 1 1
1 2 3 4 5
1 3 6 10 15
1 4 10 20 35
1 5 15 35 70

>> Pi=inv(P)
Pi =

5 -10 10 -5 1
-10 30 -35 19 -4
10 -35 46 -27 6
-5 19 -27 17 -4
1 -4 6 -4 1
Pour résoudre le système (3.1), lorsque A est une matri e non singulière, on a don (théori-
quement) la possibilité d'utiliser l'une des deux instru tions suivantes.
>> x=A\b % élimination de Gauss
>> x=inv(A)*b % inversion de A
Mais pour des raisons de oûts et de stabilité numérique, la première est de loin préférable.
Pour une matri e re tangulaire m × n (m > n), de rang plein, la matri e pseudo-inverse
A+ = (AT A)−1 AT , est al ulée par la fon tion pinv.
>> A=randn(4,2)
A =
0.6145 -0.6436
0.5077 0.3803
1.6924 -1.0091
0.5913 -0.0195

>> Api=pinv(A)
Api =
-0.1124 0.6438 0.3071 0.3763
-0.5449 1.0254 -0.2656 0.4460

>> Api*A % Verifi ation : pinv(A)*A=I


ans =
1.0000 0.0000
0.0000 1.0000
3.3. VALEURS PROPRES, VECTEURS PROPRES 49

>> A*Api % Verifi ation : A*pinv(A) <> I


ans =
0.2816 -0.2643 0.3596 -0.0558
-0.2643 0.7169 0.0549 0.3607
0.3596 0.0549 0.7877 0.1867
-0.0558 0.3607 0.1867 0.2138
A noter que lorsque la matri e du système (3.1) est re tangulaire, x=A\b donne la solution aux
moindres arrés. Théoriquement, les trois instru tions suivantes al ulent la solution du système
aux équations normales (3.3).
>> x=A\b
>> x=pinv(A)*b
>> x=inv(A'*A)*A'*b

Comme pour les systèmes non singuliers, seule la première est utilisée pour des raisons de oûts
et de stabilité numérique.

3.3 Valeurs propres, ve teurs propres

La fon tion eig retourne les valeurs propres d'une matri e arrée passée en argument.
>> A=pas al(4)
A =
1 1 1 1
1 2 3 4
1 3 6 10
1 4 10 20

>> lambda=eig(A)
lambda =
3.8016e-02
4.5383e-01
2.2034e+00
2.6305e+01
Si de plus A est diagonalisable (i.e. les ve teurs propres de A forment une base de Rn ), on peut
obtenir les ve teurs propres asso iés en utilisant deux arguments résultat
[P,D℄=eig(A)
où P est la matri e de passage (ve teurs propres normés sto kés en olonne) et D la matri e
diagonale des valeurs propres. Ave la matri e A de l'exemple pré édent on a.
>> [P,D℄=eig(A)

P =

3.0869e-01 -7.8728e-01 5.3037e-01 6.0187e-02


-7.2309e-01 1.6323e-01 6.4033e-01 2.0117e-01
50 CHAPITRE 3. ALGÈBRE LINÉAIRE

5.9455e-01 5.3211e-01 3.9183e-01 4.5808e-01


-1.6841e-01 -2.6536e-01 -3.9390e-01 8.6375e-01

D =

3.8016e-02 0 0 0
0 4.5383e-01 0 0
0 0 2.2034e+00 0
0 0 0 2.6305e+01

>> P*D*inv(P) % vérifi ation A=P*D*inv(P)

ans =

1.0000 1.0000 1.0000 1.0000


1.0000 2.0000 3.0000 4.0000
1.0000 3.0000 6.0000 10.0000
1.0000 4.0000 10.0000 20.0000

3.4 Fa torisations de matri es

Fon tion fa torisation


lu fa torisation LU
hol fa torisation de Cholesky
qr fa torisation QR
luin fa torisation LU in omplète
holin fa torisation de Cholesky in omplètes

Tab. 3.2  Quelques fon tions de fa torisation de matri es

Quelques fon tions Matlab de fa torisation de matri es sont présentées gure 3.2. Les fon -
tions lu et hol sont surtout utiles lorsqu'on doit résoudre plusieurs systèmes ave la même ma-
tri e. Dans e as, après fa torisation, les diérentes résolutions se réduisent à des substitutions.
D'où un gain en temps de al ul. Les fon tions de fa torisation in omplète (luin et holin )
seront étudiées au hapitre 5. Elles servent à al uler les pré onditionneurs des méthodes itéra-
tives. Pour voir toutes les fon tions Matlab de fa torisation ou de dé omposition de matri es,
taper lookfor fa torization ou lookfor de omposition dans le fenêtre de ommandes.

3.4.1 Fa torisation LU
Si A une matri e arrée d'ordre n non singulière, alors il existe une matri e L, triangulaire
inférieure, et une matri e U triangulaire supérieure telle que A = LU . La solution du système
3.4. FACTORISATIONS DE MATRICES 51

(3.1) s'obtient alors en résolvant su essivement


Ly = b,
Ux = y.

La forme la plus simple de la fon tion lu a pour syntaxe


[L,U℄=lu(A);
Ce qui donne, pour la résolution,
y=L\b;
x=U\y;
ou en ore
x=U\(L\b);
Si la stratégie du pivot partiel est appliquée lors de la fa torisation, alors il existe, en plus de
L et U , une matri e de permutation P telle que P A = LU . La syntaxe de la fon tion lu devient
alors
[L,U,P℄=lu(A)
Il faut alors permuter le se ond membre lors de la résolution, i.e. rempla er (3.1) par le système
P Ax = P b

Voi i un exemple omplet.


>> A=randn(4) % A générée aléatoirement
A =
0.2944 -0.6918 -1.4410 0.8156
-1.3362 0.8580 0.5711 0.7119
0.7143 1.2540 -0.3999 1.2902
1.6236 -1.5937 0.6900 0.6686

>> [L,U℄=lu(A) % fa torisation de A


L =
0.1813 -0.2060 1.0000 0
-0.8230 -0.2320 -0.5703 1.0000
0.4400 1.0000 0 0
1.0000 0 0 0

U =
1.6236 -1.5937 0.6900 0.6686
0 1.9552 -0.7035 0.9961
0 0 -1.7110 0.8996
0 0 0 2.0063

>> b=ones(4,1) % ve teur ne ontenant que des 1


>> x=U\(L\b) % résolution de Ly=b et Ux=y
x =
52 CHAPITRE 3. ALGÈBRE LINÉAIRE

-0.2402
-0.3068
0.1055
1.2389

On remarque surtout que la matri e L n'est pas triangulaire inférieure ar la stratégie du pivot
partiel est systématiquement appliquée dans la fon tion lu. En fait L est le produit d'une matri e
de permutation et d'une matri e triangulaire inférieure. Pour avoir la ons ien e tranquille, il
faut don isoler les permutations dans une matri e à part. Ave la matri e A de l'exemple
pré édent on a
>> [L,U,P℄=lu(A)
L =

1.0000 0 0 0
0.4400 1.0000 0 0
0.1813 -0.2060 1.0000 0
-0.8230 -0.2320 -0.5703 1.0000

U =
1.6236 -1.5937 0.6900 0.6686
0 1.9552 -0.7035 0.9961
0 0 -1.7110 0.8996
0 0 0 2.0063

P =
0 0 0 1
0 0 1 0
1 0 0 0
0 1 0 0

>> x=U\(L\(P*b)) % résolution ave permutation du 2nd membre


x =
-0.2402
-0.3068
0.1055
1.2389
Remarque 3.1 Il existe un deuxième argument permettant de ontrler la re her he du pivot
dans lu, voir Ÿ 5.4.1.

3.4.2 Fa torisation de Cholesky


Si la matri e A est symétrique dénie positive, alors il existe une matri e unique R, triangu-
laire inférieure ayant tous les éléments diagonaux positifs, telle que
A = RRT .
C'est la fa torisation de Cholesky qui s'obtient par la fon tion hol. Le système (3.1) est alors
rempla é par
RRT x = b.
3.4. FACTORISATIONS DE MATRICES 53

Mais la fon tion hol retourne RT de sorte que la fa torisation de Cholesky de Matlab est
A=R'*R au lieu de A = RRT . En tenant ompte de e détail, la solution du système est donné
par
y=R'\b;
x=R\y;
ou en ore
x=R\(R'\b)
La matri e de Pas al, donnée par la fon tion pas al est dénie positive.
>> A=pas al(5) % matri e de Pas al d'ordre 5
A =
1 1 1 1 1
1 2 3 4 5
1 3 6 10 15
1 4 10 20 35
1 5 15 35 70

>> R= hol(A) % fa torisation de Cholesky


R =
1 1 1 1 1
0 1 2 3 4
0 0 1 3 6
0 0 0 1 4
0 0 0 0 1

>> b=randperm(5)' % se ond membre


b =
3
5
2
1
4

>> x=R\(R'\b) % résolution


x =
-16
53
-56
27
-5

>> norm(A*x-b) % vérifi ation


ans =
0
Avant d'appeler la fon tion hol il est important de s'assurer que la matri e passée en argu-
ment est dénie positive.
54 CHAPITRE 3. ALGÈBRE LINÉAIRE

>> A=rand(3); % matri e quel onque


>> R= hol(A) % tentative de fa torisation R'R
??? Error using ==> hol
Matrix must be positive definite.

3.4.3 Fa torisation QR
Une matri e Q, m × n ( m ≥ n), est dite orthogonale ou unitaire si ses olonnes sont des
ve teurs orthogonaux deux à deux et de norme unité. Si Q est une matri e orthogonale, on a
QT Q = In .
Pour toute matri e A, m × n, il existe une matri e orthogonale Q, m × n, et une matri e re tan-
gulaire supérieure R, n × n, telles que
A = QR
La fon tion qr retourne les fa teurs Q et R de la fa torisation.
>> P=pas al(4); A=P(:,1:2)
A =
1 1
1 2
1 3
1 4

>> [Q,R℄=qr(A)
Q =
-0.5000 0.6708 0.0236 0.5472
-0.5000 0.2236 -0.4393 -0.7120
-0.5000 -0.2236 0.8079 -0.2176
-0.5000 -0.6708 -0.3921 0.3824

R =
-2.0000 -5.0000
0 -2.2361
0 0
0 0

>> Q*R
ans =
1.0000 1.0000
1.0000 2.0000
1.0000 3.0000
1.0000 4.0000

On remarque surtout que la matri e Q est arrée d'ordre 4 au lieu d'être une matri e 4 × 2. Par
défaut les olonnes de A sont omplétées par des olonnes linéairement indépendantes pour avoir
une matri e Q arrée. Dans beau oup de as, on a pas besoin de la matri e Q omplète, ar les
olonnes rajoutées sont dans l'orthogonal de ImA et orrespondent à la partie nulle de la matri e
R. Dans e as, on utilise la forme é onomique de la fon tion qr qui permet de ne retenir que les
partie utile de la matri e Q.
3.4. FACTORISATIONS DE MATRICES 55

>> [Q,R℄=qr(A,0)
Q =
-0.5000 0.6708
-0.5000 0.2236
-0.5000 -0.2236
-0.5000 -0.6708

R =
-2.0000 -5.0000
0 -2.2361

>> Q*R
ans =
1.0000 1.0000
1.0000 2.0000
1.0000 3.0000
1.0000 4.0000

3.4.4 Dé omposition en valeurs singulières


Pour une matri e re tangulaire A la notion de valeur propre n'est pas valide. On introduit
le on ept de valeur singulière. Les valeurs singulières µi d'une matri e re tangulaire A sont les
ra ines arrées des valeurs propres de la matri e arrée AT A.
Si A est une matri e re tangulaire m × n, il existe deux matri es orthogonales U et V , d'ordre
respe tivement m et n telles que
A = U SV T
où S est la matri e diagonale des valeurs singulières. C'est la dé omposition en valeurs singulières
fournie par la fon tion svd.
>> P=pas al(4); A=P(:,2:3)
A =
1 1
2 3
3 6
4 10

>> [U,S,V℄=svd(A)
U =
-0.0999 -0.5355 -0.5459 -0.6366
-0.2687 -0.6366 -0.1508 0.7070
-0.5065 -0.3031 0.7469 -0.3061
-0.8132 0.4649 -0.3483 0.0352

S =
13.2331 0
0 0.9408
0 0
0 0
56 CHAPITRE 3. ALGÈBRE LINÉAIRE

V =
-0.4088 -0.9126
-0.9126 0.4088

>> U*S*V' % vérifi ation


ans =
1.0000 1.0000
2.0000 3.0000
3.0000 6.0000
4.0000 10.0000

3.5 Exer i es

Exer i e 3.1 Considérons la matri e tridiagonale d'ordre n suivante, étudiée au Ÿ 2.3.4.


 
2 −1 0 ··· 0

 −1 2 −1 0 ··· 0


 0 −1 2 −1 0 0

R= .. .. .. .
 

 . . . 

 0 ··· 0 −1 2 −1 
0 ··· 0 0 −1 2
Sa ondition κ2 (R) est de l'ordre de n2 (O(n2 )), voir par exemple [10, hap. 2℄ ou [6, hap. 4℄
pour la formule exa te. Il existe don trois réels a, b et c tels que κ2 (R) = an2 + bn + c. On
se propose de al uler les valeurs appro hées de a, b et c par la méthode des moindres arrés.
Cal uler κ2 (R) pour n = 5, 10, 30, 50, 100. Former la matri e et le se ond membre du système
surdéterminé orrespondant. Cal uler les valeurs appro hées de a, b et c au sens des moindres
arrés.
Exer i e 3.2 Un modèle quadratique à une entrée y(t) = x0 + x1 t + x2 t2 est mesuré en dif-
férentes valeurs de t pour produire les observations du tableau 3.3. Les paramètres x0 , x1 et x2
sont à déterminer. Générer la matri e A et le se ond membre b du système surdéterminé orres-
pondant et al uler les paramètres x0 , x1 et x2 . Tra er (ave plot) la ourbe y(t), t ∈ [−5, 5] et
les points du tableau 3.3.

t -4 -3 -1.5 -0.5 1 2.5 4


y 6 3 -2 -1 2 10 23
Tab. 3.3  Tableau des observations du modèle quadratique de l'exer i e 3.2

Exer i e 3.3 Cet exer i e [10℄ montre que la valeur du déterminant n'est pas une indi ation
sur le bon ou mauvais onditionnement d'une matri e. Soit la matri e arrée d'ordre n
 
1 2 0 ··· 0

 0 1 2 0 ··· 0 

 0 0 1 2 0 0 
A= .. .. .. .
 

 . . . 

 0 ··· 0 0 1 2 
0 ··· 0 0 0 1
3.5. EXERCICES 57

Générer la matri e A (pour des valeurs de n raisonnables). Cal uler le déterminant, l'inverse et
la ondition κ(A) ave les normes k · k1 ou k · k∞ . Tra er la ourbe de κ1 (A) en fon tion de n.
Exer i e 3.4 On onsidère la matri e
 
−1 2 2
A =  −3 4 2 .
−1 1 3

1. Cal uler les valeurs et ve teurs propres de A, i.e. une matri e diagonale D et une matri e
inversible P telle que A = P DP −1 .
2. On onsidère la suite ve torielle
un = −un−1 + 2vn−1 + 2wn−1 ,
vn = −3un−1 + 4vn−1 + 2wn−1 ,
wn = −un−1 + vn−1 + 3wn−1 ,

pour n ≥ 1 et u0 = v0 = w0 = 1. Cal uler u10 , v10 et w10 .


Exer i e 3.5 Soit la matri e triadiagonale d'ordre n
2 + 2h2 −1 − 2h2
 
0
 −1 − 2h2 2 + 8h2 −1 − 6h2 
.. ..
 
A= . .
 

 
 2 + 2(n − 1)2 h2 −1 − n(n − 1)h2 
−1 − n(n − 1)h2 2 + 2n2 h2

où h = 1/(n + 1), et le ve teur de Rn


 T
1
b = −h2 f1 − 2 , f2 , . . . , fn−1 , fn − [n(n + 1) + 1/h2 ](2 + sin 1)
h

où fi = 2 + 6x2i + 2xi cos xi − (1 + x2i ) sin xi ave xi = ih, i = 1, . . . , n.


La matri e A et le ve teur b sont issus d'une dis rétisation par diéren es nies du problème
aux limites [6℄
(1 + x2 )u′′ (x) + 2xu′ (x) = 2 + 6x2 + 2x cos x − (1 + x2 ) sin x dans ]0, 1[,
u(0) = 1, u(1) = 2 + sin 1

dont la solution exa te est ue (x) = x2 + sin x + 1.


1. Générer la matri e A et le se ond membre b pour n donné, n ≤ 100.
2. Résoudre le système Auh = b, où uh = (u1 , . . . , un )T est la solution appro hée (aux points
xi = ih) du problème aux limites.
3. Cal uler l'erreur, en norme L2 , entre la solution appro hée uh et la solution exa te ue
n
!1/2
Z 1 X
2 2
k uh − ue kL2 (]0, 1[) = (uh (x) − ue (x)) dx ≈ h (ui − ue (xi )) .
0 i=1
58 CHAPITRE 3. ALGÈBRE LINÉAIRE
Chapitre 4

Graphisme

En plus du al ul pur, Matlab est réputé pour son interfa e graphique. Ve teurs et matri es
peuvent être visualisés sous forme de ourbes, surfa es, ourbes de niveau, histogrammes, et .
Ces graphiques peuvent êtres annoter, légender et modier à partir de la ligne de ommande ou
dire tement dans la fenêtre graphique.
Pour l'aide en ligne sur les fon tions graphiques
help graph2d graphes bidimensionnels;
help graph3d graphes tridimensionnels;
help spe graph graphes spé iaux (barres, histogrammes, amemberts, et ).

4.1 Généralités

En Matlab une instru tion graphique ouvre une fenêtre graphique dans laquelle est a hée le
résultat. La ommande figure permet d'ouvrir une nouvelle fenêtre. Par défaut, 'est la dernière
fenêtre ouverte qui est a tive (don visible). Pour réa tiver une fenêtre devenue ina tive, il sut
de taper figure(n), où n est le numéro de la gure. Si la gure n n'existe pas, une nouvelle
fenêtre est réée ave omme numéro le numéro suivant elui de la dernière fenêtre ouverte.

4.2 Graphisme 2D

La fon tion de base pour le graphisme 2D est plot. La forme simple de la fon tion plot est
plot(x,y)
tra e la ourbe dénie par l'ensemble des points (xi , yi ), i = 1, .., n. Les deux ve teurs x et y
doivent don être de même taille. Le tra é est obtenu en reliant les points (xi , yi ) par des segments
de droite.
>> x=-4:.1:4;
>> y=x.*sin(x).* os(x);
>> plot(x,y)
Le résultat est la gure 4.1.
Lorsqu'on tra e plusieurs ourbes sur la même fenêtre, on aimerait pouvoir les distinguer les
unes des autres. La ommande plot dispose d'un troisième paramètre d'entrée permettant de

59
60 CHAPITRE 4. GRAPHISME

1.5

0.5

−0.5

−1

−1.5
−4 −3 −2 −1 0 1 2 3 4

Fig. 4.1  Graphe de la fon tion y = x sin x cos x entre -4 et 4.

spé ier la ouleur, le symbole à haque point (xi , yi ), le type de tra é. Ce troisième paramètre
est une haîne d'au plus 3 ara tères de la forme ' st', où est la ouleur de la ourbe, s
le symbole à haque point (xi , yi ) et t le style du trait. Les diérentes possibilités oertes par
Matlab sont présentées dans le tableau 4.1.
Ave la possibilité de distinguer les tra és, on peut utiliser la forme omplète de la ommande
plot. On utilise alors la syntaxe
plot(x1,y1,s1,x2,y2,s2,...)
qui permet de tra er (dans le même gure) les ourbes dénies par les ve teurs de points (x1,y1),
(x2,y2),... ave s1, s2,... les spé i ations permettant de les distinguer.
Voi i un exemple d'utilisation de la ommande plot omplète. Le résultat est la gure 4.2
>> x=-4:0.1:4; t=-4:.5:4;
>> y1=x.*sin(x).* os(x); y2=exp(-x.*x+sin(x)); z=exp(sin(t));
>> plot(x,y1,'k-',x,y2,'r:',t,z,'*')
Pour le troisième tra é, i.e. (t,z), on a juste marqué les points (ti , zi ) par le symbole *.
Si les diérentes ourbes doivent être tra ées l'une après l'autre, il faut maintenir la fenêtre
pré édente ave la ommande hold on. Sinon, la nouvelle fenêtre ea e l'an ienne (et don la
ourbe pré édente). Les diérentes ourbes de la gure 4.2 peuvent être tra ées l'une après l'autre,
omme suit.
>> x=-4:0.1:4; t=-4:.5:4;
>> y1=x.*sin(x).* os(x);
>> plot(x,y1,'k-')
>> y2=exp(-x.*x+sin(x));
>> hold on
>> plot(x,y2,'r:')
>> z=exp(sin(t));
>> plot(t,z,'*')
>> hold off
4.2. GRAPHISME 2D 61

Couleur Symbole Style


y jaune . point - trait plein
m magenta o rond : pointillé ourt
yan x roix -. pointillé long
r rouge + plus -- pointillé mixte
g vert * étoile
b bleu s arré
w blan d losange
k noir v triangle (bas)
 triangle (haut)
< triangle (gau he)
> triangle (doit)
p pentagone
h hexagone

Tab. 4.1  Couleur, symbole et style d'un tra é

Ave la ommande hold off toute nouvelle gure ea e la pré édente. C'est le mode par défaut.
Lorsqu'on tape seulement hold on passe d'un mode à un autre, i.e. on passe de hold on à hold
off et vi e versa.

4.2.1 Les axes


La fon tion axis permet de régler les axes. La syntaxe est
axis([x_min x_max y_min y_max℄)
qui xe les bornes min et max des axes. Par défaut, une gure omporte systématiquement des
axes. Pour les supprimer, il sut de taper axis off; et pour les rétablir axis on. Dans tous les
as, pour passer d'un état à un autre on tape simplement axis. Lorsqu'on souhaite que la gure
respe te absolument l'é helle du graphe, il sut de taper axis image. Pour resserrer les axes
autour d'une gure, sans for ement tenir ompte de l'é helle, la ommande est axis tight.
Les ommandes xlabel et ylabel permettent de légender les axes du graphe. La syntaxe est
xlabel('texte')
ylabel('texte')
Pour les textes omportant des formules mathématiques (e.g. x1 ) ou des lettres gre ques, on
utilise le odage Latex (voir, par exemple,[8, 9℄). Le ode suivant donne la gure 4.3.
>> theta=-2:.1:2; y=exp(sin(theta));
>> plot(theta,y)
>> xlabel('\theta')
>> ylabel('y=e^{sin\theta}')
62 CHAPITRE 4. GRAPHISME

2.5

1.5

0.5

−0.5

−1

−1.5
−4 −3 −2 −1 0 1 2 3 4

4.2  Graphes des fon tions y = x sin x cos x (trait plein), y = e−x (pointillé) et
2
+sin x
Fig.
y=e (*)
sin x

2.5

2
y=esinθ

1.5

0.5

0
−2 −1.5 −1 −0.5 0 0.5 1 1.5 2
θ

Fig. 4.3  Axes légendés ave des formules mathématiques.


4.2. GRAPHISME 2D 63

On peut éviter les ommandes en ligne en utilisant la barre de menu de la fenêtre de la gure.
Il sut de liquer (ave le bouton de gau he de la souris) sur la è he edit plot dans la barre
d'outils, de la fenêtre de la gure, pour se mettre en mode séle tion. Un li -souris (bouton de
droite) sur les axes permet de les séle tionner. Un autre li -souris (bouton gau he) ouvre un
menu. Il sut de hoisir properties dans e menu pour pouvoir régler les axes, légender les
axes, donner un titre à la gure, et .

4.2.2 Les ommentaires


Il est possible de donner un titre à la gure, de légender les ourbes et d'insérer des ommen-
taires dire tement dans la gure. Pour le titre, la ommande
title('Titre de la figure')
permet de donner un titre à la gure.
Lorsqu'il y a plusieurs ourbes sur la même gure, il faut une légende spé ique pour les
distinguer. La fon tion legend permet de légender haque ourbe. La syntaxe est
legend('Courbe 1','Courbe 2',...)
L'ordre des légendes est elui des tra és.
Voi i un exemple omplet de ourbes multiples légendées. Le résultat du bout de ode suivant
est la gure 4.4. Les ourbes représentent les polynmes de T heby hev
Tn (x) = cos (n arccos x) , x ∈ [−1, 1], n = 0, 1, 2, 3.

>> x=-1:.01:1;
>> y0=ones(size(x)); y1= os(a os(x));
>> y2= os(2*a os(x)); y3= os(3*a os(x));
>> plot(x,y0,':',x,y1,'-.',x,y2,'--',x,y3,'-')
>> xlabel('x')
>> ylabel('y=T_n(x)')
>> title('Polynomes de T hebyt hev')
>> legend('n=0','n=1','n=2','n=3')

Pour insérer du texte dans une gure, il y a deux ommandes text et gtext. En tapant
text( oordx, oordy,'Texte')
on insère la haîne 'Texte' dans la gure, au point d'abs isse oordx et d'ordonnée oordy. Il
faut don faire attention à la longueur du texte à insérer. La syntaxe pour gtext est
gtext('Texte')
Après le retour- harriot, une mire apparaît (ave la souris) dans la gure. Il sut alors de dépla er
la souris jusqu'à l'endroit voulu, un li -souris permet d'insérer le texte en argument.

4.2.3 Dé omposition de la fenêtre en sous-fenêtres


Il est possible de dé omposer une fenêtre en plusieurs sous-fenêtres et d'a her une gure
diérente dans ha une de es sous-fenêtres grâ e à la ommande subplot. La syntaxe est
subplot(m,n,p)
64 CHAPITRE 4. GRAPHISME

Polynomes de Tchebychev
1

n=0
0.8 n=1
n=2
n=3
0.6

0.4

0.2

y=Tn(x)
0

−0.2

−0.4

−0.6

−0.8

−1
−1 −0.8 −0.6 −0.4 −0.2 0 0.2 0.4 0.6 0.8 1
x

Fig. 4.4  Polynmes de T heby hev pour n = 0, 1, 2, 3.


m est le nombre de sous-fenêtres verti ales;
n est le nombre de sous-fenêtres horizontales;
p est la position de la sous-fenêtre de la gure à tra er.
Les sous-fenêtres sont numérotées de gau he à droite, de haut en bas. Voi i un exemple ave les
polynmes de T heby hev tra és dans des sous-fenêtres séparées. Le résultat est la gure 4.5
>> x=-1:.01:1;
>> y1= os(a os(x));
>> subplot(2,2,1) % 1ere sous-fenetre
>> plot(x,y1)
>> title('Polyn\^ome de T heby hev T_1(x)= os(a os(x))')
>> xlabel('x')
>> ylabel('y=T_1(x)')
>> subplot(2,2,2) % 2eme sous-fenetre
>> y2= os(2*a os(x));
>> plot(x,y2)
>> title('Polyn\^ome de T heby hev T_2(x)= os(2 a os(x))')
>> ylabel('y=T_2(x)')
>> xlabel('x')
>> subplot(2,2,3) % 3eme sous-fenetre
>> y3= os(3*a os(x));
>> plot(x,y3)
>> title('Polyn\^ome de T heby hev T_3(x)= os(3a os(x))')
>> xlabel('x')
>> ylabel('y=T_3(x)')
>> subplot(2,2,4) % 4eme sous-fenetre
>> y4= os(4*a os(x));
>> plot(x,y4)
>> title('Polyn\^ome de T heby hev T_4(x)= os(4a os(x))')
4.2. GRAPHISME 2D 65

>> ylabel('y=T_4(x)')
>> xlabel('x')

Polynome de Tchebychev T (x)=cos(acos(x)) Polynome de Tchebychev T (x)=cos(2acos(x))


1 2
1 1

0.5 0.5

y=T (x)

y=T2(x)
1
0 0

−0.5 −0.5

−1 −1
−1 −0.5 0 0.5 1 −1 −0.5 0 0.5 1
x x
Polynome de Tchebychev T3(x)=cos(3acos(x)) Polynome de Tchebychev T4(x)=cos(4acos(x))
1 1

0.5 0.5
y=T (x)

y=T4(x)
3

0 0

−0.5 −0.5

−1 −1
−1 −0.5 0 0.5 1 −1 −0.5 0 0.5 1
x x

Fig. 4.5  Polynmes de T heby hev pour n = 1, 2, 3, 4.

4.2.4 Sauvegarder une gure


La ommande print permet de sauvegarder une gure sous divers formats. La syntaxe est
print -f<num> -d<format> <nomfi h>

<num> est le numéro de la fenêtre graphique à sauvegarder. Par défaut (i.e. en l'absen e de
-f<num> dans la ligne de ommande) 'est la fenêtre a tive qui est sauvegardée.
<format> spé ie le format de sauvegarde. Les formats les plus utilisés sont
ps PostS ript noir et blan
ps2 PostS ript noir et blan , niveau 2
ps PostS ript ouleur
ps 2 PostS ript ouleur, niveau 2
eps PostS ript en apsulé noir et blan
eps2 PostS ript en apsulé noir et blan , niveau 2
eps PostS ript en apsulé ouleur
eps 2 PostS ript en apsulé ouleur, niveau 2
tiff TIFF
jpeg<nn> JPEG de niveau de ompression nn%, i.e. -djpeg90 donne une image JPEG
ave un niveau de ompression de 90%. Par défaut le niveau de ompression est
de 75%.
<nomfi h> le nom du  hier de sauvegarde, ave ou sans extension. L'extension par défaut est
elle spé iée dans le format.
66 CHAPITRE 4. GRAPHISME

A noter que pour les diérents formats PostS ript, l'extension est soit .ps soit .eps. Pour
générer toutes les gures de e manuel, nous avons utilisé print -deps2 ou print -deps 2.
Pour éviter les ommandes, on peut utiliser la barre de menus de la fenêtre de la gure. Il
sut de liquer sur le puis sur save ou save as pour sauvegarder la gure au format voulu.

4.3 Visualisation 3D

Pour la visualisation 3D, il onvient de distinguer les ourbes 3D (plus fa iles à tra er) des
surfa es. Et pour les surfa es, il onvient de distinguer elles dénies de manière analytique (i.e.
par une fon tion) des surfa es dénies par un ensemble de points de l'espa e.

4.3.1 Courbes 3D
La ommande plot3 permet de tra er une ourbe 3D. La syntaxe est
plot3(x,y,z)
où x, y et z peuvent être des matri es ou des ve teurs de même taille. Dans le as ou les arguments
x, y et z sont des ve teurs, la ommande génère une ligne 3D qui passe par les points (xi , yi , zi ).
Le bout de ode suivant a permis de générer la ourbe 3D de la gure 4.6.
>> t=0:pi/50:10*pi;
>> x=(1+sin(t)).* os(t);y=(1+sin(t)).*sin(t); z=t;
>> plot3(x,y,z)
>> grid on
>> xlabel('x'),ylabel('y'),zlabel('z')

35

30

25

20
z

15

10

0
2
1.5 1.5
1 1
0.5
0.5 0
0 −0.5
−1
−0.5 −1.5
y
x

Fig. 4.6  Courbe 3D dénie par ((1 + sin t) cos t, (1 + sin t) sin t, t), pour t ∈ [0, 30π].

Si les arguments x, y et z sont des matri es de même dimension, plot3 tra e une ourbe 3D
pour haque olonne des matri es. La surfa e de la gure 4.7 a été générée à l'aide du bout de
ode suivante.
4.3. VISUALISATION 3D 67

>> [x,y℄=meshgrid(-2:.1:2);
>> z=x.*exp(-x.^2-y.^2);
>> plot3(x,y,z)
Il sut alors de tra er des ourbes 3D suivant les lignes de x, y et z pour avoir la surfa e de la
gure 4.8. Pour ela, on rajoute les lignes de odes.
>> hold on
>> plot3(x',y',z')

0.5

−0.5
2

1 2
1
0
0
−1
−1
−2 −2

4.7  Commande plot3(x,y,z) ave x, y et z des matri es ave la fon tion z = xe−x .
2
−y 2
Fig.

0.5

−0.5
2

1 2
1
0
0
−1
−1
−2 −2

Fig. 4.8  Surfa e tra ée ave plot3 sur les olonnes, puis sur les lignes ave la fon tion z =
.
2
−y 2
xe−x

4.3.2 Surfa e analytique


On suppose i i que la surfa e est dénie sous la forme
z = f (x, y).
On ommen e d'abord par générer une grille ave meshgrid dont la syntaxe est
68 CHAPITRE 4. GRAPHISME

[x,y℄ = meshgrid(x_min:hx:x_max,y_min:hy:y_max)
où hx est la raison de la subdivision sur l'axe des x et hy elle sur l'axe des y . Les arguments
résultats x et y sont des matri es de même taille. Les lignes de x sont des opies du ve teur
x_min:hx:x_max et les olonnes de y sont des opies du ve teur x_min:hx:x_max. Si les subdi-
visions en x et y sont identiques, on utilise la forme abrégée
[x,y℄ = meshgrid(x_min:h:x_max)
Ensuite, il faut évaluer la fon tion f aux noeuds de la grille pour avoir la troisième matri e
z. Finalement on tra e la surfa e ave mesh(x,y,z) (surfa e l de fer) ou ave surf(x,y,z)
(surfa e à fa ettes).
Soit à tra er la surfa e dénie par
(4.1)
2
−y 2
f (x, y) = xe−x
dans [−2, 2] . Les ommandes suivantes permettent d'avoir la surfa e l de fer de la gure 4.9
2

>> [x,y℄=meshgrid(-2:.1:2);
>> z=x.*exp(-x.^2-y.^2);
>> mesh(x,y,z)

0.5

−0.5
2

1 2
1
0
0
−1
−1
−2 −2

Fig. 4.9  Tra é l de fer de la surfa e dénie par (4.1)

Pour pouvoir appré ier une surfa e, il faut pouvoir la voir sous tous les angles! Ave Matlab
ela se fait soit ave la souris soit ave la ommande view dont la syntaxe est
view(az,el)
où les arguments (en degrés) sont
az azimut, i.e. l'angle de rotation dans le plan horizontal
el élévation verti al, i.e. l'angle ave le plan horizontal
La gure 4.10 représente la surfa e dénie par (4.1) ave view(30,60).
Les valeurs par défaut sont az=-37.5 et el=30. L'angle de vue par défaut s'obtient en tapant
simplement view(3). A noter que view(2) donne l'angle de vision par défaut en 2D, à savoir
az=0 et el=90. On regarde alors la surfa e à la verti ale.
On peut aussi opter pour une visualisation plus intera tive en utilisant la barre d'outils de la
fenêtre de la gure. Il sut de liquer (bouton de gau he de la souris) sur rotate 3D pour mettre
la gure en mode rotation. Un li -souris (bouton de droite) ontinu ombiné aux mouvements
de la souris permet de tourner l'image dans l'espa e.
4.3. VISUALISATION 3D 69

0.5

0 2

1
−0.5
−2
−1.5 0
−1
−0.5
0 −1
0.5
1
1.5
2 −2

Fig. 4.10  Tra é l de fer de la surfa e dénie par (4.1), ave view(30,60)

4.3.3 Surfa e dénie par un ensemble de points


Matlab ne sait tra er que les surfa es dénies par une grille de points. Mais en pratique, les
surfa es à tra er sont souvent sous la forme d'un ensemble de points x, y, z. La visualisation de
la surfa e, ave mesh né essite, dans e as, un traitement préalable. Le but de e traitement est
de re réer une grille de points sur le plan Oxy par interpolation.
D'abord on ré upère les oordonnées min et max pour re onstruire le domaine
>> xmin=min(x); xmax=max(x);
>> ymin=min(y); ymax=max(y);
Ensuite, à l'aide de linspa e, on génère une subdivision uniforme en x et y .
>> xu=linspa e(xmin,xmax,m);
>> yu=linspa e(ymin,ymax,m);
où m est la taille du ve teur à générer. Il sut maintenant de générer la grille ave meshgrid et
de al uler (par interpolation) la valeur de la fon tion aux noeuds de la grille.
>> [X,Y℄=meshgrid(xu,yu); % génération de la grille X,Y
>> Z=griddata(x,y,z,X,Y,' ubi '); % al ul de Z par interpolation
>> mesh(X,Y,Z) % visualisation
La fon tion griddata al ule Z aux noeuds de la grille [X,Y℄ par interpolation ubique à partir de
[x,y,z℄. D'autres types d'interpolation sont disponibles. Par défaut, l'interpolation est linéaire.
Comme exemple, voi i la surfa e dénie par (4.1) tra ée à partir d'un ensemble de points
aléatoires. Le résultat, Fig. 4.11, n'est pas si mauvais.
>> x=rand(100,1)*4-2;
>> y=rand(100,1)*4-2;
>> z=x.*exp(-x.*x-y.*y);
>> xu=linspa e(min(x),max(x),50);
>> xu=linspa e(min(y),max(y),50);
>> [X,Y℄=meshgrid(xu,yu);
>> Z=griddata(x,y,z,X,Y,' ubi ');
>> C=zeros(size(Z));
70 CHAPITRE 4. GRAPHISME

>> mesh(X,Y,Z,C)
>> grid off; axis tight; hold on
>> plot3(x,y,z,'*')

0.4

0.2

−0.2

−0.4

1.5
1
0.5 1.5
1
0 0.5
−0.5 0
−1 −0.5
−1
−1.5 −1.5

Fig. 4.11  Tra é l de fer d'une surfa e obtenue par un ensemble de points. Les noeuds d'inter-
polation sont indiqués par des *

Une autre façon de tra er une surfa e dénie par un ensemble de points est de passer par une
triangulation. On utilise la fon tion Matlab delaunay qui ee tue la triangulation de Delaunay
(2D) d'un ensemble de points qu'on visualise ave la fon tion triplot.

1.5

0.5

0
y

−0.5

−1

−1.5

−2

−2 −1.5 −1 −0.5 0 0.5 1 1.5 2


x

Fig. 4.12  Nuage de points

Le nuage de points de la gure 4.12 est triangulé ave la fon tion delaunay omme suit.

>> t=delaunay(x,y);
>> triplot(t,x,y)

La triangulation obtenue est visualisée dans la gure 4.13. La fon tion triplot permet de vi-
sualiser une triangulation 2D. Après la triangulation, il sut de tra er la surfa e dénie aux
sommets de la triangulation. On obtient alors une surfa e dénie par des fa ettes.
4.3. VISUALISATION 3D 71

>> z=x.*exp(-x.^2-y.^2);
>> trisurf(t,x,y,z,'fa e olor','interp')

Le résultat est la gure 4.14. La ouleur est interpolée sur la surfa e grâ e aux deux derniers
arguments. Sinon la ouleur est onstante sur haque fa ette. On peut aussi visualiser la surfa e
d'en haut (ave view(2)) en a tivant la barre de ouleur pour repérer les pi s.

>> olormap(1-gray) % tra é en niveaux de gris inversé


>> trisurf(t,x,y,z,'fa e olor','interp')
>> view(2) % vue d'en haut
>> olorbar('South') % barre de ouleurs horizontale

Le résultat est la gure 4.15.


2

1.5

0.5

−0.5

−1

−1.5

−2
−2 −1.5 −1 −0.5 0 0.5 1 1.5 2

Fig. 4.13  Triangulation de Delaunay d'un ensemble de points

0.5

−0.5
2

1 2
1
0
0
−1
−1
−2 −2

Fig. 4.14  Tra é par fa ettes d'une surfa e dénie sur la triangulation 4.13
72 CHAPITRE 4. GRAPHISME

1.5

0.5

−0.5

−1

−1.5

−2
−2 −1.5 −1 −0.5 0 0.5 1 1.5 2

−0.4 −0.3 −0.2 −0.1 0 0.1 0.2 0.3 0.4

Fig. 4.15  Tra é par fa ettes d'une surfa e dénie sur la triangulation 4.13

4.3.4 Courbes de niveau


Parfois, il est plus utile de tra er les ourbes (ou lignes) de niveau que la surfa e elle-même.
C'est parti ulièrement le as lorsqu'on veut visualiser une distribution de pression (isobare),
de température (isotherme), de ontraintes, et . Le tra é des ourbes de niveaux se fait par la
fon tion ontour dont la syntaxe est
ontour(x,y,z [,n℄)
où x,y,z représente le maillage de la surfa e et n le nombre de ourbes de niveau à tra er. Par
défaut, i.e. en l'absen e de n, le nombre de ourbe est al ulé en fon tion des valeurs minimale
et maximale prises par la fon tion.
Pour tra er les ourbes de niveau d'une fon tion f (x, y) on pro ède de la même manière que
pour le tra é de la surfa e. Par exemple, pour tra er les ourbes de niveau de la fon tion
(4.2)
2
−y 2
f (x, y) = xye−x , (x, y) ∈ [−2, 2] × [−2, 2]
on pro ède omme suit.
>> [x,y℄=meshgrid(-2:.05:2);
>> z=x.*y.*exp(-x.^2-y.^2);
>> ontour(x,y,z,15) % on tra e 15 ourbes de niveau
On obtient alors les ourbes de niveau de la gure 4.16
Pour a her la valeur de la ourbe de niveau sur la gure, on utilise la fon tion label
( ontour label ). Pour ela il faut d'abord ré upérer la valeur des ourbes de niveau. On pro ède
omme suit (ave la fon tion (4.2) déjà tabulée)
>> [ ,h℄= ontour(x,y,z);
>> label( ,h)
On obtient les ourbes de niveau de la gure 4.17
A noter que seules les ourbes susamment longues reçoivent une valeur. Celles qui sont
trop petites sont ignorées.
La variante
4.3. VISUALISATION 3D 73

1.5

0.5

−0.5

−1

−1.5

−2
−2 −1.5 −1 −0.5 0 0.5 1 1.5 2

Fig. 4.16  Courbes de niveau de la surfa e dénie par (4.2)

1.5 −0 5
.0
5 0.0
5

0.1
.0

0.
−0

.1

05

1 0.15
−0

0
−0.1

0.15
−0.05

0.1
0.1
−0

5
−0

0.0

0.5
.1
.1

−0.05 0.05
0 0 0 0 0

5 .05 −0
0.0
0.0

−0 −0 .05
1 −0.15 .1
5

−0.5 0. 0.15
0.05

0.1

5
−0.1

−0.0
0

.1
0.
15

−0
0.1

−1

−1.5
−0.05
0.05

−2
−2 −1.5 −1 −0.5 0 0.5 1 1.5 2

Fig. 4.17  Courbes de niveau ave valeurs de la surfa e dénie par (4.2)
74 CHAPITRE 4. GRAPHISME

label( ,h,'manual')
permet d'a her la valeur de ertaines ourbes de niveau qu'on séle tionne grâ e à la souris. Par
exemple, ave la fon tion (4.2), si on exé ute
>> [ ,h℄= ontour(x,y,z,20);
>> label( ,h,'manual')
on obtient, après séle tion ave la souris, la gure 4.18.
2

2 0.0
27 26
26 27
1.5 .0 2
−0

6 0.1
13 31
1 .13 36
−0

0.5

−0.5
0.

6
13

−1 13
.13
13

2
−0
6

27
0.

26
02

.0
62

−0
72

−1.5

−2
−2 −1.5 −1 −0.5 0 0.5 1 1.5 2

Fig. 4.18  Courbes de niveau ave valeurs séle tionnées de la surfa e dénie par (4.2)

4.4 Exer i es

Exer i e 4.1 Tra er la ourbe de la fon tion f dénie par


f (x) = Kx3 , x ∈ [−10, 10]

pour n valeurs quel onques de K dans [−5, 5], n ≥ 5.

Exer i e 4.2 Pour x, y ∈ [0, 2π], représenter les ourbes suivantes


z1 (x, y) = sin(x) + cos(y),
z2 (x, y) = sin(x) cos(y),
z3 (x, y) = sin2 (x) − cos2 (y),

omme sur la gure 4.19.

Exer i e 4.3 (Courbes de niveau sur une surfa e) Les instru tions suivantes ont permis
d'avoir la surfa e de la gure 4.20, sans les ourbes de niveau en blan .
4.4. EXERCICES 75

2 1 1

0.8 0.8
1.5

0.6 0.6
1
0.4 0.4

0.5
0.2 0.2

0 0 0

−0.2 −0.2
−0.5

−0.4 −0.4
−1
−0.6 −0.6

−1.5
−0.8 −0.8

−2 −1 −1
0 2 4 6 0 2 4 6 0 2 4 6

Fig. 4.19  Traje toires z1 , z2 et z3 dans le plan

>> [X,Y℄ = meshgrid([-2:.25:2℄);


>> Z = X.*exp(-X.^2-Y.^2);
>> surf(X,Y,Z,'fa e olor','interp')
>> olormap bone
En utilisant la fon tion ontour3 ompléter la gure ave 30 ourbes de niveau en blan .

0.5

−0.5
2

1 2
1
0
0
−1
−1
−2 −2

Fig. 4.20  Lignes de niveaux sur une surfa e

Exer i e 4.4 Représenter, dans [−1, 1] × [−1, 1], la fon tion


p
sin x21 + x22
f (x) = p 2
x1 + x22
en utilisant une grille relativement grossière et sans pré aution parti ulière sur de dénominateur
de la fra tion. Que onstatez vous?
76 CHAPITRE 4. GRAPHISME
Chapitre 5

Matri es reuses et méthodes


itératives

Une matri e reuse ou peu dense (sparse en anglais) est une matri e ayant une faible densité
d'éléments non nuls. C'est le as des matri es générées par les méthodes des éléments ou des
diéren es nis pour la résolution des problèmes d'équations aux dérivées partielles. Pour es
matri es, Matlab propose de ne sto ker que les éléments non nuls et leurs indi es. D'où un
gain d'espa e mémoire et de temps de al ul en éliminant les opérations sur les éléments nuls.
Ce mode sto kage est parti ulièrement adapté aux méthodes itératives de résolution de systèmes
linéaires.

5.1 Mode de sto kage

La méthode de sto kage d'une matri e reuse utilisée par Matlab est la méthode CSR (Com-
pressed Sparse Rows ), i.e. une ompression de lignes de la matri e par élimination d'éléments
nuls. Les lignes ompressées sont ensuite mises bout à bout pour former le ve teur de sto kage.
Pour une matri e de taille m × n, on a besoin de 3 ve teurs S, is et js pour organiser le sto kage.
S Le ve teur de sto kage qui ontient les lignes ompressées de la matri e mises bout à bout. La
longueur de S est le nombre d'éléments non nuls (ou sus eptibles de l'être) de la matri e
d'origine. A noter que 'est e ve teur S qui est visible par l'utilisateur Matlab.
is Ve teur (d'entiers) de longueurs m + 1 qui ontient les indi es de début de ligne dans le
ve teur de sto kage S. Ce ve teur n'est pas visible par l'utilisateur Matlab.
js Ve teur (d'entiers) ontenant les indi es de olonnes d'éléments non nuls. Ce ve teur de la
même taille que S est aussi invisible par l'utilisateur.
Une matri e pleine A peut-être onvertie en un matri e reuse S et vi e versa grâ e aux
fon tions sparse et full
S=sparse(A) % onversion : A matri e pleine -> S matri e reuse
A=full(S) % onversion : S matri e reuse -> A matri e pleine

5.2 Création

On peut réer une matri e reuse, grâ e à la fon tion sparse, en listant les éléments non nuls
et leurs indi es

77
78 CHAPITRE 5. MATRICES CREUSES ET MÉTHODES ITÉRATIVES

S=sparse(ii,jj,s,m,n)
ave
ii,jj ve teurs de même longueur ontenant les indi es de lignes et olonnes d'éléments non
nuls;
s ve teur, de même longueur que ii et jj, ontenant les valeurs des éléments non nuls de
la matri e;
m,n nombre de lignes et de olonnes de la matri e d'origine.
Voi i un exemple simple de réation d'une matri e reuse 25 × 20.
>> ii=[2 7 10 11 12 15℄;
>> jj=[1 6 10 12 12 17℄;
>> s=rand(1,6)*10;
>> S=sparse(ii,jj,s,25,20)
S =
(2,1) 9.50129285147175
(7,6) 2.31138513574288
(10,10) 6.06842583541787
(11,12) 4.85982468709300
(12,12) 8.91298966148902
(15,17) 7.62096833027395
Un sixième argument à la fon tion sparse permet de réserver plus de pla e que d'éléments
non nuls par exemple pour des ae tations ultérieures. L'instru tion omplète de réation de
matri e reuse est don
S=sparse(ii,jj,s,m,n,nzmax)
où nzmax est le nombre maximal d'éléments non nuls. La fon tion nnz permet de onnaître
le nombre d'éléments non nuls d'une matri e reuse, qui peut être diérent de la longueur du
ve teur de sto kage.
Remarque 5.1 La fon tion sparse est aussi utilisée pour l'assemblage de matri es dans la
méthode des éléments nis.
Certaines fon tions Matlab disposent de variantes pour les matri es reuses, qu'on peut
utiliser pour la génération de matri es reuses
spdiags variante matri e reuse de la fon tion diag;
speye variante matri e reuse de la fon tion eye;
sparse(m,n) équivalent matri e reuse de la fon tion zeros(m,n);
sprand(m,n,d), sprandn(m,n,d) matri es reuses de densité d générées suivant les lois uni-
forme et normale;
sprandsym(n,d) matri e reuse aléatoire, arrée symétrique d'ordre n et de densité d.
La fon tion spfun permet d'évaluer une fon tion sur les seuls éléments non nuls d'une matri e
reuse.
>> ti , C= os(A); to
Elapsed time is 2.921456 se onds.

>> = os;
>> ti , C=spfun( ,A); to
Elapsed time is 0.063000 se onds.
5.3. OPÉRATIONS SUR LES MATRICES CREUSES 79

La ombinaison des fon tions ti (démarre l'horloge) et to (arrête l'horloge) permet d'évaluer
le temps de al ul. Le symbole  dénit une variable de type fun tion handle, f. Ÿ 6.3.
Pour une matri e reuse S, la fon tion find permet de ré upérer les indi es et les valeurs des
éléments non nuls
[ii,jj,s℄=find(S)
La fon tion spy permet de visualiser une matri e reuse. La Figure 5.1 montre la répartition
des éléments non nuls de la matri e reuse (prédénie) west0479
>> load west0479
>> spy(west0479)
>> densite=nnz(west0479)/479^2
densite =
0.0082
La faible densité de la matri e west0479 justie son sto kage en matri e reuse.

50

100

150

200

250

300

350

400

450

0 50 100 150 200 250 300 350 400 450


nz = 1887

Fig. 5.1  Visualisation de la matri e reuse west0479

Une fois réée, la matri e est statique, i.e. il n'y a pas de mise à jour de la taille même si des
éléments deviennent nuls.

5.3 Opérations sur les matri es reuses

En prin ipe pour les opérations binaires, si les deux opérandes sont des matri es reuses
ou pleines, le résultat est une matri e reuse ou pleine. Dans le as où l'un des opérandes est
une matri e reuse et l'autre une matri e pleine, le résultat est une matri e dense à moins que
l'opérateur préserve la densité. Soit F une matri e pleine et S une matri e reuse, alors
80 CHAPITRE 5. MATRICES CREUSES ET MÉTHODES ITÉRATIVES

S+F matri e pleine;


S*F matri e pleine;
F\S matri e pleine;
S.*F matri e reuse;
[S F℄ matri e reuse.

5.4 Fa torisation et méthodes dire tes

Une matri e reuse peut être fa torisée moyennant un remplissage (ll-in en Anglais). Nous
n'étudions dans ette se tion que les fa torisations LU et de Cholesky.

5.4.1 Fa torisation LU
Si S est une matri e reuse, sa fa torisation LU est obtenue à l'aide de la fon tion lu (Ÿ3.4)
[L,U℄=lu(S)
ou, dans le as où on veut isoler les permutations
[L,U,P℄=lu(S)
Les fa teurs L et U sont les mêmes que si S était une matri e pleine, sauf qu'i i e sont des
matri es reuses. Un deuxième argument permet de mieux ontrler le pivotage
[L,U℄=lu(S,ptol)
où 0 ≤ ptol ≤ 1. La re her he du pivot ne s'ee tue que si l'élément diagonal est (en valeur
absolue) ptol fois plus petit que les éléments de la sous- olonne, i.e.
|Sii | < ptol|Sij |, i = j + 1, . . . , n.

La valeur par défaut de ptol est 1.


Voi i, omme exemple la fa torisation de la matri e reuse west0479 de Matlab. On re-
marque la variation du nombre d'éléments non nuls en fon tion du fa teur de ontrle de pivo-
tage.
>> load west0479
>> dwest0479=nnz(west0479)/479^2 % densite de west0479
dwest0479 =
0.0082

>> [L,U℄=lu(west0479); % fa torisation LU


>> dL=nnz(L)/479^2 % densité de la matri e L
dL =
0.0495

>> dU=nnz(U)/479^2 % densité de la matri e U


dU =
0.0287

>> [L,U℄=lu(west0479,.45); % fa torisation LU ave ontrle pivotage


5.4. FACTORISATION ET MÉTHODES DIRECTES 81

>> dL=nnz(L)/479^2 % densité de la matri e L


dL =
0.0469

>> dU=nnz(U)/479^2 % densité de la matri e U


dU =
0.0323
La fa torisation induisant un remplissage (i.e. des éléments nuls devenant non nuls), les matri es
L et U omportent don beau oup plus d'éléments non nuls que la matri e d'origine west0479
omme le montre la gure 5.2. La densité des matri es L et U donne une idée du oût de la
fa torisation.
0

50

100

150

200

250

300

350

400

450

0 50 100 150 200 250 300 350 400 450


nz = 6577

Fig. 5.2  Visualisation des matri es L et U de la fa torisation LU de west0479

La résolution du système, ave la matri e reuse fa torisée, est semblable à elle d'un système
à matri e dense, i.e.
x=U\(L\b);

5.4.2 Fa torisation de Cholesky


Si une matri e reuse A est symétrique, dénie positive, on peut la mettre sous forme RRT
(R'*R pour Matlab) grâ e à la fa torisation de Cholesky ( f. Ÿ3.4)
R= hol(A)
Le fa teur R est une matri e reuse. La résolution du système Ax = b est semblable à elle d'un
système à matri e dense, i.e.
x=R\(R'\b)
82 CHAPITRE 5. MATRICES CREUSES ET MÉTHODES ITÉRATIVES

La matri e du Lapla ien est un exemple de matri e ( reuse) dénie positive. La fon tion
Matlab delsq onstruit la matri e ( reuse) du Lapla ien 2D par diéren es nies à 5 points,
voir par exemple [10, 12℄. La fon tion numgrid génère une grille de points dans un domaine
bidimensionnel (voir l'aide en ligne pour le type de domaines). Dans l'exemple suivant, on génère
la matri e reuse du Lapla ien puis on la fa torise. On remarque la diéren e ( onsidérable) de
densité entre la matri e d'origine A et son fa teur R. Le remplissage, dû à la fa torisation, est
dans e as très important.

>> A=delsq(numgrid('S',100));
>> size(A)
ans =
9604 9604

>> R= hol(A);
>> dA=nnz(A)/9604^2 % densité A
dA =
5.1637e-04

>> dR=nnz(R)/9604^2 % densité du fa teur R


dR =
0.0102

5.5 Permutation des lignes et des olonnes

En permutant les lignes et/ou les olonnes d'une matri e, on peut obtenir des fa teurs LU
ou de Cholesky moins denses qu'ave la matri e d'origine. Dans le as d'une matri e issue de la
méthode des éléments nis (ou de diéren es nies), ela revient à renuméroter les sommets du
maillage (ou de la grille).
Plusieurs fon tions permettent d'ee tuer la permutation des lignes et/ou des olonnes d'une
matri e ( olperm, olamd, olmmd, symr m, symamd). Mais nous n'étudions dans ette se tion
que deux méthodes, largement utilisées dans les ours d'éléments nis : la méthode inverse de
Cuthill-M Kee et la méthode du degré minimum.
La méthode de Cuthill-M kee (voir, par exemple, [10, 14℄) produit une matri e dont les
éléments non nuls sont on entrés près de la diagonale en réduisant la largeur de bande. La
matri e résultat est don pro he d'une matri e bande. En théorie des graphes, le degré d'un
sommet est le nombre de ses voisins. Pour la matri e d'adja en e, ela orrespond aux nombres
d'éléments (hors diagonaux) non nuls. La méthode du degré minimum a pour but de réduire
(lo alement) le remplissage (voir, par exemple, [1, 14℄). Ce qui a pour onséquen e des fa teurs
de Cholesky moins denses que eux obtenus sans permutation.
Les fon tions Matlab orrespondantes sont
• p=symr m(A) permutation ave la méthode de Cuthill-M Kee pour matri es symétriques ou
non;
• p=symamd(A) permutation ave la méthode du dégré minimum pour les matri es symétriques
dénies positives.
Une fois le ve teur de permutation obtenue, il sut de rempla er, dans les opérations impliquant
la matri e, A par A(p,p). L'exemple suivant reprend la matri e west0479 de matlab.
5.5. PERMUTATION DES LIGNES ET DES COLONNES 83

>> load west0479


>> p1=symr m(west0479); % permutation des lignes & olonnes (symr m)
>> [L1,U1℄=lu(west0479(p1,p1)); % fa torisation LU
>> dL1=nnz(L1)/479^2 % densité L
dL1 =
0.0254

>> dU1=nnz(U1)/479^2 % densité U


dU1 =
0.0348

>> p2=symamd(west0479); % permutation des lignes & olonnes (symamd)


>> [L2,U2℄=lu(west0479(p2,p2)); % LU ave symamd
>> dL2=nnz(L2)/479^2 % densité L
dL2 =
0.0226

>> dU2=nnz(U2)/479^2 % densité U


dU2 =
0.0281

On remarque les fa teurs LU obtenus sans permutation omporte près de 24% d'éléments non
nuls en plus. Les Figures 5.3-5.4 montrent la repartition des éléments après permutation.
Pour la résolution, il faut tenir ompte des permutations, i.e. permuter le se ond membre et
les omposantes du ve teur solution.
>> load west0479;
>> p=symr m(west0479); % permutation
>> [L,U℄=lu(west0479(p,p)); % fa torisation
>> b=ones(479,1); % se ond membre
>> x(p)=U\(L\b(p)); % résolution
>> size(x)
ans =
1 479

>> norm(west0479*x'-b) % verifi ation


ans =
1.8061e-10
On remarque que le ve teur solution est maintenant un ve teur ligne. Pour éviter e désagrément
(qui peut provoquer des erreurs fatales à l'exé ution) il faut initialiser le ve teur solution avant
de le permuter. Il sut don de rempla er la ligne de résolution i-dessus par
>> x=zeros(479,1); x(p)=U\(L\b(p)); % résolution
>> size(x)
ans =
479 1
La matri e du Lapla ien (ave ondition aux bords de Diri hlet) est symétrique dénie posi-
tive. On peut don la permuter ave la fon tion symamd
84 CHAPITRE 5. MATRICES CREUSES ET MÉTHODES ITÉRATIVES

50

100

150

200

250

300

350

400

450

0 50 100 150 200 250 300 350 400 450


nz = 1887

Fig. 5.3  Visualisation de la matri e west0479 permutée ave symr m

50

100

150

200

250

300

350

400

450

0 50 100 150 200 250 300 350 400 450


nz = 1887

Fig. 5.4  Visualisation de la matri e west0479 permutée ave symamd


5.5. PERMUTATION DES LIGNES ET DES COLONNES 85

>> A=delsq(numgrid('S',100));
>> size(A)
ans =
9604 9604

>> R= hol(A); % fa torisation sans permutation


>> dR=nnz(R)/9604^2 % densite du fa teur R
dR =
0.0102

>> p=symamd(A); % permutation ave symamd


>> R= hol(A(p,p)); % fa torisation ave permutation
>> dR=nnz(R)/9604^2 % densite du fa teur R
dR =
0.0020

On gagne environ 20% en densité. Les Figures 5.5-5.6 montrent la répartition des éléments dans
les matri es initiale et permutée. Pour la résolution, on pro ède omme pour la matri e west0479

>> b=ones(9604,1);
>> x=zeros(9604,1); x(p)=R\(R'\b(p));
>> norm(A*x-b)
ans =
3.0860e-11

1000

2000

3000

4000

5000

6000

7000

8000

9000

0 1000 2000 3000 4000 5000 6000 7000 8000 9000


nz = 47628

Fig. 5.5  Visualisation de la matri e du Lapla ien générée par delsq(numgrid('S',100))


86 CHAPITRE 5. MATRICES CREUSES ET MÉTHODES ITÉRATIVES

1000

2000

3000

4000

5000

6000

7000

8000

9000

0 1000 2000 3000 4000 5000 6000 7000 8000 9000


nz = 47628

Fig.5.6  Visualisation de la matri e du Lapla ien, générée par delsq(numgrid('S',100)),


permutée ave symamd

5.6 Fa torisation in omplète et pré onditionnement

Le onditionnement d'une matri e arrée inversible A est le nombre


σ(A) =k A kk A−1 k

où k · k est une norme matri ielle. On dit que A est bien onditionnée si σ(A) est pro he de 1.
Le pré onditionnement d'un système linéaire
Ax = b (5.1)
onsiste à le rempla er par le système
M −1 Ax = M −1 b, (5.2)
où M est hoisie de telle sorte que σ(M −1 A) << σ(A). On déduit immédiatement que M −1 doit
être une approximation (peu oûteuse) de A−1 , si on veut un meilleur onditionnement de (5.2).
Pour un x donné, le reste ou résidu r du système (5.1) est
r = Ax − b

tandis que elui du système pré onditionné (5.2) est donné par
z = M −1 r. (5.3)
Comme M −1 est trop oûteux à al uler, on rempla e (5.3) par le système
Mz = r (5.4)
5.6. FACTORISATION INCOMPLÈTE ET PRÉCONDITIONNEMENT 87

C'est un système du type (5.4) qui est résolu dans les méthodes itératives pré onditionnées pour
al uler le reste. Comme signalé plus haut, la matri e M doit être une approximation de A
pour que le système (5.2) soit bien onditionné. D'où l'idée de al uler une approximation de la
fa torisation de A: 'est la fa torisation in omplète.
Les fon tions Matlab luin et holin fournissent une fa torisation (LU ou de Choleski)
in omplète. Pour holin , la matri e à fa toriser doit être évidemment symétrique dénie posi-
tive.

5.6.1 Fa torisation LU in omplète


Pour la fa torisation LU in omplète, la fon tion est luin dont la syntaxe est
[L,U℄=luin (A,eps)
où eps≥ 0 est le fa teur de remplissage, i.e. un élément aij n'est onservé, lors de la fa torisation,
que si
n
!1/2
X
|aij | > eps a2ij .
i=1

La fa torisation s'ee tue olonne après olonne pour limiter l'o upation mémoire. Évidemment
ave eps=0, on obtient la fa torisation exa te de A. La variante
[L,U℄=luin (A,'0')
ee tue une fa torisation LU sans remplissage, i.e. les éléments nuls dans A restent nuls dans L
et U .

>> load west0479; % matri e west0479


>> A=10^3*speye(479)+west0479; % renfor ement de la diagonale
>> [L,U℄=lu(A); % fa torisation LU exa te de A
>> dL=nnz(L)/479^2 % densité du fa teur exa t L
dL =
0.0623

>> dU=nnz(U)/479^2 % densité du fa teur exa t U


dU =
0.0694

>> [L1,U1℄=luin (A,.001); % fa torisation in omplète


>> dL1=nnz(L1)/479^2 % densité du fa teur L in omplet
dL1 =
0.0035

>> dU1=nnz(U1)/479^2 % densité du fa teur U in omplet


dU1 =
0.0031

5.6.2 Fa torisation de Cholesky in omplète


Pour la fa torisation de Cholesky in omplète, la fon tion est holin dont la syntaxe est
88 CHAPITRE 5. MATRICES CREUSES ET MÉTHODES ITÉRATIVES

R= hloin (A,eps)
où eps est le fa teur de remplissage omme pour luin . La variante
R= hloin (A,'0')
ee tue la fa torisation sans remplissage.
>> A=delsq(numgrid('S',100));
>> size(A)
ans =
9604 9604

>> R= hol(A); % fa torisation de Cholesky exa te


>> dR=nnz(R)/9604^2 % densité du fa teur exa t R
dR =
0.0102

>> R1= holin (A,.001); % fa torisation de Cholesky in omplète


>> dR1=nnz(R1)/9604^2 % densité du fa teur in omplet
dR1 =
0.0016

>> R0= holin (A,'0'); % fa torisation de Cholesky sans remplissage


>> dR0=nnz(R0)/9604^2 % densité du fa teur in omplet sans remplissage
dR0 =
3.1024e-04

5.7 Méthodes itératives

Plusieurs méthodes itératives de résolution de systèmes linéaires sont implémentées dans


Matlab . Quelques unes sont présentées dans le tableau 5.1.

Fon tion Méthode


bi g Bi-Conjugate Gradient method, pour matri es quel onques
bi gstab Bi-Conjugate Gradient STABilized method, pour matri es quel onques
gs Conjugate Gradient Squared method, pour matri es quel onques
gmres Generalized Minimum RESidual method, pour matri es quel onques
minres MINimum RESidual method, pour matri es symétriques
p g Pre onditioned Conjugate Gradient method,
pour matri es symétriques dénies positives

Tab. 5.1  Fon tions de résolution de systèmes linéaires par des méthodes itératives

Nous avons hoisi de ne présenter que deux méthodes itératives: la méthode du gradient
onjugué pré onditionné (p g) et la méthode du résidu minimum généralisé (gmres).
5.7. MÉTHODES ITÉRATIVES 89

5.7.1 Méthode du gradient onjugué pré onditionné


Lorsque A est symétrique dénie positive, la résolution de (5.1) est équivalente à la minimi-
sation (dans Rn ) de la fon tion quadratique onvexe
1 T
q(x) = x Ax − bT x.
2
En eet, le gradient de la fon tion q est ∇q(x) = Ax− b, et un point x qui minimise q est solution
de (5.1) et inversement. En théorie, la méthode du gradient onjugué onverge en, au plus, n
itérations. Mais en pratique, le système peut être très mal onditionné ou n très grand. Dans la
méthode du gradient onjugué pré onditionné, on rempla e (5.1) par le système
M −1/2 AM −1/2 y = M −1/2 b

ave y = M 1/2 x. En pratique, la méthode est implémentée sans al uler expli itement M 1/2 ou
M −1/2 , voir [11, 7, 14℄ pour les détails de l'algorithme.
Une syntaxe pour utiliser la fon tion p g est
[x,flag,res,iter℄=p g(A,b,tol,MaxIt,M1,M2,x0)
ave , en entrée
A matri e du système, symétrique dénie positive
b se ond membre du système
tol pré ision de la solution, la pré ision par défaut est 10−6
MaxIt nombre maximal d'itérations
M1,M2 fa teurs du pré onditionneur M=M1*M2
x0 x0 (optionnel)
et, en sortie
x solution du système
flag indi ateur de onvergen e flag=0 onvergen e; flag=1 nombre maximal d'itérations
atteint (voir l'aide en ligne pour les autres valeurs de flag)
res résidu relatif, k b − Ax kk b k−1
iter nombre d'itérations.
Pour les autres formes d'appel de la fon tion p g, voir l'aide en ligne.
Comme exemple, on utilise delsq(numgrid('S',50)) la matri e du Lapla ien ave ondi-
tion aux bords de Diri hlet. C'est une matri e d'ordre 2304 symétrique dénie positive. Comme
se ond membre on prend ones(2304,1). Le nombre maximal d'itérations, xé à 50, est atteint
sans onvergen e lorsqu'on utilise p g sans pré onditionnement. Ave une matri e de pré ondi-
tionnment obtenue ave holin , la onvergen e est atteinte en seulement 8 itérations.
>> A=delsq(numgrid('S',50));
>> n=size(A,1)
n = 2304

>> b=ones(n,1);
>> [x,flag,res,iter℄=p g(A,b,10^-6,50,[℄,[℄); % p g sans pre onditionnement
>> flag
flag = 1 % pas de onvergen e
90 CHAPITRE 5. MATRICES CREUSES ET MÉTHODES ITÉRATIVES

>> iter
iter = 50 % max d'itérations atteint

>> R= holin (A,0.001); % fa torisation in omplète


>> [x,flag,res,iter℄=p g(A,b,10^-6,50,R',R); % p g ave pré onditionnement
>> flag
flag = 0 % onvergen e

>> iter
iter = 8 % en 8 itérations

Dans le as où des permutations ont été ee tuées sur les lignes et les olonnes de la matri e
A, il faut en tenir ompte.
>> A=delsq(numgrid('S',50));
>> n=size(A,1); b=ones(n,1);
>> p=symamd(A); % permutation des lignes et olonnes
>> R= holin (A(p,p),0.001); % fa torisation in omplète
>> x=zeros(n,1); % initialisation du ve teur solution
>> [x(p),flag,res,iter℄=p g(A(p,p),b(p),10^-6,50,R',R);
>> flag % onvergen e
flag =

>> iter % en 6 itérations


iter =
6

La méthode onverge maintenant en 6 itérations seulement!

5.7.2 Méthode GMRES


Soit x0 un ve teur de Rn . Le résidu initial du système (5.1) en x0 est r0 = b − Ax0 . Dans la
méthode GMRES, à l'itération k, on détermine xk qui minimise la norme eu lidienne du résidu
rk , 'est-à-dire
k b − Axk k2 = min k b − Av k2 , (5.5)
v∈Wk

où le sous-espa e Wk est donné par


Wk = x0 + vect{r0 , Ar0 , . . . , Ak−1 r0 } .


Le sous-espa e ve toriel
vect{r0 , Ar0 , . . . , Ak−1 r0 }
est appelé sous-espa e de Krylov d'ordre k. Le problème (5.5) est un problème de moindres arrés
qui né essite la onstru tion et le sto kage d'une base orthogonale de vect{r0 , Ar0 , . . . , Ak−1 r0 }.
Le oût des itérations et la taille mémoire utilisée augmente don au l des itérations. En pratique,
on se xe une dimension maximale m (10 ≤ m ≤ 100) pour le sous-espa e de Krylov. Si la
5.7. MÉTHODES ITÉRATIVES 91

onvergen e n'est pas atteinte au bout de m itérations, on réinitialise l'algorithme en posant


r0 = rm . Le pré onditionnement onsiste à rempla er l'espa e de Krylov par

vect r0 , (M −1 A)r0 , . . . , (M −1 A)k−1 r0 .




Nous renvoyons à [7, 14, 18℄ pour les démonstrations et les détails de l'algorithme GMRES.
Une syntaxe pour utiliser la fon tion gmres est
[x,flag,res,iter℄=gmres(A,b,restart,tol,MaxIt,M1,M2,x0)
ave , en entrée
A matri e du système;
b se ond membre du système;
restart dimension maximale du sous-espa e de Krylov à onstruire
tol pré ision de la solution, la pré ision par défaut est 10−6 ;
MaxIt nombre maximal d'itérations;
M1,M2 fa teurs du pré onditionneur M=M1*M2;
x0 x0 , par défaut x0 = 0.
Les arguments résultats ont la même signi ation que dans la méthode du gradient onjugué
sauf
iter 0 ≤ iter(1) ≤ MaxIt, 0 ≤ iter(2) ≤ restart.
Comme exemple, on résout le système (5.1) ave la matri e west0479. On remarque que sans
pré onditionnement, la méthode GMRES ne onverge pas (flag=3 stagnation) au bout de 50
itérations. Ave une matri e de pré onditionnement obtenue ave luin , la méthode GMRES
onverge en 5 itérations.

>> load west0479; % hargement de la matri e


>> n=size(west0479,1); % dimension
>> b=ones(n,1); % se ond membre
>> [x,flag,res,iter℄=gmres(west0479,b,10,10^-6,50,[℄,[℄);
>> flag
flag =
3

>> [Li,Ui℄=luin (west0479,10^-6); % pré onditionneurs


>> [x,flag,res,iter℄=gmres(west0479,b,10,10^-6,50,Li,Ui);
>> flag % onvergen e
flag =
0

>> res
res =
4.7099e-09

>> iter
iter =
1 5
92 CHAPITRE 5. MATRICES CREUSES ET MÉTHODES ITÉRATIVES

Si des permutations on été ee tuées sur la matri e, on en tient ompte. Ave la matri e et le
se ond membre du système i-dessus, le ode devient.

>> p=symr m(west0479); % permutation de lignes et olonnes


>> [Li,Ui℄=luin (west0479(p,p),10^-6); % fa torisation in omplète
>> x=zeros(n,1); % initialisation du ve teur solution
>> [x(p),flag,res,iter℄=gmres(west0479(p,p),b(p),10,10^-6,50,Li,Ui);
>> flag % onvergen e
flag =
0

>> iter
iter =

1 6

>> res
res =

8.7373e-07

>>

5.8 Exer i es

Exer i e 5.1 Générer la version reuse de la matri e tridiagonale R de l'exer i e 3.1.

Exer i e 5.2 Soit A une matri e arrée ( reuse) d'ordre n et s une ve teur d'indi es. Comment
transformer les lignes s de A en lignes de la matri e identité d'ordre n.

Exer i e 5.3 Soit A une matri e arrée ( reuse) d'ordre n et s un ve teur d'indi es de taille
ns . On souhaite modier les éléments diagonaux A(s(i), s(i)), i = 1, . . . , ns , en les remplaçant
par une onstante K . E rire les instru tions Matlab qui réalise ette transformation.

Exer i e 5.4 La fon tion Matlab olperm retourne un ve teur de permutation qui lasse les
olonnes d'une matri e reuse dans un ordre non dé roissant d'éléments non nuls.
Considérons la matri e S = W T W où W est la matri e west0479 vue au Ÿ 5.2. Comme W est
non singulière, la matri e S est symétrique dénie positive. Cal uler la fa torisation de Cholesky
de la matri e S dans les as suivants:
 sans permutation de lignes et de olonnes;
 permutation de lignes et olonnes ave symr m;
 permutation de olonnes ave olperm;
 permutation de lignes et olonnes ave symamd.
Cal uler le temps de CPU (ave ti et to ) de la fa torisation ainsi que le nombre d'éléments
non nuls du fa teur de Cholesky dans haque as.
5.8. EXERCICES 93

Exer i e 5.5 Considérons la matri e tridiagonale par blo s


 
4 −1 0 −1 0 0 0 0 0

 −1 4 −1 0 −1 0 0 0 0 


 0 −1 4 0 0 −1 0 0 0 


 −1 0 0 4 −1 0 −1 0 0 

 0 −1 0 −1 4 −1 0 −1 0 
A= 

 0 0 −1 0 −1 4 0 0 −1 


 · · · · · · · · · 


 0 0 0 −1 0 0 4 −1 0 

 0 0 0 0 −1 0 −1 4 −1 
0 0 0 0 0 −1 0 −1 4

La matri e A est de la forme


 
T −I3
 −I3 T −I3 
.. .. ..
 
A= . . .
 

 
 −I3 T −I3 
−I3 T

où I3 est la matri e identité d'ordre 3 et T la matri e tridiagonale


 
4 −1 0
T =  −1 4 −1  .
0 −1 4

Dans le système d'indexation Matlab, les diagonales non nulles de A ont pour indi es −3, −1,
0, 1 et 3. On souhaite réer la matri e A à l'aide de la fon tion spdiags en utilisant la forme
A=spdiags(B,d,n,n)
où B est la matri e ontenant les olonnes à pla er suivant les diagonales spé iées par le ve teur
d. Si une olonne de B est plus longue que la diagonale qu'elle représente, les éléments d'une
sur-diagonale orrespondent à la partie inférieure de la olonne de B, tandis que les éléments de
la sous-diagonale orrespondent à la partie supérieure de la olonne de B. En d'autres termes, le
remplissage des sous-diagonales se fait dans le sens dire t, i.e. en ommençant par le début de la
olonne de B, tandis que le remplissage des sur-diagonale se fait dans le sens inverse. Il faut don
ompléter judi ieusement les olonnes représentant les sur- ou sous-diagonales par des zéros.
1. Créer une matri e B , de taille n × 5, qui ontient les diagonales non nulles de A.
2. Générer la matri e A ave la fon tion spdiags pour une taille n quel onque (n multiple de
3).
3. En onsidérons le se ond membre b=ones(n,1), résoudre le système Ax = b en utilisant la
méthode du gradient onjugué pré onditionné p g.
94 CHAPITRE 5. MATRICES CREUSES ET MÉTHODES ITÉRATIVES
Chapitre 6

Programmation ave Matlab

Matlab est aussi un véritable langage de programmation dans lequel on retrouve la plupart
des on epts de programmation (fon tions, stru tures de ontrle, entrée/sortie, ...). Un  hier
de programme Matlab doit obligatoirement avoir l'extension .m (d'où le nom de mles donné
aux  hiers Matlab dans la littérature Matlab). Il y a deux types de  hiers .m: les s ripts et
les fon tions.

6.1 Types de données et variables

Comme signalé au hapitre 2, toute variable (s alaire, ve teur ou matri e) de Matlab est
un tableau d'éléments. Il n'y a pas de dé larations de variables. Les variables sont dé larées au
fur et à mesure de leur apparition. Le type et la dimension d'une variable sont déterminés auto-
matiquement en fon tion de la valeur ae tée à la variable. On distingue quatre types s alaires:
réel, omplexe, haîne et logique. √
Le type omplexe s'obtient en utilisant l'unité imaginaire i ou j (i.e. −1).
>> z1=2+3i
z1 =
2.0000 + 3.0000i
>> z2=1+pi*j
z2 =
1.0000 + 3.1416i
On peut aussi é rire un nombre omplexe sous sa forme polaire (ie. eiθ )
>> z=exp(i*pi/6)
z =
0.8660 + 0.5000i
Les fon tions suivantes sont asso iées au type omplexe:
imag(z) partie imaginaire de z;
real(z) partie réelle de z;
abs(z) module de z;
angle(z) argument de z.

95
96 CHAPITRE 6. PROGRAMMATION AVEC MATLAB

Le type haîne est en réalité un tableau de ara tères. Une donnée de type haîne est une
suite de ara tères en adrés par des apostrophes ('). Si la haîne ontient une apostrophe, elle- i
doit être doublée.
>> h='Hello'
h =
Hello

>> s='Ajourd''hui'
s =
Ajourd'hui
Le type logique ne omprend que deux valeurs: 1 (vrai) et 0 (faux).
>> L=pi>2
L =
1
>> isreal(exp(i*pi/2))
ans =
0
Comme il n'y a pas de dé larations de variables, les fon tions logiques is har, islogi al et
isreal permettent de onnaître le type d'une variable.

6.2 S ripts

Un s ript est un  hier d'instru tions Matlab qui ne omporte pas d'arguments (données
ou résultats). En général, un s ript s'utilise omme un programme prin ipal. Si le s ript est é rit
dans le  hier mons ript.m, pour l'exé uter il sut de taper mons ript (sans extension !) dans
la fenêtre de ommandes Matlab. Par exemple, pour tra er la surfa e dénie par un ensemble
de points 4.11, on peut utiliser le s ript de ontenu
x=rand(100,1)*4-2;
y=rand(100,1)*4-2; z=x.*exp(-x.*x-y.*y);
xu=linspa e(min(x),max(x),50);
xu=linspa e(min(y),max(y),50);
[X,Y℄=meshgrid(xu,yu);
Z=griddata(x,y,z,X,Y,' ubi ');
mesh(X,Y,Z)
grid off, axis tight
hold on
plot3(x,y,z,'.')
L'avantage i i est qu'en as de hangement de données ou de surfa e, il sut de modier les
lignes orrespondantes. Attention, un s ript utilise ou rée des variables dans l'espa e de travail.

6.3 Fon tions

Les  hiers de fon tions permettent de réer des fon tions que ne possèdent pas Matlab. Ces
fon tions réées par l'utilisateur auront le même statut que les fon tions internes de Matlab.
La première ligne d'un  hier ontenant une fon tion Matlab doit ommen er par le mot- lé
fun tion. Voi i omment dénir une fon tion mafon t ontenue dans le  hier mafon t.m
6.3. FONCTIONS 97

fun tion [var_1,var_2,...,var_n℄=mafon t(arg_1,arg_2,...,arg_m)


%MAFONCT informations essentielles
% ommentaires pour l'aide en ligne
%
...
instru tions
...

• var_1,var_2,...,var_n sont les arguments résultats, i.e. les variables de sortie;
• arg_1,arg_2,...,arg_m sont les arguments donnés, i.e. les variables d'entrée.
Les lignes de ommentaires juste après le mot- lé fun tion sont a hées lors de la demande
d'aide en ligne ave help. La première ligne de ommentaires est elle qui est s rutée par la
ommande lookfor. Elle doit don ontenir les informations essentielles sur la fon tion. Il est
impératif de ne pas laisser de ligne vide entre le mot- lé fun tion et la première ligne de om-
mentaire.
Il n'y a pas de mot- lé signalant la n de la fon tion. C'est don la n du  hier qui indique
la n de la fon tion. Toutefois, la ommande return permet un retour prématuré au programme
appelant.
Il est impératif que la fon tion et le  hier qui le ontient aient le même nom sinon la
fon tion ne sera pas visible par Matlab. S'il n'y a qu'un seul argument résultat, les ro hets
sont inutiles. S'il n'y a pas d'arguments résultats ( 'est par exemple le as d'une fon tion qui ne
fait qu'imprimer ou sauvegarder des données), on utilise les ro hets vide
fun tion [℄=imprimer(x)
ou on ne met rien dans la partie résultats
fun tion imprimer(x)
La proje tion orthogonale v′ d'un ve teur v sur un ve teur non nul u est donnée par
uT v
v′ = u. (6.1)
k u k2
Voi i la fon tion proj0 qui al ule la proje tion d'un ve teur v sur un ve teur non nul u
fun tion p=proj0(u,v)
% PROJ0 Proje tion orthogonale sur un ve teur non nul
% p=proj0(u,v) proje tion orthogonale de v sur u
% u,v - ve teurs olonne de même taille

p=(u'*v)*u/(u'*u);
Pour l'utiliser, il sut de taper
>> u=rand(3,1)
u =
0.9501
0.2311
0.6068
98 CHAPITRE 6. PROGRAMMATION AVEC MATLAB

>> v=ones(3,1)
v =
1
1
1

>> p=proj0(u,v)
p =
1.2828
0.3121
0.8193

Pour l'aide en ligne sur la fon tion proj0


>> help proj0
PROJ0 Proje tion orthogonale sur un ve teur non nul
p=proj0(u,v) proje tion orthogonale de v sur u
u,v - ve teurs olonne de même taille

Si on re her he une fon tion Matlab qui réalise la proje tion orthogonale
PROJ0 Proje tion orthogonale sur un ve teur non nul
CAMPROJ Camera proje tion.
FAN2PARA Convert fan-beam proje tions to parallel-beam.
PARA2FAN Convert parallel-beam proje tions to fan-beam.
ipexre onstru t.m: %% Re onstru ting an Image from Proje tion Data
fanUtils Utility fun tions for fanbeam proje tions.
Les variables d'une fon tions sont lo ales à la fon tion. Un hangement de valeur d'un ar-
gument d'entrée, dans la fon tion, n'est don pas réper uté dans l'espa e de travail Matlab.
Toutefois, il est possible de dénir des variables globales ave la ommande global.
Il existe deux variables prédénies nargin et nargout qui donnent respe tivement le nombre
d'arguments d'entrée et de sortie. En onsultant le ontenu de es variables, on peut faire varier
le nombre d'arguments d'entrée ou de sortie d'une fon tion. Dans le as de la fon tion proj0, on
peut la modier pour qu'elle retourne
• le ve teur projeté sur u, s'il n'y a qu'un seul argument de sortie;
• le ve teur projeté sur u⊥ , s'il y a deux arguments de sortie.
La fon tion devient don .
fun tion [p,pp℄=proj(u,v)
% PROJ Proje tion orthogonale sur un ve teur non nul
% [p,pp℄=proj(u,v) proje tion orthogonale de v
% p=proj(u,v)
% [p,pp℄=proj(u,v)
% u,v - ve teurs olonne de même taille

p=(u'*v)*u/(u'*u);
if ( nargout==2)
pp=v-p;
end
6.3. FONCTIONS 99

On peut maintenant appeler ette nouvelle fon tion ave 1 ou 2 arguments de sortie.
>> u=rand(3,1)*5, v=ones(3,1)
u =
4.7506
1.1557
3.0342

v =
1
1
1

>> p=proj(u,v)
p =
1.2828
0.3121
0.8193

>> [p,pp℄=proj(u,v)
p =
1.2828
0.3121
0.8193

pp =
-0.2828
0.6879
0.1807

>> p'*pp % p orthogonal à pp


ans =
1.6653e-16

Remarque 6.1 Les arguments dont la valeur est modiée dans une fon tion sont passées par
valeur. Les autres sont passés par référen e pour é onomiser la mémoire.

Il est possible, dans Matlab de dénir une variable qui ontient les informations relatives à
une fon tion (fun tion handle en langage Matlab). Cette variable peut ensuite être passée, en
argument, à une autre fon tion omme une variable ordinaire. Pour onstruire une telle variable,
il sut de pla er le symbole  devant le nom de la fon tion (sans espa e).
La fon tion Matlab quad al ule la valeur appro hée de l'intégrale d'une fon tion, en utilisant
la formule de Simpson de manière adaptative. Elle admet don omme argument la fon tion
intégrande.
>> help quad
QUAD Numeri ally evaluate integral, adaptive Simpson quadrature.
Q = QUAD(FUN,A,B) tries to approximate the integral of s alar-valued
fun tion FUN from A to B to within an error of 1.e-6 using re ursive
adaptive Simpson quadrature. FUN is a fun tion handle. The fun tion
100 CHAPITRE 6. PROGRAMMATION AVEC MATLAB

Y=FUN(X) should a ept a ve tor argument X and return a ve tor result


Y, the integrand evaluated at ea h element of X.

Q = QUAD(FUN,A,B,TOL) uses an absolute error toleran e of TOL


instead of the default, whi h is 1.e-6. Larger values of TOL
result in fewer fun tion evaluations and faster omputation,
but less a urate results. The QUAD fun tion in MATLAB 5.3 used
a less reliable algorithm and a default toleran e of 1.e-3.

Q = QUAD(FUN,A,B,TOL,TRACE) with non-zero TRACE shows the values


of [f nt a b-a Q℄ during the re ursion. Use [℄ as a pla eholder to
obtain the default value of TOL.

[Q,FCNT℄ = QUAD(...) returns the number of fun tion evaluations.

Use array operators .*, ./ and .^ in the definition of FUN


so that it an be evaluated with a ve tor argument.

Pour utiliser la fon tion quad, il sut don de dénir la variable qui ontient les informations
sur la fon tion intégrande et de la passer omme premier argument. Par exemple, pour al uler
Z π/2
sin xdx,
0

on pro ède omme suit


>> f=sin

f =
sin

>> s=quad(f,0,pi/2)
s =
1.0000
ou, dire tement
>> s=quad(sin,0,pi/2)
s =
1.0000
Pour évaluer la fon tion ible d'une variable de type fun tion handle, on utilise la fon tion
feval. La syntaxe est
feval(f t,x1,...,xn)
La fon tion ible de la variable f t est évaluée ave les arguments x1,...,xn. La fon tion feval est
indispensable dans une fon tion ayant, omme arguments, des variables de type fun tion handle.
On se propose de al uler une solution appro hée de l'équation

f (x) = 0, (6.2)
6.3. FONCTIONS 101

où f est une fon tion de R dans R susamment régulière. La méthode Newton-Raphson permet
d'appro her une solution de (6.2) à l'aide de la suite suivante
f (xk )
xk+1 = xk − , k ≥ 0.
f ′ (xk )

Une fon tion Matlab qui al ule une solution appro hée de (6.2) par la méthode de Newton-
Raphson doit don avoir omme argument la fon tion f de l'équation.
fun tion [x,iter℄=newtonraph(f,x,eps)
%Cal ul de la ra ine d'une équation
% par la methode de Newton-Raphson

[y,dy℄=feval(f,x);
iter=0;
while (abs(y)>eps & iter<100)
iter=iter+1;
[y,dy℄=feval(f,x);
x=x-y/dy;
end
Pour résoudre (6.2) ave f (x) = xex − 10 dans l'intervalle [3/2, 2], on ode la fon tion
fun tion [f,df℄=nf t1(x)
f=x*exp(x)-10;
df=exp(x)+x*exp(x);
qui retourne la fon tion et sa dérivée. Ensuite, on appelle la fon tion newtonraph ave la borne
inférieure de l'intervalle omme x0 .
>> f=nf t1;
>> [x,iter℄=newtonraph(f,1.5,0.0001)
x =
1.7455

iter =
4

>> [x,iter℄=newtonraph(f,1.5,10^-10)
x =
1.7455

iter =
5

>> [fx,dfx℄=feval(f,x) % vérifi ation


fx =
0

dfx =
15.7289
102 CHAPITRE 6. PROGRAMMATION AVEC MATLAB

Remarque 6.2 La fon tion Matlab pour résoudre (6.2) est fzero.

Remarque 6.3 Dans les versions antérieures de Matlab (i.e.≤ 5) le passage d'une fon tion
en argument se faisait à l'aide d'une variable haîne ontenant le nom de la fon tion. L'évaluation
à l'intérieur de la fon tion se faisant toujours ave la fon tion feval dans les mêmes onditions.
Dans le as de l'exemple i-dessus, on aurait dû faire f='nf t1' au lieu de f=nf t1. Pour des
raisons de ompatibilité, le passage d'une fon tion sous forme de haîne ontenant son nom est
aussi a epté.

6.4 Stru tures de ontrle

Matlab dispose de stru tures de ontrle suivantes : for (bou le ave ompteur), while
(répétitive prétestée), if (alternative), swit h ( hoix ventilé). Toutes es stru tures se terminent
par un end.

6.4.1 La bou le for


La syntaxe de la répétitive ave ompteur de Matlab est la suivante.

for ompteur=debut:pas:fin
...
end
Les onstantes réelles début et fin sont les bornes inf et sup de l'intervalle à par ourir. La
onstante (positive ou négative) pas est l'in rément, qui vaut 1 par défaut. L'exé ution de la
bou le se termine lorsque la variable ompteur devient plus grande que fin ( as d'un in rément
positif), ou plus petite que debut ( as d'un in rément négatif).
Le bout de ode (en ligne!) suivant al ule, à l'aide de la bou le for, le n-ème terme de la
suite de Fibona i (u0 = u1 = 1)

un = un−1 + un−2 , n ≥ 2.

>> n=20;
>> u0=1; u1=1;
>> for i=2:n, u=u1+u0; u0=u1; u1=u; end
>> u
u =
10946
Les bou les for peuvent être imbriquées. Par exemple, la matri e de Hilbert de taille m × n
peut-être obtenue à l'aide de a double bou le suivante
for i = 1:m
for j = 1:n
H(i,j)=1/(i+j-1);
end
end
6.4. STRUCTURES DE CONTRÔLE 103

6.4.2 La bou le while


Très utile dans les algorithmes itératifs, la bou le while onsiste à exé uter une séquen e
d'instru tion tant qu'une ondition est vériée. La syntaxe de la bou le while est
while expression_logique
...
end
où expression_logique est en général un test. Pour éviter une bou le sans n, les instru tions
dans le orps de la bou le doivent impérativement agir sur le résultat de expression_logique.
La bou le suivante al ule les termes su essifs de la suite de Fibona i et s'arrête si un > 106 .
u0=1; u1=1; u=2; n=3;

while (u < 10^6)


n=n+1;
u=u1+u0;
u0=u1; u1=u;
end

6.4.3 L'alternative if
L'alternative simple a pour syntaxe
if expression_logique
instru tions I
else
instru tions II
end
La séquen e d'instru tions instru tions I est exé utée si expression_logique est vraie, sinon
'est la séquen e d'instru tions instru tions I qui est exé utée. A noter que la partie else
peut-être fa ultative. Dans e as l'alternative se réduit à
if expression_logique
instru tions I
end
L'alternative omplète a pour syntaxe
if expression_logique 1
instru tions I
elseif expression_logique 2
instru tions II
...
elseif expression_logique n
instru tions N
else
instru tions par défaut
end
Le mot- lé est bien elseif et non else if (il n'y a pas d'espa e!)
104 CHAPITRE 6. PROGRAMMATION AVEC MATLAB

6.4.4 Les expressions logiques


Comme dans les autres langages, les expressions logiques sont obtenues dans Matlab ave
les opérateurs de omparaison, les opérateurs et les fon tions logiques. Les opérateurs de om-
paraison de Matlab sont fournis dans le tableau 6.1.

Opérateur signi ation


< inférieur à
<= inférieur ou égal à
> supérieur à
>= supérieur ou égal à
== égal à
= diérent de

Tab. 6.1  Opérateurs de omparaison de Matlab

Les opérateurs de omparaison du tableau 6.1 peuvent s'appliquer aussi aux tableaux. Les
opérandes doivent être de même dimension ou l'un des deux doit être un s alaire. Le résultat
d'une opération de omparaison sur des tableaux est un tableau de 0 (là où la relation est fausse)
et de 1 (là où la relation est vraie).
>> A=[2 3 8; 10 7 2; 3 4 8℄;
>> B=[2 10 9; 2 7 2; 3 5 7℄;
>> A==B
ans =
1 0 0
0 1 1
1 0 0

>> A>B
ans =
0 0 0
1 0 0
0 0 1
Si l'un des opérandes matri iels est vide (i.e. matri e [℄), l'autre doit être une matri e vide
ou un s alaire. Dans le as ontraire, on a un message d'erreur.
Les opérateurs logiques de Matlab sont fournis dans le tableau 6.2
Les opérateurs logiques de Matlab s'appliquent aussi aux tableaux. Les opérandes doivent
être de même dimension ou l'un des deux doit être un s alaire. Le résultat est un tableau de 0
et de 1, haque opérateur ayant sa propre règle:
• & le résultat est 1 si les deux opérandes sont non nuls, 0 sinon;
• | le résultat est 1 si l'un des deux opérandes est non nul, 0 sinon;
•  le résultat est 1 si l'opérande est nul, 0 sinon.
L'exemple suivant illustre omment ça mar he.
6.4. STRUCTURES DE CONTRÔLE 105

Opérateur Signi ation


& et logique
| ou logique
 négation

Tab. 6.2  Opérateurs logiques de Matlab

>> A=[0 1 7 2 0 6℄;


>> B=[1 3 8 0 9 5℄;
>> A & B
ans =
0 1 1 0 0 1

>> A | B
ans =
1 1 1 1 1 1

>> ~A
ans =
1 0 0 0 1 0

6.4.5 Instru tions de rupture de séquen e

Instru tion Signi ation


break sortie anti ipée d'une bou le
ontinue bou lage anti ipée
pause arrêt momentané
return sortie anti ipée d'une fon tion
error interruption du programme ave message d'erreur

Tab. 6.3  Instru tions de rupture de séquen e

Il existe dans Matlab plusieurs instru tions de rupture de séquen es, résumées dans le Ta-
bleau 6.3.
La ommande break termine l'exé ution d'une bou le for ou while. Dans le as de bou les
imbriquées, break permet de sortir de la bou le la plus pro he.
Pour passer à l'itération suivante, dans une bou le for ou while, on utilise l'instru tion
ontinue.
La ommande return termine l'exé ution de la fon tion ou du s ript en ours et permet de
revenir au  her appelant ou au lavier.
La ommande pause interrompt momentanément l'exé ution du programme. Il existe deux
variantes:
106 CHAPITRE 6. PROGRAMMATION AVEC MATLAB

• pause attend que l'utilisateur appuie sur une tou he du lavier pour ontinuer l'exé ution
du programme;
• pause(n) le programme s'arrête pendant n se ondes avant de se poursuivre.
L'a tivation ou la désa tivation de toutes les ommandes pause d'un programme Matlab se fait
ave pause on ou pause off.
Enn la ommande error('message') a he le message spé ié, émet un bip et inter-
rompt l'exé ution du programme.

6.5 Quelques fon tions internes

Matlab dispose de plusieurs fon tions qui permettent le plus souvent d'éviter l'emploi de
bou le pour par ourir un tableau.

6.5.1 Les fon tions logiques

Fon tion Signi ation


all 1 si tous les éléments d'un tableau sont non nuls
any 1 si l'un des éléments d'un tableau est non nul
isnan déte te les NaN
isinf déte te les Inf
isfinite déte te les éléments nis (6=NaN, Inf)

Tab. 6.4  Fon tions logiques

En plus des opérateurs logiques, Matlab dispose de plusieurs fon tions logiques, tableau 6.4.
• all(A) retourne 1 si tous les éléments du ve teur A sont vrais (i.e. non nuls), 0 sinon. Si A est
une matri e, la fon tion s'applique sur les olonnes et la valeur retournée est un ve teur de
dimension le nombre de olonnes de A.
>> A=[0 2 5; 6 2 2℄
A =
0 2 5
6 2 2

>> all(A)
ans =
0 1 1
• any(A) retourne 1 si l'un des éléments du ve teur A est non nul, 0 sinon. Si A est une matri e,
la fon tion s'applique sur les olonnes et la valeur retournée est un ve teur de dimension le
nombre de olonnes de A.
>>A =
0 2 5
0 2 0
6.5. QUELQUES FONCTIONS INTERNES 107

>> any(A)
ans =
0 1 1
• B=isnan(A) retourne le tableau B, de même taille que A tel que B(i,j)=1 si A(i,j)=NaN, 0
sinon.
>> A=[1 0/0 6 2℄
A =
1 NaN 6 2

>> isnan(A)
ans =
0 1 0 0
• B=isinf(A) omme isnan mais déte te les éléments de valeur Inf d'un tableau.
>> A=[1 1/0 6 2℄
A =
1 Inf 6 2

>> isinf(A)
ans =
0 1 0 0
• B=isfinite(A) déte te les éléments nis d'une matri e, i.e. B(i,j)=1 si A(i,j) est ni,
B(i,j)=0 si A(i,j)=NaN ou A(i,j)=Inf.

6.5.2 La fon tion find


La fon tion find permet de séle tionner les indi es des éléments d'un tableau vériant une
ondition logique. Elle rempla e avantageusement une bou le (for ou while). Dans l'exemple
suivant, on séle tionne, parmi un ensemble de points, eux qui appartiennent au disque unité
{(x, y) | x2 + y 2 <= 1}.

>> x=2*rand(1,20)-2;
>> y=2*rand(1,20)-2;
>> i=find(x.*x+y.*y<=1)
i =
4 7 13 17 18
Dans le as où l'argument d'entrée de la fon tion find est une matri e, on a le hoix des
arguments de sortie.
>> P=pas al(5)
P =
1 1 1 1 1
1 2 3 4 5
1 3 6 10 15
1 4 10 20 35
1 5 15 35 70
108 CHAPITRE 6. PROGRAMMATION AVEC MATLAB

>> [I,J℄=find(P>30)
I =
5
4
5

J =
4
5
5

>> IJ=find(P>30)
IJ =
20
24
25
Dans le premier as, les éléments qui vérient la relation sont
P(I(1),J(1))
P(I(2),J(2))
P(I(3),J(3))
Dans le deuxième as, les indi es retournés sont eux du ve teur P(:).

6.5.3 Fon tions de rédu tion


Les fon tions de rédu tion sont des fon tions de transformation qui réduisent la taille des
tableaux. Nous avons emprunté e terme (et sa dénition) au langage Fortran 90 (voir e.g. [4℄).

Le tri
La fon tion sort tri les éléments d'un ve teur passé en argument. Le tri est ee tué dans
l'ordre roissant.
>> x=randperm(6) %effe tue une permutation aléatoire des entiers de 1 à 6
x =
3 2 4 5 1 6

>> xt=sort(x)
xt =
1 2 3 4 5 6

Un deuxième argument de sortie permet de ré upérer les indi es triés. Ave le ve teur x i-dessus,
on a.
>> [xt,it℄=sort(x)
xt =
1 2 3 4 5 6

it =
5 2 1 3 4 6
6.5. QUELQUES FONCTIONS INTERNES 109

Si l'argument est une matri e, le tri est ee tué olonne par olonne, de manière indépendante.
Un deuxième argument permet de spé ier la dimension à onsidérer pour le tri.
>> H=hilb(4) % tri par olonnes
H =
1.0000 0.5000 0.3333 0.2500
0.5000 0.3333 0.2500 0.2000
0.3333 0.2500 0.2000 0.1667
0.2500 0.2000 0.1667 0.1429

>> [Ht,It℄=sort(H)
Ht =
0.2500 0.2000 0.1667 0.1429
0.3333 0.2500 0.2000 0.1667
0.5000 0.3333 0.2500 0.2000
1.0000 0.5000 0.3333 0.2500

It =
4 4 4 4
3 3 3 3
2 2 2 2
1 1 1 1

>> [H1,I1℄=sort(H,2) % tri par ligne


H1 =
0.2500 0.3333 0.5000 1.0000
0.2000 0.2500 0.3333 0.5000
0.1667 0.2000 0.2500 0.3333
0.1429 0.1667 0.2000 0.2500

I1 =
4 3 2 1
4 3 2 1
4 3 2 1
4 3 2 1

Les fon tions min et max


Les fon tions min et max retournent l'élément minimum ou maximum d'un ve teur passé en
argument et, optionnellement, l'indi e qui réalise le minimum ou le maximum.
>> x=rand(1,5)
x =
0.1197 0.0381 0.4586 0.8699 0.9342

>> m=min(x), M=max(x)


m =
0.0381
110 CHAPITRE 6. PROGRAMMATION AVEC MATLAB

M =
0.9342

>> [m,im℄=min(x)
m =
0.0381

im =
2
Lorsque l'argument d'entrée est une matri e, la re her he du minimum ou du maximum se fait
olonne par olonne. Les fon tions retournent alors un ve teur ligne des minima ou maxima sur
haque olonne. Le deuxième argument de sortie (optionnel) est aussi un ve teur qui ontient les
indi es des lignes qui réalisent le minimum ou le maximum, pour haque olonne.
>> A=round(10*rand(5))
A =
5 0 4 0 8
4 7 2 4 4
9 7 6 8 6
0 10 7 8 7
3 6 4 9 2

>> [M,I℄=max(A)
M =
9 10 7 9 8

I =
3 4 4 5 1
La variante à deux arguments d'entrée permet de séle tionner le plus grand élément des deux
arguments.
>> x=randperm(10)
x =
2 5 8 7 4 10 9 6 1 3

>> y=round(rand(1,10)*20)
y =
16 19 10 18 3 20 5 5 18 15

>> xymax=max(x,y)
xymax =
16 19 10 18 4 20 9 6 18 15

>> xymin=min(x,y)
xymin =
2 5 8 7 3 10 5 5 1 3
Comme pour la fon tion sort, les variantes min(A,[℄,dim) ou max(A,[℄,dim) permettent
de spé ier la dimension de re her he.
6.5. QUELQUES FONCTIONS INTERNES 111

>> A=round(rand(4)*10)
A =
1 3 1 5
0 7 10 3
9 3 6 4
2 5 4 2

>> max(A,[℄,1) % max sur les olonnes


ans =
9 7 10 5

>> max(A,[℄,2) % max sur les lignes


ans =
5
10
9
5
Pour avoir l'élément minimum ou maximum d'une matri e A, il sut de faire la re her he sur
le ve teur orrespondant A(:)
>> A=round(10*randn(5))
A =
-1 4 -3 3 -4
4 -9 -12 2 -12
1 8 -22 0 -11
-6 6 10 -10 15
-6 -8 -5 -9 1

>> m=min(A(:)), M=max(A(:))


m =
-22

M =
15

Les fon tions sum et prod


Les fon tions sum et prod ee tuent la somme et le produit des éléments d'un tableau passé
en argument. Les règles pour une matri e sont les mêmes que pour les fon tion min et max. La
fon tion est appliquée sur les olonnes de la matri e passée en argument à moins qu'un deuxième
argument optionnel ne pré ise la dimension de travail.
>> x=randperm(10)
x =
5 6 9 3 10 1 4 8 2 7

>> sx=sum(x), px=prod(x) % somme et produit des éléments de x


sx =
55
112 CHAPITRE 6. PROGRAMMATION AVEC MATLAB

px =
3628800

>> A=round(rand(4)*10)
A =
8 4 8 4
1 3 10 5
6 9 10 2
1 0 8 6

>> sum(A) % somme sur les olonnes de A (par défaut)


ans =
16 16 36 17

>> sum(A,2) % somme sur les lignes de A


ans =
24
19
27
15

>> prod(A,1) % produit sur les olonnes de A


ans =
48 0 6400 240

6.5.4 Opérations sur les ensembles


Matlab dispose de fon tions spé ialisées ee tuant les opérations sur les ensembles telles
que l'union, l'interse tion, le omplémentaire, et .
La fon tion union réalise la réunion de deux ve teurs onsidérés omme des ensembles. Le
ve teur résultat est trié.
>> x=union([2 6 1 0℄,[1 7 3 2 10 5℄)
x =
0 1 2 3 5 6 7 10

>> x=union([2 6 1 0 2 2℄,[1 7 3 2 10 5℄,'rows')


x =
1 7 3 2 10 5
2 6 1 0 2 2
Dans la deuxième forme (i.e. ave l'option 'rows') la fon tion union retourne une ombinaison
de ligne des arguments d'entrée sans répétition. Dans e as les deux arguments doivent avoir le
même nombre de olonnes. Ave l'argument optionnel 'rows', la fon tion union a epte aussi
des matri es en arguments (ave le même nombre de olonnes).
>> A=round(10*rand(3,4))
A =
9 2 3 6
6 5 7 7
6.5. QUELQUES FONCTIONS INTERNES 113

6 9 4 4

>> P=pas al(4)


P =
1 1 1 1
1 2 3 4
1 3 6 10
1 4 10 20

>> AP=union(A,P,'rows')
AP =
1 1 1 1
1 2 3 4
1 3 6 10
1 4 10 20
6 5 7 7
6 9 4 4
9 2 3 6
Des arguments de sortie optionnels permettent de ré upérer les indi es des éléments qui réalisent
la réunion (le résultat nal est trié!).
La fon tion interse t réalise l'interse tion de deux ve teurs ou de deux matri es, onsidérés
omme des ensembles, dans les mêmes onditions (et les mêmes options) que la fon tion union.
Le résultat peut être un ensemble vide. Ave les matri es A et P utilisées pour union on a
>> x=interse t(A(3,:),P(3,:))
x =
6

>> C=interse t(A,P,'rows')


C =
Empty matrix: 0-by-4
La fon tion setdiff(x,y) retourne le omplémentaire du ve teur y dans le ve teur x. En
d'autres termes, la fon tion setdiff(x,y) retourne les éléments de x qui ne sont pas dans y.
Ave deux matri es ayant le même nombre de olonnes, la fon tion retourne les lignes de x qui
ne sont pas dans y.
>> x=setdiff([2 8 3 7 4℄,[3 2 1℄)
x =
4 7 8

>> A=[ 2 4 3; 1 0 2; 0 3 4℄, B=[1 1 1; 2 4 3℄


A =
2 4 3
1 0 2
0 3 4

B =
1 1 1
2 4 3
114 CHAPITRE 6. PROGRAMMATION AVEC MATLAB

>> C=setdiff(A,B,'rows')
C =
0 3 4
1 0 2
La fon tion setxor(x,y) retourne les éléments qui ne sont pas dans l'interse tion de x et y
dans les mêmes onditions (et options) que les fon tions pré édentes.
La fon tion ismember(x,S) retourne 1 si x appartient à la matri e S et 0 sinon. Si x est un
ve teur, retourne un ve teur y de même longueur que x. A haque omposante de x qui appartient
à S, la omposante orrespondante de y vaut 1 et 0 sinon.
>> A=pas al(3)
A =
1 1 1
1 2 3
1 3 6

>> ismember(1,A)
ans =
1

>> ix=ismember([1 2 3 4℄,A)


ix =
1 1 1 0
Ave deux matri es ayant le même nombre de olonnes et l'option 'rows', le test d'appartenan e
se fait sur les lignes. Dans l'exemple suivant, A est la matri e de Pas al utilisée i-dessus.
>> B=[2 6 8; 1 3 6; 1 2 3℄
B =
2 6 8
1 3 6
1 2 3

>> ismember(B,A,'rows')
ans =
0
1
1
La première ligne de la matri e B n'appartient pas à la matri e de Pas al d'ordre 3. D'où le 0 du
ve teur résultat.

6.6 Importation/exportation de données

6.6.1 Les fon tions save et load


On a déjà vu les ommandes save et load au hapitre 1 pour la sauvegarde et le hargement
de données binaires ( hier .mat). Dans ette se tion, on ne s'o upe que de la sauvegarde et du
hargement de données numériques sous forme de  hier texte.
6.6. IMPORTATION/EXPORTATION DE DONNÉES 115

La forme fon tionnelle de load permet de lire dire tement dans un tableau des données
numériques, à partir d'un  hier texte. Les données doivent être rangées en olonnes et le nombre
de olonnes doit être le même pour toutes les lignes du  hier.
Supposons que le  hier fdonnees.dat ontienne les lignes suivantes.
-0.4326 0.3273 1.0668
-1.6656 0.1746 0.0593
0.1253 -0.1867 -0.0956
0.2877 0.7258 -0.8323
-1.1465 -0.5883 0.2944
1.1909 2.1832 -1.3362
1.1892 -0.1364 0.7143
-0.0376 0.1139 1.6236
On peut le lire dire tement et ae ter son ontenu à la matri e A omme suit.
>> lear all
>> A=load('fdonnees.dat');
>> A
A =
-0.4326 0.3273 1.0668
-1.6656 0.1746 0.0593
0.1253 -0.1867 -0.0956
0.2877 0.7258 -0.8323
-1.1465 -0.5883 0.2944
1.1909 2.1832 -1.3362
1.1892 -0.1364 0.7143
-0.0376 0.1139 1.6236
La ommande save peut aussi sauvegarder des variables sous format texte. Il sut de le
pré iser en option.
>> a=rand(3)
a =
0.9501 0.4860 0.4565
0.2311 0.8913 0.0185
0.6068 0.7621 0.8214

>> b=ones(1,4)
b =
1 1 1 1

>> save -as ii TDonnees.dat a b % sauvegarde a et b dans TDonnees.dat


>> type TDonnees.dat % affi he le ontenu du fi hier TDonnees.dat

9.5012929e-01 4.8598247e-01 4.5646767e-01


2.3113851e-01 8.9129897e-01 1.8503643e-02
6.0684258e-01 7.6209683e-01 8.2140716e-01
1.0000000e+00 1.0000000e+00 1.0000000e+00 1.0000000e+00
Il existe aussi une forme fon tionnelle de save (voir l'aide en ligne).
116 CHAPITRE 6. PROGRAMMATION AVEC MATLAB

6.6.2 Les fon tions fprintf et fs anf


Les fon tions fprintf et fs anf permettent de lire et é rire dans un  hier formaté. Avant
de lire ou é rire dans un  hier, il faut l'ouvrir ave la fon tion fopen.

fid=fopen('NomFi hier.dat','permission')

fid est un entier. On referme le  hier ave la fon tion f lose(fid). La haîne 'permission'
spé ie le mode d'a ès au  hier
'r' a ès en le ture
'w' a ès en é riture
'a' ajout de données
'r+' a ès en le ture et é riture.
La syntaxe des fon tions fs anf et fprintf est la suivante.

• fprintf(fid,'format',variables) é rit les variables au format spé ié par la haîne de


ara tères 'format' dans le  hier désigné par le pointeur de  hier fid. Si l'entier fid
vaut 1 ou s'il est omis, l'é riture se fait à l'é ran.
• a=fs anf(fid,'format',size) assigne à la variable a les données lues dans le  hier iden-
tiée par fid au format 'format'. size est un ve teur de la forme [m,n℄ qui spé ie la
taille de a. Attention, haque ligne du  hier lu est transformée en un olonne de a.
Les spé i ations de formatage sont elles du langage C. Les spé i ations de formatage les plus
utilisées (pour nous) sont
%md entier sur m olonnes
%m.nf réel ottant sur m olonnes ave n dé imales
%m.ne réel sous forme exponentielle sur m olonnes ave n dé imales.
\n retour à la ligne.
Les fon tions fs anf et fprintf sont ve torisées.

>> t=0:.25:1; y=sin(t);


>> fprintf('t=%10.6f y=%10.6f \n',t,y)
t= 0.000000 y= 0.250000
t= 0.500000 y= 0.750000
t= 1.000000 y= 0.000000
t= 0.247404 y= 0.479426
t= 0.681639 y= 0.841471

Supposons que le  hier donnees.dat est de la forme

1000 256
2888 265
2788 543
7865 122
8754 677

Alors on peut le lire ave la suite de ommandes.


6.7. OPTIMISATION D'UN CODE 117

>> fid=fopen('donnees.dat','r');
>> a=fs anf(fid,'%4d%3d',[2,5℄);
>> f lose(fid);
>> a
a =
1000 2888 2788 7865 8754
256 265 543 122 677

>> a'
ans =
1000 256
2888 265
2788 543
7865 122
8754 677
L'in onvénient de fs anf par rapport à load 'est qu'il faut absolument spé ier le format sous
peine d'erreur.

6.7 Optimisation d'un ode

Comme son nom l'indique, Matlab est onçu pour le al ul matri iel. Les instru tions per-
formantes sont don elles qui omportent des opérations matri ielles ou ve torielles. L'exemple
suivant en est une illustration.
>> ti , i=0; for t=0:0.01:100, i=i+1; y(i)=sin(t); end, to
elapsed_time =
0.2446

>> ti , t=0:0.01:100; y=sin(t); to


elapsed_time =
0.0028
La ve torisation onsiste à transformer une bou le for ou while en opérations matri ielles
ou ve torielles équivalentes. Nous allons l'illustrer sur le al ul de la matri e de distan es d'un
ensemble de points de R2 .
Soit E = {Mi = (xi , yi )}i=1,...,n un ensemble de points dans R2 . On veut al uler la matri e
de distan e E , i.e. la matri e D = (dij ) où
q
dij = (xi − xj )2 + (yi − yj )2 , i = 1, . . . , n.

La première appro he (dire te) est d'utiliser des bou les for omme en C/C++ ou en Fortran.
Le résultat est la fon tion 6.1 (matd0).
On remarque la matri e D est la norme de la matri e
     
M1 M1 M1 M2 ··· M1 Mn M1 M2 ··· Mn M1 M1 ··· M1
 M2 M1 M2 M2 ··· M2 Mn   M1 M2 ··· Mn   M2 M2 ··· M2 
.. .. ..  =  .. .. ..  −  .. .. .. 
     
. . .   . . .   . . . 

 ··· ··· ···
Mn M1 Mn M2 ··· Mn Mn M1 M2 ··· Mn Mn Mn ··· Mn
118 CHAPITRE 6. PROGRAMMATION AVEC MATLAB

Fon tion 6.1 Fon tion matri e de distan e ave des bou les for
fun tion d=matd0(x,y)
%
% Matri e de distan es d'un ensemble de points
%
%
n=length(x);
d=zeros(n);

% bou le de al ul des distan es


for i=1:n
for j=1:n
d(i,j)=sqrt((x(i)-x(j))^2+(y(i)-y(j))^2);
end
end

Fon tion 6.2 Fon tion matri e de distan es ve torisée


fun tion d=matd(x,y)
%
% Matri e de distan es d'un ensemble de points
%
%
n=length(x);

% repli ation de x et y en n olonnes


xx=x(:,ones(1,n));
yy=y(:,ones(1,n));

% al ul des distan es
d=sqrt((xx-xx').^2+(yy-yy').^2);
6.8. EXERCICES 119

Il sut don de répliquer judi ieusement les ve teurs x = (xi ) et y = (yi ). C'est e que fait la
fon tion 6.2.
On obtient à l'exé ution:
>> x=rand(5,1)*30-15;
>> y=rand(5,1)*30-15;
>> d=matd(x,y)
d =
0 8.8501 25.6542 2.5325 2.4329
8.8501 0 18.3946 10.5236 6.4193
25.6542 18.3946 0 26.0717 23.5964
2.5325 10.5236 26.0717 0 4.4530
2.4329 6.4193 23.5964 4.4530 0
La omparaison des deux fon tions est sans appel.
>> x=rand(100,1); y=rand(100,1);
>> ti , d=matd0(x,y); to
elapsed_time =
0.1335

>> ti , d=matd(x,y); to
elapsed_time =
0.0021

>> x=rand(1000,1); y=rand(1000,1);


>> ti , d=matd0(x,y); to
elapsed_time =
11.8824

>> ti , d=matd(x,y); to
elapsed_time =
0.3486
La fon tion 6.2, ve torisée, est environ 30 fois plus rapide que la fon tion 6.1, non ve torisée. Ce i
même en pré-allouant la matri e de distan e d avant le début des bou les dans la fon tion 6.1.
Un autre moyen pour améliorer un ode Matlab est la gestion de la mémoire. L'allo ation
dynamique des tableaux peut entraîner une fragmentation de la mémoire. Il y a un risque qu'il n'y
ait plus assez d'espa e mémoire ontigüe pour l'allo ation d'un grand tableau. On peut réduire
la fragmentation de la mémoire en pré-allouant ertains tableaux. Pour les tableaux numériques,
il sut d'utiliser la fon tion zeros(m,n). Il faut aussi utiliser la ommande lear pour libérer
de l'espa e.

6.8 Exer i es

Exer i e 6.1 Soit A une matri e m × n. Traduire en Matlab (sans bou le) les expressions
suivantes  
n m m n
!
Y X Y X
|aij | ,  |aij | .
j=1 i=1 i=1 j=1
120 CHAPITRE 6. PROGRAMMATION AVEC MATLAB

Exer i e 6.2 Traduire l'instru tion Matlab


max(sqrt(sum([x y℄.^2,2)))
où x et y sont des ve teurs olonnes de longueur n.
Exer i e 6.3 E rire une fon tion Matlab qui al ule sans bou le le ve teur x de dimension n
dont les omposantes sont données par
m
X 2
xi = log(i)ej , i = 1, . . . , n.
j=1

Exer i e 6.4 É rire les fon tions Matlab ve torielles qui évaluent les fon tions, de Rn dans
R, suivantes:
n
2
X
f1 (x) = i (2xi − xi−1 ) ,
i=2

n n
!2
2
X X
f2 (x) = 10−5 (xi − 1) + x2i − 0.25 .
i=1 i=1

Exer i e 6.5 (Arêtes d'une triangulation) On suppose qu'on dispose d'une triangulation
(t,p), où
 p(1:np,1:2) oordonnées des sommets du triangles;
 t(1:nt,1:3) est le tableau de onne tivité de la triangulation, i.e. t(k,1:3) ontient les
numéros des sommets du triangle k.
1. Comment extraire fa ilement toutes les arêtes de la triangulation ?
2. En prin ipe les arêtes internes apparaissent deux fois (à une permutation de sommets prêt)
tandis que les arêtes externes (du bord) n'apparaissent qu'une seule fois. Comment extraire les
arêtes externes ? (Indi ation : utiliser les fon tions unique, sort et hist ).
Exer i e 6.6 (Méthode de Newton-Raphson) Soit à résoudre le système non linéaire
(P ) F (x) = 0,

où F : Rn −→ Rn est susamment dérivable. La méthode de Newton-Raphson [5, 16, 17,


19, 18℄ permet d'appro her une solution de (P ) grâ e à la formule itérative ré urrente
h i−1
wk+1 = − ∇F (xk ) F (xk ), k ≥ 0,
xk+1 = xk + wk ,

où ∇F (xk ) est la matri e Ja obienne de F , supposée inversible. Don à haque itération k, on


doit résoudre le système linéaire en wk+1
∇F (xk )wk+1 = −F (xk ), k ≥ 0.

On arrête les itérations dès que l'erreur relative sur xk , i.e. k wk k / k xk k, devient susam-
ment petite.

É rire un s ript Matlab pour résoudre, par la méthode de Newton-Raphson, un système


d'équations non linéaires. La matri e ja obienne ∇F (x) et la fon tion F (x) devront être al ulées
6.8. EXERCICES 121

dans la même fon tion Matlab . on pourra utiliser le système suivant pour la mise au point du
programme.
F1 (x) = 7x21 + 3x1 x2 + 4x1 − x2 − 41 = 0, (6.3)
F2 (x) = 10x21 + 4x1 x2 + 5x1 − 2x2 − 56 = 0. (6.4)

On prendra x0 = (−1, −3) et on limitera le nombre d'itérations à 40. Pour information la solution
de (6.3)-(6.3) est x∗ = (2, 1). Modier le s ript Matlab pour qu'il réalise (optionnellement) la
représentation graphique des itérés su essifs xk , lorsqu'on est dans R2 ou R3 .
Tester la robustesse de votre programme, pour des grandes valeurs de n, ave les fon tions F
suivantes
Fon tion de Rosenbro k:
F2i−1 (x) = 10(x2i − x22i−1 ),
F2i (x) = 1 − x2i−1

pour i = 1, . . . , n/2 (don n entier pair), x0 = (−1.2, 1, . . . , −1.2, 1) et la solution exa te


est x∗ = (1, 1, . . . , 1).
Fon tion trigonométrique:
n
X
Fi (x) = n − (cos xj + i(1 − cos xi ) − sin xi ) ,
j=1

pour i = 1, . . . , n, x0 = (1/n, . . . , 1/n).

Exer i e 6.7 (Méthode de Levenberg-Marquard) Pour les problèmes de moindres arrés


non linéaires, la méthode de Levenberg-Marquardt est la méthode standard, voir par exemple [2,
13, 17℄. Elle ombine astu ieusement les qualités de deux méthodes d'optimisation: la robustesse
de la méthode de la plus forte pente (lorsqu'on est loin de l'optimum) et l'e a ité de la méthode
de Newton (au voisinage de l'optimum). On peut onsulter [2, 15℄ pour les détails sur es méthodes
d'optimisation.
Soit un modèle à ajuster y = y(x; a), dépendant non linéairement de n paramètres a =
(a1 , . . . , an )T . On dispose de p mesures (xi , yi ), i = 1, . . . , p. Soit F la fon tion, de Rn dans Rp ,
dénie par
F (a) = (F1 (a), . . . , Fp (a))T
ave Fi (a) = y(xi ; a) − yi , pour i = 1, . . . , p.
L'erreur, en norme Eu lidienne, entre les mesures et le modèle est alors donnée par
1 1
e(a) = F (a)T F (a) = k F (a) k22 .
2 2
L'ajustement onsiste don à trouver le paramètre a qui minimise la fon tion e(a), i.e. résoudre
le problème d'optimisation
min e(a).
a∈Rn

On note JF (a) la matri e ja obienne de F , i.e. la matri e p × n suivante


 
∂Fi
JF (a) = ∇F (a) = (a) (6.5)
∂aj i,j
122 CHAPITRE 6. PROGRAMMATION AVEC MATLAB

Ave (6.5), le gradient de e est donné par

∇e(a) = JF (a)T F (a) (6.6)

Dans la méthode de Levenberg-Marquardt, la matri e Hessienne

∂2e
H(a) = (a)
∂ai ∂aj

de e est appro hée par

H(a) ≈ JF (a)T JF (a), (6.7)

beau oup plus fa ile à évaluer que la matri e Hessienne exa te.
On onsidère maintenant un pro essus de minimisation itératif ave une mise à jour de la
forme

ak+1 = ak + dk , k = 0, 1, . . . ,

où dk est une dire tion de des ente de e en ak , i.e. une dire tion qui vérie

∇e(ak )T dk < 0.

Si on utilise l'algorithme de la plus forte pente (voir par exemple [3, 2, 15℄) on a

dk = −λk ∇e(ak ), (6.8)

où λk > 0 est le pas de dépla ement. Dans le as où la matri e Hessienne (6.7) est dénie positive
( e qui n'est pas toujours le as!!), on peut prendre dk omme solution du système linéaire

H(ak )dk = −∇e(ak ). (6.9)

L'idée prin ipale onsiste à utiliser (6.8) lorsqu'on est loin de l'optimum, puis de lui substituer
(6.9) à l'appro he de l'optimum. On rempla e alors (6.8) et (6.9) par une formule unique

H(ak ) + λk In dk = −∇e(ak ), (6.10)




où In est la matri e identité d'ordre n. Le paramètre λk doit être ajuster pour que dk solution
de (6.10) soit toujours une dire tion de des ente. L'ajustement onsiste à augmenter λk si le
dépla ement augmente la fon tion ( i.e. e(ak + dk ) > e(ak )) et à la diminuer si la fon tion
diminue dans la dire tion dk .
6.8. EXERCICES 123

Algorithme de Levenberg-Marquardt
Initialisation k = 0, a0 donnés, λ0 = 0.001
Répéter k ≥ 0
Cal uler dk solution de
JF (ak )T JF (ak ) + λk In dk = −JF (ak )T F (ak )


Si e(ak + dk ) < e(ak ) (des ente)


λk+1 = λk /10
ak+1 = ak + dk
k =k+1
Sinon (pas de des ente)
λk+1 = 10λk
ak+1 = ak
k =k+1
n si
Jusqu'à k JF (ak )T F (ak ) k2 < ε

Pour le test d'arrêt, on prendra 0.0001 ≤ ε ≤ 0.01. Le fait d'augmenter λ quand e(ak + dk ) ≥
e(ak ) signie qu'on renfor e la diagonale de la matri e pour s'éloigner de la matri e singulière.
Programmer la méthode de Levenberg-Marquardt pour les problèmes de moindres arrés non
linéaires. La mise au point du programme se fera sur l'é hantillon bidimensionnel suivant
x 0.01 1.93 2.95 3.26 4.18 5.73 6.29 7.70 8.91 9.12
y 0.98 0.84 0.80 0.78 0.82 0.78 0.80 0.85 0.90 0.95
On fait l'hypothèse que le modèle non linéaire à ajuster est une somme de M gaussiennes, i.e.
M
"  2 #
X x − a3l−1
y(x; a) = a3l−2 exp − .
a3l
l=1

Les paramètres à trouver sont don a3l−2 , a3l−1 et a3l pour l = 1, . . . , M . Ajuster le modèle
pour diérentes valeurs de M ≤ 5. Tra er, pour haque valeur de M , l'é hantillon et la ourbe
d'ajustement.
Index

Symboles et mots lés eye . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25


' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22, 24 f lose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28, 29 feval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 figure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
, . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17, 21 find . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79, 107
- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 fopen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
.* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 fprintf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
./ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 fs anf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
/ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 full . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22, 32 fun tion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16, 17, 21, 23 global . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
[℄ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23, 24 gmres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88, 91
% . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 griddata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
abs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 gtext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
all . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13, 14, 97
angle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 hilb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
ans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 hold . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
any . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 imag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
axis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 interse t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
break . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 inv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
holin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 is har . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
hol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52, 81 isfinite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
label . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 isinf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
lear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19, 119 iskeyword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
olperm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 islogi al . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
ontinue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 ismember . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
ontour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 isnan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
delaunay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 isreal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
delsq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
det . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 j . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
diag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 legend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
diary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 length . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
dot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 linspa e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22, 69
eig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 load . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20, 115
error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 logspa e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

124
INDEX 125

lookfor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15, 97 ti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
luin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 title . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
lu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50, 80 to . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
max . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 triplot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
meshgrid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 union . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
mesh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
min . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 whos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
nargin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 who . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
nargout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 xlabel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
nnz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 ylabel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
normest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 zeros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
norm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 zeros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
null . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 .^ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
numgrid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 \ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30, 43
ones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
pas al . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 A
pause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 aide en ligne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
p g . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88, 89
pinv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 C
ommentaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
plot3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
onditionnement d'une matri e . . . . . . . . . . . 86
plot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14, 59
onstantes prédénies . . . . . . . . . . . . . . . . . . . . . 18
print . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
ontrle du pivotage . . . . . . . . . . . . . . . . . . . . . . 80
prod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
onversion matri e/ve teur . . . . . . . . . . . . . . . 32
qr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
ourbe
randn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
rand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
real . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
axe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
reshape . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
de niveau . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
return . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97, 105
save . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20, 115 D
setdiff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 déterminant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
setxor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 diéren es nies . . . . . . . . . . . . . . . . . . . . . . . . . . 82
size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23, 24
sort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 F
sparse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 fa torisation
spdiags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78, 93 de Cholesky . . . . . . . . . . . . . . . . . . . . . . . . . . 52
speye . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 LU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
spfun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 QR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
sprandn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78  hier
sprandsym . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 é riture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
sprand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 fermeture . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
spy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 le ture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
subplot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 ouverture . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
sum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 gure
surf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 insérer du texte . . . . . . . . . . . . . . . . . . . . . . 63
svd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 légende . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
symamd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 sauvegarde . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
symr m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 titre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 fon tion
126 INDEX

logique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 norme


de Frobenius . . . . . . . . . . . . . . . . . . . . . . . . . 39
I matri ielle . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
interse tion de deux matri es . . . . . . . . . . . . 113 matri ielle subordonnée . . . . . . . . . . . . . . 38
ve torielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
K
Krylov (sous-espa e) . . . . . . . . . . . . . . . . . . . . . . 90 O
opérateur
M de omparaison . . . . . . . . . . . . . . . . . . . . . 104
méthode opérateurs
du gradient onjugué pré onditionné . 89 logiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
GMRES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 opération
Newton-Raphson . . . . . . . . . . . . . . . . . . . 101 élément par élément . . . . . . . . . . . . . . . . . 31
matri e addition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
aléatoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 division . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
d'indi es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 produit de ve teurs . . . . . . . . . . . . . . . . . . 28
de Hilbert . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 produit matri iel . . . . . . . . . . . . . . . . . . . . . 29
de Pas al . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 produit s alaire . . . . . . . . . . . . . . . . . . 28, 29
de Vandermonde . . . . . . . . . . . . . . . . . . . . . 41 puissan e . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
diagonale . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 soustra tion . . . . . . . . . . . . . . . . . . . . . . . . . . 27
identité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
inverse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 P
ne ontenant que des 1 . . . . . . . . . . . . . . . 26 pré onditionnement d'un système linéaire . 86
nulle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 problème
orthogonale . . . . . . . . . . . . . . . . . . . . . . . . . . 54 de moindres arrés . . . . . . . . . . . . . . . . . . . 45
par blo s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 produit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
pseudo-inverse . . . . . . . . . . . . . . . . . . . . 45, 48
suppression d'une olonne . . . . . . . . . . . . 35 R
suppression d'une ligne . . . . . . . . . . . . . . . 35 régression linéaire . . . . . . . . . . . . . . . . . . . . . . . . 45
taille . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 réunion de deux matri es . . . . . . . . . . . . . . . . 112
transposée . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
unitaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 S
matri e reuse somme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
onversion . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 surfa e
réation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 analytique . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
du Lapla ien . . . . . . . . . . . . . . . . . . . . . . . . . 82 dénie par un ensemble de points . . . . 69
nombre d'éléments non nuls . . . . . . . . . . 78 système
sto kage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 aux équations normales . . . . . . . . . . . . . . 45
visualiser . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 arré . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
maximum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 sous-déterminé . . . . . . . . . . . . . . . . . . . . . . . 46
méthode surdéterminé . . . . . . . . . . . . . . . . . . . . . . . . . 45
Levenberg-Marquardt . . . . . . . . . . . . . . . 121
Newton-Raphson . . . . . . . . . . . . . . . . . . . 120 T
minimum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 tabuler une fon tion . . . . . . . . . . . . . . . . . . . . . . 31
moindres arrés tri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
non linéaires . . . . . . . . . . . . . . . . . . . . . . . . 121 triangulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
mots réservés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 type
mots- lés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 haîne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
omplexe . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
N logique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
INDEX 127

V
valeur
propre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
singulière . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
variables prédénies . . . . . . . . . . . . . . . . . . . . . . 18
ve teur
olonne . . . . . . . . . . . . . . . . . . . . . . . . . . 21, 23
d'indi es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
ligne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21, 23
propre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
taille . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
transposé . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
ve torisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
128 INDEX
Bibliographie

[1℄ Amestoy P.R., Davis T.A. and Duff I.S. An approximate minimum degree ordering
algorithm. SIAM J. Matrix Anal. Appl., 17(4):886905, 1996.
[2℄ Bonnans J.-F., Gilbert J.C., Lemaré hal C. and Sagastizabal C. Optimisation
Numérique - Aspe ts théoriques et pratiques, volume 27 of Mathématiques et Appli ations.
Springer-Verlag, 1997.
[3℄ Bonnans J.-F., Gilbert J.C., Lemaré hal C. and Sagastizabal C. Numeri al Op-
timization: theoreti al and numeri al aspe ts. Springer-Verlag, 2003.
[4℄ Delannoy C. Programmer en Fortran 90. Eyrolles, Paris, 1993.

[5℄ Dennis J.E. and S hnabel R.B. Numeri al Methods for Un onstrained Optimization and
Nonlinear Equations. Classi s in Applied Mathemati s. SIAM, Philadelphia, 1996.
[6℄ Golub G.H. and Ortega J.M. S ienti Computing and Dierential Equations. A ademi
Press, 1992.
[7℄ Golub G.H. and Van Loan C.F. Matrix Computations. The John Hopkins University
Press, Baltimore, 1989.
[8℄ Goossens M., Mittelba h and Samarin A. LaTeX Companion. CampusPress, Paris,
2001.
[9℄ Kopka H. and Daly P.W. Guide to LaTeX. Addison-Wesley, 2004.

[10℄ Las aux P. and Théodor R. Analyse numérique matri ielle appliquée à l'art de l'ingé-
nieur, volume 1. Masson, Paris, 1994.
[11℄ Las aux P. and Théodor R. Analyse numérique matri ielle appliquée à l'art de l'ingé-
nieur, volume 2. Masson, Paris, 1994.
[12℄ Lu quin B. Equations aux Dérivvées Partielles et leurs approximations. Ellipses, Paris,
2004.
[13℄ Luenberger D. Linear and Nonlinear Programming. Addison Wesley, Reading, MA, 1989.

[14℄ Meurant G. Computer Solution of Large Systems. Studies in Mathemati s and its Appli-
ations. North Holland, 1999.
[15℄ Minoux M. Programmation Mathématique: Théorie et Algorithmes. Te & Do Lavoisier,
Paris, 2008.
[16℄ Ortega J.M. and Rhainboldt W.C. Iterative Solution of Nonlinear Equations in Several
Variables. A ademi Press, New York, 1970.

129
130 BIBLIOGRAPHIE

[17℄ Press W. H., Teukolsky S. A., Vetterling W. T. and Flannery B.P. Numeri al
Re ipes. Cambridge University Press, 1992.
[18℄ and Saleri F. Méthodes numériques pour le al ul s ientique.
Quarteroni A., Sa o R.
Springer, 2000.
[19℄ Sibony M. and Mardon J.-C. Approximation et équations diérentielles. Hermann, Paris,
1988.

También podría gustarte