Gauss Risoluzione Sistemi Lineari (superiori)
Gauss e la risoluzione di un sistema di equazioni lineari
Metodo dell'eliminazione Gaussiana
Per risolvere un sistema di equazioni lineari ci sono diversi metodi, fra quelli diretti più semplici c'è il metodo di Gauss.
Alla base del metodo c'è la considerazione che dato un sistema di equazioni lineari è possibile trasformarlo in un sistema di equazioni equivalenti (cioè con le stesse soluzioni del precedente). Un sistema equivalente lo si ottiene
- scambiando 2 equazioni fra di loro,
- oppure moltiplicando una equazione per una costante ,
- oppure sostituendo a una equazione la combinazione lineare della stessa equazione con un'altra ( un caso particolare di questa regola è la sostituzione di una equazione con la somma della stessa e di un'altra).
Naturalmente l'intenzione è quella di passare da un sistema a un sistema equivalente che sia più semplice da risolvere.
Codifichiamo adesso la soluzione utilizzando Octave
A=[2 3 4 5 6; 3 7 8 9 2; 4 8 0 6 1; 5 9 6 4 3; 5 2 -4 4 3] b=[2; 3; 6; 0; 3 ] nr=5; nc=5; %questa è la soluzione calcolata con Cramer %sol1=inv(A)*b
%triangolarizzo
for r= 1 : nr-1 for rx= r+1 : nc k= -A(r,r)/A(rx,r); A(rx,:)=k*A(rx,:)+A(r,:); b(rx,1)=k*b(rx,1)+b(r,1); end end %ricavo l'ultima incognita x(nr,1) = b(nr,1)/A(nr,nr); %ricavo le rimanenti incognite iterativamente for r= nr-1:-1:1 somma=0; for k= r+1:nc somma=x(k,1)*A(r,k)+somma; end x(r,1)=( b(r,1)-somma)/A(r,r); end x
Quando si sceglie una equazione riga k (quelle delle righe gialle nelle immagini) che viene usata per realizzare una combinazione lineare con una equazione delle successive righe k+i al fine di eliminare l'incognita xk, può capitare che nell'equazione k il coefficiente dell'incognita k sia nullo , allora non possiamo utilizzarla e si deve cercare fra le righe successive una equazione riga y con il coefficiente dell'incognita k diverso da zero e scambiare le due equazioni (riga y e riga k) fra loro. La scelta dell'equazione k da usarsi viene indicata come scelta della equazione di pivot. Certe volte è conveniente scambiare l'equazione di riga k con una di riga y (successiva) anche se il coefficiente dell'incognita k non è nullo ma molto piccolo, questo per evitare moltiplicatori nei passaggi successivi troppo grandi che aumentano gli errori di arrotondamento ( è quello che succede nell'esempio del codice di Octave scritto prima), per aumentare la stabilità del metodo risolutivo (algoritmo)come riga di pivot posso prendere quella con coefficiente nella colonna k che sia in modulo maggiore delle altre righe (da k in giu').