Solución de sistemas de ecuaciones algebraicas lineales
a11x1 + a12x2 + a13x3 + ….+ a1nxn = b1
a21x1 + a22x2 + a23x3 + ….+ a2nxn = b2
…
…
an1x1 + an2x2 + an3x3 + ….+ annxn = bn
[A]{X}={B}
[A] =
{X} =
x1
x2
..
xn
a11 a12 a13….a1n
a21 a22 a23….a2n
..
an1 an2 an3….ann
{B} =
b1
b2
..
bn
Solución de sistemas de
ecuaciones algebraicas lineales
Métodos directos
Eliminación de Gauss
Eliminación de Gauss-Jordan
Descomposición LU
Métodos iterativos
Gauss-Seidel
Eliminación simple de Gauss
1.- Eliminación hacia delante
2.- Sustitución hacia atrás
[A|B]
=
a11 a12 a13 | b1
a21 a22 a23 | b2
a31 a32 a33 | b3
1.- Eliminación hacia delante:
[ A’ ] =
a11 a12 a13 | b1
a’22 a’23 | b’2
a’’33 | b’’3
2.- Sustitución hacia delante:
x3 = b’’3 / a’’33
x2 = ..
x1 = ..
Sistema tringular superior
Eliminación hacia delante
a11x1 + a12x2 + a13x3 = b1
a21x1 + a22x2 + a23x3 = b2
a31x1 + a32x2 + a33x3 = b3
Eliminar x1 a partir de la segunda ecuación. Para ello:
Multiplicar la primera ecuación (renglón pivote) por a21 / a11, (a11 es el elemento pivote ) así
a21x1 + (a21 / a11) a12 x2 + (a21 / a11) a13 x3 = (a21 / a11) b1
y restar la segunda ecuación de este resultado:
__
a21x1 + a22x2 + a23x3 = b2
a21x1 + (a21 / a11) a12 x2 + (a21 / a11) a13 x3 = (a21 / a11) b1
_______________________________________________
a’22x2 + a’23x3 = b’2
Hacer los mismo con la tercera ecuación, es decir
Multiplicar la primera ecuación por a31 / a11 , así
a31x1 + (a31 / a11) a12 x2 + (a31 / a11) a13 x3 = (a31 / a11) b1
y restar la tercera ecuación de este resultado, de donde se obtiene:
a’32x2 + a’33x3 = b’3
a11x1 + a12x2 + a13x3
=
b1
a’22x2 + a’23x3
=
b’2
a’32x2 + a’33x3
=
b’3
Ahora se repite el procedimiento para eliminar la segunda incógnita x2 a
partir de la tercera ecuación.
(Renglón pivote = Segunda ecuación. Elemento pivote = a’22)
a11x1 + a12x2 + a13x3
= b1
a’22x2 + a’23x3 = b’2
a’’33x3 = b’’3
Sustitución hacia atrás
De la última ecuación se despeja x3
x3 = b’’3 / a’’33 y después x2 , etc. Así:
i 1
bi
xi 
n


j i1
a
i 1
ii
i 1
a ij x j
; i  n  1, n  2,... 1
Eliminación de Gauss con pivoteo
10x1
+ x2
-
-20x1 + 3x2
5x1
5x3 = 1
+ 20x3 = 2
+ 3x2
+ 5x3 = 6
10
1
-5 |
1
-20
3
20
|
2
-20
3
-20
3
20 |
2
10
1
-5
|
1
0
2.5
5
3
5 |
6
5
3
5
|
6
0
3.75 10 |
-20
3
20 |
2
-20
3
0
3.75 10 |
6.5
0
0
2.5
2
0
5
|
20
|
2
3.75 10
|
6.5
0
|
-2.333
-1.66
20 |
5
|
2
2
6.5
#define N 3
Seudo código que realiza
a) la eliminación hacia delante y b ) la
sustitución hacia atras
Figura 9.4
// a)
a)
DO k = 1, n – 1
DO i = k + 1, n
factor = a i , j / a k , k
DO j = k + 1 to n
a i , j = a i , j + factor . a k , j
END DO
b i = b i – factor . b k
END DO
END DO
b)
…
…
void gaussSimple(double a[N][N], double b[])
{
int i, j, k, n = N;
double factor;
for( k = 0; k < n – 1; i++)
{
for( i = k + 1, i < n; i++)
{
factor = a[i][j] / a[k][k] ;
for( j = k + 1; j < n; j++)
a[i][j] = a[i][j] – factor * a[k][j];
b[i] = b[i] – factor * b[k];
}
}
// b)
…
…
}
Gauss-Seidel
•
•
•
•
•
•
a11x1 + a12x2 + a13x3 = b1
a21x1 + a22x2 + a23x3 = b2
a31x1 + a32x2 + a33x3 = b3
x1 = ( b1 - a12x2 - a13x3 ) / a11
x2 = ( b2 - a21x1 - a23x3 ) / a22
x3 = ( b3 - a31x1 - a32x2 ) / a33
x1 = b1 / a11 - 0 – 0
x2 = ( b2 - a21x1 – 0) / a22
x3 = ( b3 - a31x1 - a32x2 ) / a33
Proponemos valores
iniciales, por ejemplo:
x1 = x2 = x3 = 0
Descargar

Solución de sistemas de ecuaciones algebraicas lineales