Vous êtes sur la page 1sur 3

Licence 3e`me ann

ee, option Math


ematiques

2013-2014

M65, Analyse num


erique matricielle

composition QR et
TP2 : La de
es
emes de moindres carr
les probl`
Vous etes invites `a creer dans un repertoire .../TPM65/QRetMC/ le fichier scriptTP2.sce
pour les exercices ci-dessous (comportant les lignes de code correspondant a` la resolution
de lexercice) et le fichier fonctionsTP2.sci pour les algorithmes dont on a besoin (comportant les fonctions).
En cas de blocage, commencez toujours par regarder laide !!

1. Gram-Schmidt et Gram-Schmidt modifi


e
1.1. Programmer une fonction [Q,R]=GS(A) qui rend les matrices Q et R dans la decomposition
QR de la matrice A Mmn (K), avec rg(A) = n m, par lalgorithme de GramSchmidt (voir point 3.2.1 du cours). On utilisera la vectorisation pour calculer les
vecteurs colonnes R(1 : k 1, k), k = 2, . . . , n.
1.2. Tester la fonction GS pour les matrices

10 1
4
A1

A1 = 2
5 2 et A2 = 0
4 3 .
5
1
7
6 3 9
Calculer k Qj Rj Aj k2 et k QH
u I3 est la matrice
j Qj I3 k2 pour j = 1, 2, o`
identite de taille 3.
des points equi-distants
1.3. Pour n = 2, . . . , 10 et j = 1, . . . , n, soient xnj = 1 + 2(j1)
n1
dans lintervalle [1, 1], et Vn Mn (R) la matrice de Vandermonde definie par

n1
1 x1n1 . . . xn1

n1
1 x1n2 . . . xn2

.
Vn = .
.
.

.
.
.
.
.
.
n1
1 x1nn . . . xnn

Pour chaque n, calculer la decomposition Vn = Qn Rn `a laide de la fonction GS.


Tracer le graph de k QH
ees
n Qn In k2 en fonction de n. On utilisera laxe des ordonn
en echelle logarithmique. Comparer le avec les graphs de cond2 (Rn ) et cond2 (Rn )2 .
1.4. Programmer une fonction [Q,R]=GSmod(A) qui rend les matrices Q et R dans la
decomposition QR de la matrice A Mmn (K) par lalgorithme de Gram-Schmidt

modifie (voir point 3.2.2 du cours). On utilisera la vectorisation pour calculer les
vecteurs lignes R(k, k + 1 : n), k = 1, . . . , n 1.
1.5. Tester la fonction GSmod pour les matrices de question 1.2. et 1.3. Comparer les
resultats obtenus avec celles obtenus par la fonction GS et par la commande qr
et R
obtenues par la
de Scilab. Remarque : La comparisation avec les matrices Q
commande qr de Scilab se fait par le lien :
: m, 1 : n)
Q = Q(1

: n, 1 : n).
et R = R(1

2. Householder
2.1. Soit donne un vecteur v Rk o`
u k > 1. Tester la commande householder de
Scilab pour calculer le vecteur unitaire u Rk tel que
(k)

(Ik 2uuT )v =k v k2 e1 ,

(1)
(k)

o`
u e1 = (1, 0, . . . , 0)T Rk . Calculer u pour le vecteur v = (1, 1, 1, 1)T et verifier
legalite en (1).
2.2. Programmer une fonction [Q,R]=HH(A) qui rend les matrices Q et R dans la decomposition
QR de la matrice A Mmn (R) par la methode de Householder (voir point 3.3.5 du
cours).
2.3. Tester la fonction HH pour les matrices de question 1.2. et 1.3. Comparer les resultats
obtenus avec celles obtenus par la commande qr de Scilab.

3. Les probl`
emes de moindres carr
es
3
Soit donne un nuage de points {(xk , yk , zk )}m
k=1 R . Nous souhaitons trouver un plan

sous la forme z = h(x, y) = n0 + n1 x + n2 y de sorte que pour les points de notre nuage, la
P
2
distance m
k=1 |zk h(xk , yk )| soit minimum.
3.1. Verifier quil sagit dun probl`eme aux moindres carres cest-`a-dire, exprimer A, b
et x en fonction des donnes et des inconnus.
3.2. Programmer une fonction [x]=MC(A,b) qui, `a laide dune decomposition QR par
la methode de Householder, rend la solution x du probl`eme
min{k b Ax k : x Rn }
(voir point 3.1.6 du cours). On utilisera lalgorithme de remontee du TP1 pour
resoudre le syst`eme dequations
Rx = QT b.


3.3. Etant
donnes le nuage de points {(2, 2, 1), (3, 3, 2), (1, 4, 3), (5, 6, 4), (0, 3, 5)}, appliquer la fonction MC pour calculer la solution de Ax = b au sens des moindres
carres. Comparer le resultat obtenu avec celle obtenu par la commande pinv(A)*b
de Scilab.
3.4. Tracer le plan z = h(x, y) sur [0, 6] [0, 6] et les segments de projection
[(xk , yk , zk ), (xk , yk , h(xk , yk ))],

k = 1, . . . , m.

Indications : On pourra executer lexemple donne dans lAide de Scilab pour la


commande mesh afin de deduire comment tracer un plan en R3 . Enfin on pourra
tracer un segment de projection [(a1 , a2 , a3 ), (b1 , b2 , b3 )] en utilisant les commandes
suivantes :
param3d([a_1,b_1],[a_2,b_2],[a_3,b_3]);
p=get("hdl");
p.polyline_style=4;
p.thickness=3;
p.arrow_size_factor=1;

Vous aimerez peut-être aussi