Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Jonas KOKO
2010 Institut Supérieur d'Informatique, de Modélisation et de leurs Appli
ations Campus des
Cézeaux
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
7
8 TABLE DES FIGURES
Liste des tableaux
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
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:
13
14 CHAPITRE 1. PRISE EN MAIN
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:
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
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
>> 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
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
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
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
realmax =
0.2568
1.5. GESTION DE LA MÉMOIRE 19
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
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
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.
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.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.
>> 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
>> 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
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
>> 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. [℄.
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
>> 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 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
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
N =
-0.4326 0.1253 -1.1465
-1.6656 0.2877 1.1909
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
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.
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
>> 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
>> 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
>> 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
>> 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
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(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
>> 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
>> 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
>> 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
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
n
!1/2
(2.2)
X
k x k2 = x2i ,
i=1
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
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
>> nf=norm(a,'fro')
nf =
1.5097
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
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
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
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.
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).
43
44 CHAPITRE 3. ALGÈBRE LINÉAIRE
-1.1262
0.0000
-0.0000
1.1262
>> norm(A*x-b)
ans =
0.0021
>> 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
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
>> 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
>> 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).
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
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
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.
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 =
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
ans =
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
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
-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
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
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
>> [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
3.5 Exer i es
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 ,
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
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
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.
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
θ
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
.
>> 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.
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
où
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')
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
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
[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
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)
>> 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
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.
1.5
0.5
−0.5
−1
−1.5
−2
−2 −1.5 −1 −0.5 0 0.5 1 1.5 2
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
Fig. 4.15 Tra é par fa ettes d'une surfa e dénie sur la triangulation 4.13
1.5
0.5
−0.5
−1
−1.5
−2
−2 −1.5 −1 −0.5 0 0.5 1 1.5 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.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
0.5
−0.5
2
1 2
1
0
0
−1
−1
−2 −2
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.
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
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.
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
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.
50
100
150
200
250
300
350
400
450
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);
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
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
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
50
100
150
200
250
300
350
400
450
50
100
150
200
250
300
350
400
450
>> A=delsq(numgrid('S',100));
>> size(A)
ans =
9604 9604
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
1000
2000
3000
4000
5000
6000
7000
8000
9000
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.
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 .
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
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
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
>> 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 =
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
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.
>> 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.
>> iter
iter =
1 6
>> res
res =
8.7373e-07
>>
5.8 Exer i es
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
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
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.
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.
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
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
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
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
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
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
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é.
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.
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.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
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
>> A | B
ans =
1 1 1 1 1 1
>> ~A
ans =
1 0 0 0 1 0
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.
Matlab dispose de plusieurs fon
tions qui permettent le plus souvent d'éviter l'emploi de
bou
le pour par
ourir un tableau.
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.
>> 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(:).
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
I1 =
4 3 2 1
4 3 2 1
4 3 2 1
4 3 2 1
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
M =
15
px =
3628800
>> A=round(rand(4)*10)
A =
8 4 8 4
1 3 10 5
6 9 10 2
1 0 8 6
6 9 4 4
>> 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
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
>> 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.
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
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.
1000 256
2888 265
2788 543
7865 122
8754 677
>> 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.
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
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);
%
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
>> 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.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,
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.
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
∂2e
H(a) = (a)
∂ai ∂aj
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
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
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
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 )
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
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
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.