Вы находитесь на странице: 1из 6

Facultad de Ingeniería. Universidad Nacional de Salta.

ANALISIS NUMERICO - Ingeniería Química

AÑO 2011

Trabajo Práctico Nº 2

Sistema de Ecuaciones Lineales. Método de eliminación de Gauss

GRUPO: ANIQ18
ALUMNOS:
Melisa Betsabe Garzon. LU: 306932
noelia del carmen vera. LU: 306523
David Dionisio Varas Santander. LU: 305495
FECHA DE PRESENTACIÓN: 29/03/11
GUÍA DE TRABAJO PRÁCTICO Nº 18

Página 1
Facultad de Ingeniería. Universidad Nacional de Salta.

PROBLEMA 1
/* TRABAJO PRÁCTICO 2 */
/* Sistemas lineales. Método de Gauss Básico*/
#include \"U:\\ANQLib\\anqlib.h\"
#include \"U:\\errores.h\"
#include <math.h>
//DECLARACIÓN DE PROTOTIPOS DE FUNCIONES
//FUNCIONES QUE SE DEBEN MODIFICAR EN CADA TP
int Obtener_Datos(void);
int Aplicar_Metodo(void);
void MuestraResultados_en_Ventana(int error);
int Salida_en_Archivo(int error);
//declaración de variables globales
double a[100][101],x[100];
int n;
int main()
{
int error;
//Obtener los datos del problema
error=Obtener_Datos();
//Efectuar Cálculos
if(error==ERROR_OK) error=Aplicar_Metodo();
//Salida de resultados en archivo
if(error==ERROR_OK) error=Salida_en_Archivo(error);
//Mensajes en ventana
MuestraResultados_en_Ventana(error);
system(\"PAUSE\");
return error;
}
int Obtener_Datos()
{
int i,j,error;
char buffer_lectura[5000];//buffer para almacenar los datos del archivo
//Lectura de datos desde un archivo
error=LeeDatos_de_Archivo(\"sistema.txt\",buffer_lectura);
if(error) return ERROR_LECTURA_ARCHIVO;
//Obtener el número n
error=leeEntero(buffer_lectura,&n);
if(error) return ERROR_SINTAXIS;
//Obtener los coeficientes del sistema
for(i=1; i<=n; i++)
{
for(j=1; j<=n+1; j++)
{
error=leeDouble(buffer_lectura,&a[i][j]);
if(error) return ERROR_SINTAXIS;
}//j
}//i

Página 2
Facultad de Ingeniería. Universidad Nacional de Salta.

return ERROR_OK;
}
void MuestraResultados_en_Ventana(int error)
{
if(error!=ERROR_OK)
{//Verificar si se produjeron errores
if(error==ERROR_LECTURA_ARCHIVO) printf(\"No se puede abrir el archivo de datos.\\r\\n\");
if(error==ERROR_ESCRITURA_ARCHIVO) printf(\"No se puede abrir el archivo de salida.\\r\\n\");
if(error==ERROR_SINTAXIS) printf(\"Error de sintaxis en los datos.\\r\\n\");
if(error==ERROR_PIVOTE_PCERO) printf(\"Error. Pivote próximo a cero.\\r\\n\");
}
else{//mensaje de ejecución satisfactoria
printf(\"Ejecución sin errores\\r\\n\");
}
}
int Salida_en_Archivo(int error)
{
int i;
char buff_numero[100],buffer_salida[5000];
//escribir en el buffer el vector x
lstrcpy(buffer_salida,\"Solución\\r\\n\\r\\n\");
for(i=1; i<=n; i++)
{
lstrcat(buffer_salida,\"x[\");
ConvertirEntero_a_Texto(i,buff_numero); lstrcat(buffer_salida,buff_numero);
lstrcat(buffer_salida,\"]= \");
ConvertirDouble_a_Texto(x[i],6,buff_numero); lstrcat(buffer_salida,buff_numero);
lstrcat(buffer_salida,\"\\r\\n\");
}//for i
//escribir buffer_salida en archivo de salida
error=EscribeResultados_en_Archivo(\"salida.txt\",buffer_salida);
if(error) return ERROR_ESCRITURA_ARCHIVO;
return error;
}
int Aplicar_Metodo()
{
int i,j,k;
double m,s;
//Triangulación
for(k=1; k<=n; k++)
{
if(fabs(a[k][k]) <= 1.0e-8) return ERROR_PIVOTE_PCERO;
for(i=k+1; i<=n; i++)
{
m=a[i][k]/a[k][k];
for(j=k+1; j<=n+1; j++)
{
a[i][j]-=m*a[k][j];
}

Página 3
Facultad de Ingeniería. Universidad Nacional de Salta.

}//for i
}//for k
//Sustitución regresiva
for(i=n; i>=1; i--)
{
s=0.0;
for(j=i+1; j<=n; j++) s+=a[i][j]*x[j];
x[i]=(a[i][n+1]-s)/a[i][i];
}//for i
return ERROR_OK;
}

Página 4
Facultad de Ingeniería. Universidad Nacional de Salta.

PROBLEMA 2
SOLUCION:

CASO (a) CASO (b)


x[1]= 0.894724 x[1]= 1.000000
x[2]= 2.401448 x[2]= 1.000000
x[3]= -2.763064 x[3]= 1.000000
x[4]= 3.618609 x[4]= 1.000000

PROBLEMA 3
SOLUCION:

x[1]= 1.000000
x[2]= 1.000000
x[3]= 1.000000
x[4]= 1.000000
x[5]= 1.000000
x[6]= 1.000000

Página 5
Facultad de Ingeniería. Universidad Nacional de Salta.

PROBLEMA 4
PROBLEMA ORIGINAL: A|b - T(1)

7.700000 10.890000 10.780000 3.410000 | -1.920000


1.210000 9.570000 7.150000 0.770000 | -3.680000
9.460000 1.650000 3.190000 1.760000 | -4.780000
4.730000 3.410000 2.200000 2.090000 | 5.560000

PRIMERA TRANSFORMACION: A|b - T(2)

7.700000 10.890000 10.780000 3.410000 | -1.920000


0.000000 7.858714 5.456000 0.234143 | -3.378286
0.000000 -11.729143 -10.054000 -2.429429 | -2.421143
0.000000 -3.279571 -4.422000 -0.004714 | 6.739429

SEGUNDA TRANSFORMACION: A|b - T(3)

7.700000 10.890000 10.780000 3.410000 | -1.920000


0.000000 7.858714 5.456000 0.234143 | -3.378286
0.000000 0.000000 -1.910911 -2.079970 | -7.463240
0.000000 0.000000 -2.145121 0.092998 | 5.329615

TERCERA TRANSFORMACION: A|b - T(4)

7.700000 10.890000 10.780000 3.410000 | -1.920000


0.000000 7.858714 5.456000 0.234143 | -3.378286
0.000000 0.000000 -1.910911 -2.079970 | -7.463240
0.000000 0.000000 0.000000 2.427899 | 13.707584

Página 6

Вам также может понравиться