Re: eliminazione di Gauss- matrice a scalini

Messaggioda 3m0o » 03/09/2019, 16:28

cianfa72 ha scritto:
3m0o ha scritto:Poi continui prendendo come pivot \( a_{3,4} = -1/2 \). E ottieni continuando
$ [[1,2,-1,1],[0,0,1,-1/2], [0,0,0,1],[0,0,0,0]] $
Ed è a scalini.

E' proprio qui il mio dubbio: dalla letteratura (vedi per es https://www.youmath.it/lezioni/algebra-lineare/matrici-e-vettori/831-eliminazione-di-gauss.html step 4 algoritmo di Gauss) al passo 2 visto che gli elementi $ a_{i,2}^((2)) $ per $ i=2,3,4 $ sono tutti nulli si dovrebbe procedere considerando la sottomatrice ottenuta eliminando la seconda riga e la seconda colonna: $ [[-3,2],[-3,1]] $ ovvero $ [[3,-2],[3,-1]] $ nel tuo caso

Allora l'algoritmo lì è sbagliato o quanto meno è differente da quello che hanno dato a me! Difatti seguendo l'algoritmo otteniamo
$ [[1,2,-1,1],[0,0,2,-1], [0,0,3,-2],[0,0,3,-1]] $
Poi il punto 4) effettivamente dice di considerare la sottomatrice
$ [[0,2,-1], [0,3,-2],[0,3,-1]] $
Poi il punto 1) dice di andare direttamente al punto 4) che a sua volta dice di consdierare la matrice
$ [[3,-2],[3,-1]] $
Poi ottieni
$ [[3,-2],[0,-3]] $
Ed in fine ottieni pertanto
$ [[1,2,-1,1],[0,0,2,-1], [0,0,3,-2],[0,0,0,-3]] $
Che NON è ridotta a scalini. L'algoritmo corretto è il seguente
Operazioni di tipo I: Scambiare due righe della matrice
Operazioni di tipo II: Moltiplicare una riga della matrice per uno scalare non nullo
Operazioni di tipo III: Addizionare una riga della matrice per un multiplo scalare di un altra riga della matrice

Sia \( K \) un campo e \( A \in K^{n \times m } \). Se \( A = 0 \) è ridotta a scalini, se \( A \neq 0 \)
1) Sia \( j_1 \) il più piccolo indice colonna per il quale un coefficiente di \( A \) è non nullo, diremo \( a_{i,j_1} \neq 0 \). Per un operazione di tipo I scambiare la riga \( i \) con la riga \( 1 \) in modo da ottenere \( a_{1,j_1} \neq 0 \).
(Il punto 2) è per rendere i pivot uguali a 1)
2) Per un operazione di tipo II moltiplicare la prima riga per \( a_{1,j_1}^{-1} \) e otteniamo \( a_{1,j_1}=1 \)
3) Per una successione finita di operazioni di tipo III annulliamo tutti i coefficienti della \( j_1\)-esima colonna. È sufficiente infatti aggiungere \( -a_{k,j_1} \times \) la prima riga alla riga \(k \). In modo da ottenere una matrice della forma \[ A'= \begin{pmatrix}
0 & \ldots & 0 &1 & \star & \ldots & \star \\
0 & \ldots & 0 &0 & \star & \ldots & \star \\
\vdots & \vdots & \vdots &\vdots & \vdots & \vdots & \vdots \\
0 & \ldots & 0 &0 & \star & \ldots & \star \\
\end{pmatrix} \]
4) Porre \( B \) la matrice consistente della righe 2 alla riga \( n \) di \[ A' = \begin{pmatrix}
0 & \ldots & 0 &1 & \star & \ldots & \star \\
& & & & & & \\
& & & B & & & \\
& & & & & &
\end{pmatrix} \] (praticamente elimini la prima riga).
5) Sia \( j_2 \) il più piccolo indice colonna per la quale \( B \) possiede un coefficiente non nullo. Abbiamo certamente \( j_2 > j_1 \), effettuare la procedura da 1) a 3) alla matrice \(B\) per ottenere \( B' \) e sostituire \( B' \) al posto di \( B \) nella matrice \( A' \) per ottenere una matrice \( A'' \) della forma
\[ A'' = \begin{pmatrix}
0 & \ldots & 0 &1 & \star & \ldots & \star \\
& & & & & & \\
& & & B' & & & \\
& & & & & &
\end{pmatrix}=\begin{pmatrix}
0 & \ldots & 0 &1 & \star & \star & \star & \star& \ldots& \star\\
0 & \ldots & 0 &0 & \ldots & 0 & 1& \star&\ldots &\star \\
0 & \ldots & 0&0 & \ldots & 0 & 0&\star &\ldots &\star \\
\vdots & \ldots & \vdots &0 & \ldots & 0 & 0& \star& \ldots&\star \\
\end{pmatrix} \]
(Il punto 6) annulli i coefficiente sopra il pivot, ma non è necessario per una riduzione a scalini).
6) Con un operazione di tipo III annuliamo il coefficiente \( a_{1,j_2} \) alla riga 1. Questa operazione non modifica tutti gli elementi della prima riga di \( A'' \) precedenti della colonna \( j_2 \).
7) Ripetere la procedura fino a ottenere una matrice a scalini.

Credo che l'algoritmo del link che hai dato è valido aggiustando il loro punto 1) con il mio punto 1).
3m0o
Cannot live without
Cannot live without
 
Messaggio: 427 di 5334
Iscritto il: 02/01/2018, 15:00

Re: eliminazione di Gauss- matrice a scalini

Messaggioda 3m0o » 03/09/2019, 16:29

cianfa72 ha scritto:
3m0o ha scritto:Una matrice triangolare superiore è ridotta a scalini.
\[ \begin{pmatrix} a_{1,1} & a_{1,2} &\ldots & \ldots& a_{1,n} \\ 0& a_{2,2} & \ldots & \ldots& a_{2,n} \\ 0& 0 &a_{3,3}& \ldots& a_{3,n} \\ \vdots& \ddots & \ddots & \ddots& \vdots \\ 0& 0 & \ldots & 0&a_{n,n} \end{pmatrix} \]
È ridotta a scalini con pivot gli elementi sulla diagonale.

Non ne sono sicuro....per es prendi il caso in cui $a_{2,2}=0$ e $a_{3,3}!=0$

Hai ragione, ma devi aggiungere la condizione \( a_{2,3} \neq 0 \)
3m0o
Cannot live without
Cannot live without
 
Messaggio: 428 di 5334
Iscritto il: 02/01/2018, 15:00

Re: eliminazione di Gauss- matrice a scalini

Messaggioda axpgn » 03/09/2019, 16:55

@3m0o
Se l'OP legge il link che gli ho scritto non dovrebbe avere problemi :D
axpgn
Cannot live without
Cannot live without
 
Messaggio: 14031 di 40668
Iscritto il: 20/11/2013, 22:03

Re: eliminazione di Gauss- matrice a scalini

Messaggioda cianfa72 » 03/09/2019, 17:02

ok mi torna, grazie 3m0o.

In realta' l'algoritmo a cui facevo riferimento dovrebbe ritornare una matrice triangolare superiore (anche se non è detto a scalini). In effetti la matrice prima calcolata da 3m0o:

$ [[1,2,-1,1],[0,0,2,-1], [0,0,3,-2],[0,0,0,-3]] $

è triangolare superiore con elemento diagonale $a_{2,2}=0$

Il mio dubbio si lega alla fattorizzazione LU in cui la matrice U (triangolare superiore) si calcola mediante l'algoritmo di Gauss. In quel caso penso sia sufficiente anche la versione che ritorna appunto una matrice triangolare superiore non necessariamente a scalini.

Come la vedete ?
cianfa72
Junior Member
Junior Member
 
Messaggio: 18 di 438
Iscritto il: 02/09/2009, 11:05
Località: Roma

Re: eliminazione di Gauss- matrice a scalini

Messaggioda axpgn » 03/09/2019, 17:07

Sinceramente non vedo il motivo di usare un algoritmo "diverso" che non dà nessun vantaggio pratico ma può introdurre errori … IMHO
axpgn
Cannot live without
Cannot live without
 
Messaggio: 14032 di 40668
Iscritto il: 20/11/2013, 22:03

Re: eliminazione di Gauss- matrice a scalini

Messaggioda cianfa72 » 03/09/2019, 17:27

axpgn ha scritto:Sinceramente non vedo il motivo di usare un algoritmo "diverso" che non dà nessun vantaggio pratico ma può introdurre errori … IMHO

Mi trovi d'accordo....il punto che mi ha portato 'fuori strada' - che onestamente mi suona strano - è che diverse sorgenti definiscono l'algoritmo di Gauss come al primo link postato (vedi anche il link Wikipedia sull'argomento) :shock:
cianfa72
Junior Member
Junior Member
 
Messaggio: 19 di 438
Iscritto il: 02/09/2009, 11:05
Località: Roma

Re: eliminazione di Gauss- matrice a scalini

Messaggioda 3m0o » 03/09/2019, 17:47

Probabile esista un algoritmo per la decomposizione \( LU \), con \( L \) triangolare inferiore e \( U \) triangolare superiore, in ogni caso supponi che la matrice \( A \) si riduce a scalini senza utilizzare operazioni di tipo I. Infatti
Sia \( K \) un corpo e siano \( E_1, \ldots, E_t \in K^{n \times n} \) le matrici elementari corrispondenti alle mosse di Gauss.
\( E_i \) è uguale \( D_r(\lambda) \) per un certo \( 1 \leq r \leq n \) e \( \lambda \in K \) oppure \( L_{rs}(\lambda) \) per \( \lambda \in K \) e per \( 1 \leq s < r \leq n \). Dove \( D_r(\lambda) \) è la matrice corrispondente all operazione di tipo II e, ovvero moltiplichi la riga \( r \) per \( \lambda \), mentre \( L_{rs}(\lambda) \) è la matrice corrsipondente al operazione di tipo III, ovvero aggiungi \( \lambda \) volte la riga \( s \) alla riga \( r \).

Inoltre abbiamo che \( E_1 \ldots E_t A \) è ridotta a scalini e dunque triangolare superiore.
Abbiamo inoltre che \( E_i \) è triangolare inferiore così come le loro inverse. Inoltre il prodotto di matrici triangolari inferiori è ancora una matrice triangolare inferiore. Pertanto \( A = (E_t^{-1} \ldots E_1^{-1})(E_1\ldots E_tA) \) dunque \( L:= E_t^{-1} \ldots E_1^{-1} \) e \( U:=E_1\ldots E_tA \) ci da la decomposizione \( LU \). Fondamentalmente puoi fare Gauss e segnarti di fianco le matrici ad ogni passo. Poi le moltriplichi, calcoli l'inversa e ottieni \( L \), mentre la riduzione a scalini di \( A \) è \( U \). Visto che l'algoritmo al punto 1) utilizza un operazione di tipo I, e qui per ipotesi le operazioni di tipo I non vengono utilizzate allora significa che gli elementi sulla diagonale di \( A \) non sono nulli e non è possibile ottenere un caso in cui hai tutta una colonna nulla.
Se invece per ridurre a scalini la matrice \(A \) utilizzi delle operazioni di tipo I non sono sicuro che tu possa fare la decomposizione \( LU \). Ma puoi decomporla in \( A= P LU \) dove \( P \) è il prodotto delle matrici di permutazione dell operazione I.

Edit: In ogni caso l'algoritmo del link è errato, se anche su wikipedia è segnato così (non ho controllato) vuol dire che è errato anche quello, apri una discussione su wikipedia e vedi un po' cosa ti dicono.
3m0o
Cannot live without
Cannot live without
 
Messaggio: 429 di 5334
Iscritto il: 02/01/2018, 15:00

Re: eliminazione di Gauss- matrice a scalini

Messaggioda cianfa72 » 03/09/2019, 18:59

3m0o ha scritto:Visto che l'algoritmo al punto 1) utilizza un operazione di tipo I, e qui per ipotesi le operazioni di tipo I non vengono utilizzate allora significa che gli elementi sulla diagonale di \( A \) non sono nulli e non è possibile ottenere un caso in cui hai tutta una colonna nulla.

Qui immagino intendi gli elementi diagonali \( a_{k,k}^{(k)} \) delle varie \( A^{(k)} \) che devono ovviamente risultare non nulli affinche' l'algoritmo di eliminazione possa procedere senza richiedere scambio di righe. Tra l'altro se la matrice \( A \) ha rango \( k \) la richiesta sopra dovrebbe applicarsi per i soli primi \( k \) step dell'algoritmo.

Ad esempio per la seguente matrice con rango 2

\( \begin{bmatrix}
1 & 2 & 0 \\
-1 & 1 & 0 \\
1 & -1 & 0
\end{bmatrix} \rightarrow
\begin{bmatrix}
1 & 2 & 0 \\
0 & 3 & 0 \\
0 & -3 & 0
\end{bmatrix} \rightarrow
\begin{bmatrix}
1 & 2 & 0 \\
0 & 3 & 0 \\
0 & 0 & 0
\end{bmatrix} \)

ps. a beneficio di tutti posto il link di un riferimento in rete che mi sembra molto ben fatto :wink:
cianfa72
Junior Member
Junior Member
 
Messaggio: 20 di 438
Iscritto il: 02/09/2009, 11:05
Località: Roma

Re: eliminazione di Gauss- matrice a scalini

Messaggioda 3m0o » 04/09/2019, 13:11

Si intendevo quello. E credo tu abbia ragione sulla matrice di rango \(k \).
Comunque prendendo il tuo esempio, puoi decomporla in \( LU \) ponendo \( U = \begin{bmatrix} 1 & 2 & 0 \\ 0 & 3 & 0 \\ 0 & 0 & 0 \end{bmatrix} =L_{23}(1) \cdot L_{13}(-1) L_{12}(1) A \), dove \( A \) è la matrice di partenza, e le operazioni che hai effettuato sono \( L_{12}(1) \), \( L_{13}(-1) \) e \( L_{23}(1) \) inoltre le matrici inverse sono rispettivamente \( L_{12}(-1) \), \( L_{13}(1) \), \( L_{23}(-1) \), allora per trovare la matrice \( L \) è sufficiente moltiplicare

\[ L= L_{12}(-1) \cdot L_{13}(1) \cdot L_{23}(-1) = \begin{bmatrix} 1 & 0 & 0 \\ -1 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 1 & 0 & 1 \end{bmatrix}\begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & -1 & 1 \end{bmatrix} = \begin{bmatrix} 1 & 0 & 0 \\ -1 & 1 & 0 \\ 1 & -1 & 1 \end{bmatrix} \]
E difatti
\[ A = \begin{bmatrix} 1 & 0 & 0 \\ -1 & 1 & 0 \\ 1 & -1 & 1 \end{bmatrix} \begin{bmatrix} 1 & 2 & 0 \\ 0 & 3 & 0 \\ 0 & 0 & 0 \end{bmatrix} = \begin{bmatrix} 1 & 2 & 0 \\ -1 & 1 & 0 \\ 1 & -1 & 0 \end{bmatrix} \]
3m0o
Cannot live without
Cannot live without
 
Messaggio: 430 di 5334
Iscritto il: 02/01/2018, 15:00

Re: eliminazione di Gauss- matrice a scalini

Messaggioda cianfa72 » 04/09/2019, 13:56

3m0o ha scritto:Si intendevo quello. E credo tu abbia ragione sulla matrice di rango \( k \).
Comunque prendendo il tuo esempio, puoi decomporla in \( LU \) ponendo \( U = \begin{bmatrix} 1 & 2 & 0 \\ 0 & 3 & 0 \\ 0 & 0 & 0 \end{bmatrix} =L_{23}(1) \cdot L_{13}(-1) L_{12}(1) A \), dove \( A \) è la matrice di partenza, e le operazioni che hai effettuato sono \( L_{12}(1) \), \( L_{13}(-1) \) e \( L_{23}(1) \) inoltre le matrici inverse sono rispettivamente \( L_{12}(-1) \), \( L_{13}(1) \), \( L_{23}(-1) \)

Chiedo scusa, nella tua notazione le matrici \( L_{rs}(p) \) dovrebbero essere le 'elementary matrices' di tipo \( L_i \) descritte al link impiegate per addizionare un multiplo della riga $r$ alla riga $s$ sottostante.
Ad esempio \( L_{13}(-1) \) la matrice elementare che addiziona la prima riga moltiplicata per $-1$ alla terza riga, corretto ?
cianfa72
Junior Member
Junior Member
 
Messaggio: 21 di 438
Iscritto il: 02/09/2009, 11:05
Località: Roma

PrecedenteProssimo

Torna a Geometria e algebra lineare

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite