La fattorizzazione di una matrice simmetrica definita positiva
A nella forma LLT, con L triangolare inferiore, è associata
al metodo di Cholesky. Per ottenere un algoritmo che calcoli la
matrice L basta scrivere elemento per elemento la relazione
A=LLT:
for (j=0; j<n; j++) { for (sum=k=0; k<j; k++) sum += l[j][k]*l[j][k]; l[j][j] = sqrt( a[j][j]-sum ); for (i=j+1; i<n; i++) { for (sum=k=0; k<j; k++) sum += l[i][k]*l[j][k]; l[i][j] = (a[i][j] - sum)/l[j][j]; } }
Tramite la fattorizzazione LLT è si possono risolvere sistemi lineari molto più velocemente che col metodo di Gauss (perché si riesce a sfruttare il fatto che A è definita positiva). Il sistema si trasforma in , che viene risolto risolvendo successivamente e . Si tratta di due sistemi con matrice triangolare: il primo si risolve con una forward substitution:
for (i=0; i<n; i++) { sum = 0.; for (j=0; j<i; j++) sum += l[i][j]*y[j]; y[i] = (b[i] - sum) / l[i][i]; }ed il secondo con un'analoga backsubstitution:
for (i=n-1; i>=0; i--) { sum = 0.; for (j=i+1; j<n; j++) sum += l[j][i]*x[j]; x[i] = (y[i] - sum) / l[i][i]; }
Se la matrice A non è definita positiva, il processo di fattorizzazione si blocca perché trova un radicando negativo. Nella pratica, questo è un buon modo per testare se una matrice data è definita positiva (un altro modo sarebbe calcolare gli autovalori, ma è molto più dispendioso!).
Una implementazione del metodo di Cholesky per la fattorizzazione LLT e la risoluzione di sistemi lineari si trova in llt.c.