Poichè una matrice simmetrica e definita positiva si può
fattorizzare come
con
matrice triangolare inferiore,
allora per generare le nostre matrici di prova, utilizzeremo
proprio questa proprietà
» r=tril(round(5*rand(10)))
r =
5 0 0 0 0 0 0 0 0 0
4 2 0 0 0 0 0 0 0 0
2 1 1 0 0 0 0 0 0 0
1 1 2 2 0 0 0 0 0 0
5 3 2 5 4 0 0 0 0 0
5 3 0 1 1 2 0 0 0 0
4 1 4 0 0 1 2 0 0 0
3 4 4 4 4 0 0 2 0 0
3 1 2 5 3 5 2 1 1 0
1 4 4 2 2 3 2 3 4 4
» a=r*r'
a =
25 20 10 5 25 25 20 15 15 5
20 20 10 6 26 26 18 20 14 12
10 10 6 5 15 13 13 14 9 10
5 6 5 10 22 10 13 23 18 17
25 26 15 22 79 43 31 71 59 43
25 26 13 10 43 40 25 35 36 27
20 18 13 13 31 25 38 32 30 31
15 20 14 23 71 35 32 77 55 57
15 14 9 18 59 36 30 55 79 57
5 12 10 17 43 27 31 57 57 95
» A=fattldlt(a)
A =
Columns 1 through 4
25.00000000000000 20.00000000000000 10.00000000000000 5.00000000000000
0.80000000000000 4.00000000000000 10.00000000000000 6.00000000000000
0.40000000000000 0.50000000000000 1.00000000000000 5.00000000000000
0.20000000000000 0.50000000000000 2.00000000000000 4.00000000000000
1.00000000000000 1.50000000000000 2.00000000000000 2.50000000000000
1.00000000000000 1.50000000000000 0 0.50000000000000
0.80000000000000 0.50000000000000 4.00000000000000 0
0.60000000000000 2.00000000000000 4.00000000000000 2.00000000000000
0.60000000000000 0.50000000000000 2.00000000000000 2.50000000000000
0.20000000000000 2.00000000000000 4.00000000000000 1.00000000000000
Columns 5 through 8
25.00000000000000 25.00000000000000 20.00000000000000 15.00000000000000
26.00000000000000 26.00000000000000 18.00000000000000 20.00000000000000
15.00000000000000 13.00000000000000 13.00000000000000 14.00000000000000
22.00000000000000 10.00000000000000 13.00000000000000 23.00000000000000
16.00000000000000 43.00000000000000 31.00000000000000 71.00000000000000
0.25000000000000 4.00000000000000 25.00000000000000 35.00000000000000
0 0.50000000000000 4.00000000000000 32.00000000000000
1.00000000000000 0 0 4.00000000000000
0.75000000000000 2.50000000000000 1.00000000000000 0.50000000000000
0.50000000000000 1.50000000000000 1.00000000000000 1.50000000000000
Columns 9 through 10
15.00000000000000 5.00000000000000
14.00000000000000 12.00000000000000
9.00000000000000 10.00000000000000
18.00000000000000 17.00000000000000
59.00000000000000 43.00000000000000
36.00000000000000 27.00000000000000
30.00000000000000 31.00000000000000
55.00000000000000 57.00000000000000
1.00000000000000 57.00000000000000
4.00000000000000 16.00000000000000
» l=tril(A,-1)+eye(10)
l =
Columns 1 through 4
1.00000000000000 0 0 0
0.80000000000000 1.00000000000000 0 0
0.40000000000000 0.50000000000000 1.00000000000000 0
0.20000000000000 0.50000000000000 2.00000000000000 1.00000000000000
1.00000000000000 1.50000000000000 2.00000000000000 2.50000000000000
1.00000000000000 1.50000000000000 0 0.50000000000000
0.80000000000000 0.50000000000000 4.00000000000000 0
0.60000000000000 2.00000000000000 4.00000000000000 2.00000000000000
0.60000000000000 0.50000000000000 2.00000000000000 2.50000000000000
0.20000000000000 2.00000000000000 4.00000000000000 1.00000000000000
Columns 5 through 8
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
1.00000000000000 0 0 0
0.25000000000000 1.00000000000000 0 0
0 0.50000000000000 1.00000000000000 0
1.00000000000000 0 0 1.00000000000000
0.75000000000000 2.50000000000000 1.00000000000000 0.50000000000000
0.50000000000000 1.50000000000000 1.00000000000000 1.50000000000000
Columns 9 through 10
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
1.00000000000000 0
4.00000000000000 1.00000000000000
» d=diag(A)
d =
25
4
1
4
16
4
4
4
1
16
» l*diag(d)*l'
ans =
25 20 10 5 25 25 20 15 15 5
20 20 10 6 26 26 18 20 14 12
10 10 6 5 15 13 13 14 9 10
5 6 5 10 22 10 13 23 18 17
25 26 15 22 79 43 31 71 59 43
25 26 13 10 43 40 25 35 36 27
20 18 13 13 31 25 38 32 30 31
15 20 14 23 71 35 32 77 55 57
15 14 9 18 59 36 30 55 79 57
5 12 10 17 43 27 31 57 57 95
» a
a =
25 20 10 5 25 25 20 15 15 5
20 20 10 6 26 26 18 20 14 12
10 10 6 5 15 13 13 14 9 10
5 6 5 10 22 10 13 23 18 17
25 26 15 22 79 43 31 71 59 43
25 26 13 10 43 40 25 35 36 27
20 18 13 13 31 25 38 32 30 31
15 20 14 23 71 35 32 77 55 57
15 14 9 18 59 36 30 55 79 57
5 12 10 17 43 27 31 57 57 95
»
esattamente la matrice di partenza.