Sperimentazioni dell'algoritmo

Poichè una matrice simmetrica e definita positiva si può fattorizzare come $RR^T$ con $R$ 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.



Morpheus 2004-01-04