Domanda su Fattorizzazione LU

quer
Salve , quando devo calcolare una fattorizzazione LU tramite Gauss , so applicare il Pivoting . Questo perchè calcolo la fattorizzazione passo per passo .

Ora se devo calcolare la Fattorizzazione tramite l'algoritmo di Crout , come faccio ad applicare un Pivoting mentre sto calcolando la fattorizzazione ?
Aiutatemi , su internet non ho trovato nulla

Risposte
vict85
Si fa in modo del tutto simile alle altre varianti della fattorizzazione di Gauss. Prima di iniziare ad aggiornare la nuova riga e la nuova colonna si trova il pivot e si scambiano le righe.

quer
Gli unici fattori che possono dare problemi se =0 sono L11 , L22,L33 ??

Se avessi tempo , mi faresti un grande favore a postare un esempio . Ciò che non mi è chiaro è come modificare le equazioni di Crout già risolte , nel caso in cui dovessi applicare un pivoting

vict85
L11, L22, L33!? Ma devi calcolarlo a mano? Comunque per le matrici \(\displaystyle 3\times 3 \) i valori sono quelli.

In ogni caso non devi aspettare di utilizzare materialmente quei valori, la ricerca del pivot va fatta prima di ogni altra operazione di quella ripetizione del ciclo più esterno.

quer
Sono stato bocciato allo scritto perchè non sapevo come applicare ( a mano ) l'algoritmo di Crout su una matrice.

Credo che Crout vada usato solo se la matrice non neccessiti di pivoting e nel caso contrario usare gauss

vict85
No, è solo una variante di Gauss. E puoi farci il pivoting. Ci sono 9 varianti delle decomposizione LU moltiplicate per infinite possibili condizioni sulle diagonali di L e U. Spero quindi di aver considerato la stessa variante che tu chiami Crout.

Sia \(\displaystyle A = \begin{pmatrix} 0 & 11 & 0 \\ 1 & 2 & 13 \\ 2 & 4 & 8 \end{pmatrix} \) (costruita apposta per dover fare sempre il pivoting).

Si ha quindi:
\begin{align} \begin{pmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix}A &= \begin{pmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix}\begin{pmatrix} 0 & 11 & 0 \\ 1 & 2 & 13 \\ 2 & 4 & 8 \end{pmatrix} \\
\begin{pmatrix} 0 & 0 & 1 \\ 0 & 1 & 0 \\ 1 & 0 & 0 \end{pmatrix}A &= \begin{pmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix}\begin{pmatrix} 2 & 4 & 8 \\ 1 & 2 & 13 \\ 0 & 11 & 0 \end{pmatrix} \\
\begin{pmatrix} 0 & 0 & 1 \\ 0 & 1 & 0 \\ 1 & 0 & 0 \end{pmatrix}A &= \begin{pmatrix} 2 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix}\begin{pmatrix} 1 & 2 & 4 \\ 1 & 2 & 13 \\ 0 & 11 & 0 \end{pmatrix} \\
\begin{pmatrix} 0 & 0 & 1 \\ 0 & 1 & 0 \\ 1 & 0 & 0 \end{pmatrix}A &= \begin{pmatrix} 2 & 0 & 0 \\ 1 & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix}\begin{pmatrix} 1 & 2 & 4 \\ 0 & 0 & 9 \\ 0 & 11 & 0 \end{pmatrix} \\
\begin{pmatrix} 0 & 0 & 1 \\ 1 & 0 & 0 \\ 0 & 1 & 0 \end{pmatrix}A &= \begin{pmatrix} 2 & 0 & 0 \\ 0 & 1 & 0 \\ 1 & 0 & 1 \end{pmatrix}\begin{pmatrix} 1 & 2 & 4 \\ 0 & 11 & 0 \\ 0 & 0 & 9 \end{pmatrix} \\
\begin{pmatrix} 0 & 0 & 1 \\ 1 & 0 & 0 \\ 0 & 1 & 0 \end{pmatrix}A &= \begin{pmatrix} 2 & 0 & 0 \\ 0 & 11 & 0 \\ 1 & 0 & 1 \end{pmatrix}\begin{pmatrix} 1 & 2 & 4 \\ 0 & 1 & 0 \\ 0 & 0 & 9 \end{pmatrix} \\
\begin{pmatrix} 0 & 0 & 1 \\ 1 & 0 & 0 \\ 0 & 1 & 0 \end{pmatrix}A &= \begin{pmatrix} 2 & 0 & 0 \\ 0 & 11 & 0 \\ 1 & 0 & 9 \end{pmatrix}\begin{pmatrix} 1 & 2 & 4 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix} \\
\end{align}

Pertanto \(\displaystyle P = \begin{pmatrix} 0 & 0 & 1 \\ 1 & 0 & 0 \\ 0 & 1 & 0 \end{pmatrix} \), \(\displaystyle L = \begin{pmatrix} 2 & 0 & 0 \\ 0 & 11 & 0 \\ 1 & 0 & 9 \end{pmatrix} \) e \(\displaystyle U = \begin{pmatrix} 1 & 2 & 4 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix} \)

quer
Grazie mille :)

A me tuttavia sembra uguale al metodo di Gauss , la prof nell'esame aveva specificatamente chiesto Crout e non Gauss , bohh



ps: Credo di aver capito , correggimi se sbaglio , la matrice che la Prof ha inserito nell'esame era Tridiagonale . Ci dovrebbe essere un metodo di Crout per matrici tridiagonali . Per come sono definite non credo sia possibile fare pivoting con esse

vict85
OK, quindi stiamo parlando di Crout per matrici tridiagonali. Hai bisogno di trovare l'algoritmo? https://en.wikipedia.org/wiki/Tridiagon ... _algorithm

[edit] A quanto dice wiki se il metodo veloce non funziona, si passa ad utilizzare l'algoritmo standard.

quer
Gentilissimo grazie mille

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.