Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Facultad de Ingeniería
Programación II
Profesor: Francisco Fuentes
Febrero, 2016
CONTENIDO
Método de Gauss
Método de Gauss-Jordan
METODO
DE
GAUSS
Método de Gauss para calcular la Solución
de un Sistema de Ecuaciones Lineales
A x = b, Ec. 1 , donde:
a11 a12 a13 ... a1n b1 x1
a21 a22 a23 ... a2n b2 x2
A= . . . . b= . x= .
an1 an2 an3 ... ann bn xn
Método de Gauss para calcular la Solución de
un Sistema de Ecuaciones Lineales
Retomando la Ec. 1
Ax=b
Pre-multiplicando a ambos lados por A-1, nos queda:
A-1 . A x = A-1 . b
De la definición de matriz inversa A-1 .A = I, entonces
I . x = A-1 . b
Método de Gauss para calcular la Solución
de un Sistema de Ecuaciones Lineales
Quedamos en:
I . x = A-1 . b
La matriz identidad I es el elemento neutro de la
multiplicación de matrices ( I.x = x ), de aquí:
x = A-1 . b Ec. 2
La Ec. 2 nos da la solución del sistema de
ecuaciones, solo tenemos que calcular la inversa de
la matriz A y multiplicarla por el vector b
Método de Gauss para calcular la Solución
de un Sistema de Ecuaciones Lineales
Procedimiento MultiV
for (i=1;i<=3;i++)
{ Ejemplo: Matriz A 3x3
t[ i ] = 0;
for (j=1;j<=3;j++)
{
t[ i ] = t[ i ] + f[ i ][ j] * y[ j ] ;
}
}
Esquema de uso de procedimientos
Proced. Proced.
Matriz A Matriz Aext Matriz AI
Extender Gauss
Matriz
Matriz AI Proced.
Vector x
Vector b Multiv
Ejemplo 18 (Ejercicio # 44 de la guía de
la unidad III)
A x = b, Ec. 1 , donde:
a11 a12 a13 ... a1n b1 x1
a21 a22 a23 ... a2n b2 x2
A= . . . . b= . x= .
an1 an2 an3 ... ann bn xn
Método de Gauss-Jordan para calcular la
Solución de un Sistema de Ecuaciones Lineales
Este método usa también el proceso de
eliminación gaussiana.
Su diferencia radica en la matriz extendida R, ya
que esta aquí se forma con la matriz A y el vector
b, es decir nos queda:
Ejemplo: Matriz A de rango 3x3
Matriz A Vector b
a11 a12 a13 b1
R = a21 a22 a23 b2
a31 a32 a33 b3 3x4
Método de Gauss-Jordan para calcular la
Solución de un Sistema de Ecuaciones Lineales
Al final tenemos que llegar a:
Matriz I Vector x
1 0 0 x1
R = 0 1 0 x2
0 0 1 x3 3x4
Proced. Proced.
Matriz A Matriz Aext Vector x
Extender Gaussj
Matrizgj
Procedimiento Extendermatrizgj - ejemplo 3x3
void extendermatrizgj(double w[ ][4], double t[ ], double r[ ][5])
{
int i,j; for (i=1;i<=3;i++)
for (i=1;i<=3;i++) {
{ r[ i ] [ 4 ] = t[ i ];
for (j=1;j<=3;j++) }
{
r[ i ][ j ] = w[ i ][ j ] ; }
}
}
Procedimiento Gaussj - ejemplo 3x3
void gaussj(double r[ ][5], double t[ ])
{ for (i= 1;i<=3;i++)
int m,i,j; {
double g, q; if ( i != m )
for (m=1;m<=3;m++) {
{ q = r[i ][ m] ;
g = r[m ][m] ; for (j=1;j<=4;j++)
if (g !=0) {
{ r[i ][ j] = r[ i][ j] -r[ m][ j]*q ;
for (j=1;j<=4;j++) }
{ }
r[m][ j] = r[m][j] / g; }
} } /* if (g!=0) */
} /* for m */
Procedimiento Gaussj - ejemplo 3x3
( Continuación )
for (i=1;i<=3;i++)
{
t[ i ] =r[i ][ 4 ] ;
}
}
Ejemplo 19 (Ejercicio # 47 de la guía de
la unidad III)
#include <stdio.h>
#include <conio.h>
double a[4][4], b[4], x[4];
double aext[4][5];
void leermatriz( double w[ ][4], char x);
void leervector( double w[ ], char x);
void escribirmatriz( double w[ ][4], int colin, int filin);
void escribirvector( double w[ ], int colin, int filin);
void extendermatrizgj(double w[ ][4], double t[ ], double r[ ][5])
void gaussj(double r[ ][5], double t[ ] );;
Ejemplo 19 (Ejercicio # 47 de la guía de la unidad III)
void main( ) Completar:
{ Leermatriz 3x3, Leervector 3x3
leermatriz( a, ‘a’); escribirmatriz 3x3, escribirvector 3x3
leervector(b, ‘b’); extendermatriz 3x3, gauss 3x3
extendermatrizgj(a,b,aext);
gaussj(aext, x);
clrscr();
escribirmatriz(a,10,2);
escribirvector(b,50,2);
escribirvector(x,30,14);
getch( );
}
METODO
DE
GAUSS-SEIDDEL
Método de Gauss para calcular la Solución
de un Sistema de Ecuaciones Lineales
Procedimiento:
a.- Se debe despejar las variables x de cada una de las
ecuaciones anteriores. Esto debe hacerse en orden, es decir,
despejar x1 de la ecuación 1, x2 de la ecuación 2 y así hasta la
ultima ecuación del sistema.
d2 = x21 - x20
dn = xn1 - xn0
Ejemplo:
Sea el sistema de ecuaciones lineales de
orden 3:
3.0 x1 - 0.1 x2 - 0.2 x3 = 7.85
0.1 x1 + 7.0 x2 - 0.3 x3 = -19.30
0.3 x1 - 0.2 x2 + 10.0 x3 = 71.40
Método de Gauss para calcular la Solución
de un Sistema de Ecuaciones Lineales
Con la ecuación (2) y los valores de X10 y x3 = 0 :
X20 = -2.794523
X30 = 7.005609
Método de Gauss para calcular la Solución
de un Sistema de Ecuaciones Lineales
d.- Con la ecuación (1) y los valores de X20 y X30 :
X11 = 2.990556
Con la ecuación (2) y los valores de X11 y X30 :
X21 = -2.499624
X31 = 7.000290
Método de Gauss para calcular la Solución
de un Sistema de Ecuaciones Lineales
X23 = -2.500000
X33 = 7.000000
Matriz A Proced.
Vector x
Vector b Seiddel
Ejemplo 20 (Ejercicio # 52 de la guía de
la unidad III)
#include <stdio.h>
#include <conio.h>
double a[4][4], b[4], x[4];
void leermatriz( double w[ ][4], char x);
void leervector( double w[ ], char x);
void escribirmatriz( double w[ ][4], int colin, int filin);
void escribirvector( double w[ ], int colin, int filin);
void seiddel( double w[ ][4], double y[ ], double t[ ]);
Ejemplo 20 (Ejercicio # 52 de la guía de la unidad III)
void main( )
{
leermatriz(a,'a');
leervector(b,'b');
seiddel(a,b,x);
clrscr();
escribirmatriz(a,10,2);
escribirvector(b,50,2);
escribirvector(x,30,14);
getch();
}
Ejemplo 20 (Ejercicio # 52 de la guía de la unidad III)
void seiddel(double w[][4], double y[], double t[])
{
double xp[4],d1,d2,d3,e;
int i,j,f;
double g,q;
t[2]=0;
t[3]=0;
t[1] = (y[1] - w[1][2]*t[2] -w[1][3]*t[3]) / w[1][1];
t[2] = (y[2] - w[2][1]*t[1] -w[2][3]*t[3]) / w[2][2];
t[3] = (y[3] - w[3][1]*t[1] -w[3][2]*t[2]) / w[3][3];
Ejemplo 20 (Ejercicio # 52 de la guía de la unidad III)
xp[1] = t[1];
xp[2] = t[2];
xp[3] = t[3];
f = 0;
e = 0.0001;
i = 0;
while (f == 0)
{
i = i + 1;
t[1] = ( y[1] - w[1][2]*t[2] -w[1][3]*t[3] ) / w[1][1];
t[2] = ( y[2] - w[2][1]*t[1] -w[2][3]*t[3] ) / w[2][2];
t[3] = ( y[3] - w[3][1]*t[1] -w[3][2]*t[2] ) / w[3][3];
Ejemplo 20 (Ejercicio # 52 de la guía de la unidad III)
d1 = fabs(t[1] - xp[1]);
d2 = fabs(t[2] - xp[2]);
d1 = fabs(t[3] - xp[3]);
if ( (d1 < e) && (d2 < e) && (d3< e) )
{
f = 1;
}
else
{ xp[1] = t[1];
xp[2] = t[2];
xp[3] = t[3];
}
} /* While */
}
Ejemplo 20 (Ejercicio # 52 de la guía de la unidad III)
Completar :
Leermatriz 3x3
Leervector 3x3
Escribirmatriz 3x3
Escribirvector 3x3