0% encontró este documento útil (0 votos)
60 vistas7 páginas

Programa Gauss-Jordan para Matrices

Este documento describe un programa desarrollado para resolver sistemas de ecuaciones lineales mediante el método de Gauss-Jordan. El programa permite ingresar una matriz cuadrada de tamaño 1 a 9 y realiza las operaciones de Gauss-Jordan para obtener la matriz escalonada reducida. El programa muestra los pasos del proceso y la solución del sistema de ecuaciones.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
60 vistas7 páginas

Programa Gauss-Jordan para Matrices

Este documento describe un programa desarrollado para resolver sistemas de ecuaciones lineales mediante el método de Gauss-Jordan. El programa permite ingresar una matriz cuadrada de tamaño 1 a 9 y realiza las operaciones de Gauss-Jordan para obtener la matriz escalonada reducida. El programa muestra los pasos del proceso y la solución del sistema de ecuaciones.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

UNIVERSIDAD AUTONOMA DE NUEVO LEON

FACULTAD DE CIENCIAS FISICO


MATEMATICAS

UA: ANALISIS NUMERICO.

M.A. MARIA DEL CARMEN MARTINEZ CEJUDO.

Proyecto 1
(PROGRAMA DEL MÉTODO GAUSS-JORDAN)

Jorge Vasconcelos Cáceres 1656187

San Nicolás de los Garza, a 17 de febrero de 2023


Introducción.
El método de eliminación de Gauss - Jordan nos permiten obtener las soluciones
(en caso de haberlas) de los sistemas de ecuaciones lineales (SEL).
El método consiste en aplicar operaciones elementales fila, es decir, cualquier fila
se puede multiplicar por cualquier número (distinto de cero) o se le puede sumar o
restar cualquier otra fila multiplicada o no por cualquier número. No se puede
restar una fila a ella misma. También puede intercambiarse el orden de las filas
(por ejemplo, intercambiar las dos primeras filas). El proceso debe aplicarse hasta
que se obtenga la matriz en forma escalonada reducida (método Gauss - Jordan)
de la matriz ampliada.

Descripción del programa.


El programa que se realizó nos permite obtener una resolución de matrices
cuadradas ( n x n ) de un tamaño de 1 a 9 ecuaciones mediante el método Gauss -
Jordan
Contenido.
Cuando abrimos el ejecutable se nos muestra en pantalla el mensaje inicial con
una pequeña descripción de lo que hace el programa, también nos pide ingresar el
tamaño de la matriz que se va a resolver

Una vez ingresado el dato procedera el inicio de el ingreso de datos


Se procede a llenar los coeficientes de las ecuaciones según el tamaño, cabe
mencionar que como es cuadrada, el numero de coeficientes y ecuaciones a llenar
es el mismo
Algo mas a mencionar es que los coeficientes siempre serán n+1, dado que las
ecuaciones cuentas con un coeficiente ya que este ultimo será el termino de lado
derecho de la ecuación, es decir los números que van después del “=”

Para finalizar el programa se debe de mostrar así y nos mostrara la matriz que
introdujimos, se resuelve con algoritmo implementado en el script e imprime la
matriz escalonada, junto con sus respectivos valores
Ejemplo 2. Matriz que no tiene solución.
Existen algunos tipos de sistemas de ecuaciones que no es posible resolverlos por
medio de este método, sea de ejemplo el siguiente caso

Tomando una matriz de 2x2 y una vez llenado los coeficientes necesarios,
podemos observar el siguiente resultado.
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

void Gauss_Jordan(float M[15][15],int finDelCiclo);

int main(){

char tam; //variable para que el usuario coloque el tamano de la matriz


int conv=0; //variable que almacena la conversion en entero de la variable tam
int a=0; //variable que nos da acceso a lo que va despues de introducir el tamano de la matriz
int finDelCiclo=0; //indica el final del ciclo de iteraciones cuando se llene la matriz
int i=0;
int j=0;

float M[15][15];//Variables para la matriz

do{

system("cls");
printf("///////////////////////////////////////////////////");
printf("\n//\t\t METODO GAUSS-JORDAN \t\t//");
printf("\n//\t\t Proyecto 1 \t\t//");
printf("\n//\t\t\t\t\t\t//\n//\t\t\t\t\t\t//\n//\t\t\t\t\t\t//");
printf("\n///////////////////////////////////////////////////");
printf("\n\nIntroduce el tama%co de la matriz |nxn|\n", 164);
scanf("%c", &tam);
fflush(stdin);
conv=int(tam);
if(isdigit(tam) && conv!=48){
a++;
finDelCiclo=conv-48;
}else{
system("cls");
printf("Ingresa solamente numeros de 1 a 9. NO caracteres o letras.\n\n");
system("pause");
fflush(stdin);
}
}while(a!=1);
//Estos son mensajes antes de comenzar con el metodo
printf("\n\n\t\t\tMatriz de tama%co: %c\n\n", 164, tam);
fflush(stdin);

printf("\n\nPrimero debemos llenar cada uno de los elementos de la matriz.\n");


printf("NOTA: Se aceptan numeros decimales.\n\n\n");

//Aqui empezamos el llenado de la matriz


for(i=0; i<finDelCiclo; i++){
printf("\tEcuaci%cn %d:\n", 162, i+1);
for(j=0; j<finDelCiclo+1; j++){
if(j==finDelCiclo){
printf("\t\tLado derecho de la ecuaci%cn %d: ", 162, i+1);
scanf("%f", &M[i][j]);
fflush(stdin);
}else{
printf("\t\tPosici%cn [%d][%d]: ", 162, i+1, j+1);
scanf("%f", &M[i][j]);
fflush(stdin);
}
}

printf("\n\nLa matriz introducida es: \n");//Impresion de la matriz aumentada


for(int i=0; i<finDelCiclo; i++){
for(int j=0; j<finDelCiclo+1; j++){
printf("\t%.2f", M[i][j]);
}
printf("\n");
}

printf("\nMatriz Inversa: \n");


Gauss_Jordan(M,finDelCiclo);
for(int i=0; i<finDelCiclo; i++){

for(int j=0; j<finDelCiclo+1; j++){


printf("\t%.2f", M[i][j]);
}
printf("\n");
}

//impresion de resultados
printf("\nResultados\n\n");
for(i=0; i<finDelCiclo; i++){
printf("X%d = %.2f\t", i+1, M[i][finDelCiclo]);
}
return 0;

void Gauss_Jordan(float M[15][15],int finDelCiclo){


double mayor; //variable para almacenar el mayor de la columna k
int indice; // indice del mayor
double aux;
double pivote;
for(int k=0;k<finDelCiclo;k++){//recorrer columnas de la matriz reducida
mayor=abs(M[k][k]);
indice=k;
//recorrer filas de la columna k en busca del indice del mayor
for(int l=k+1;l<finDelCiclo;l++){
if(mayor<abs(M[l][k])){
mayor=abs(M[l][k]);
indice=l;
}
}
//para cambiar filas si asi lo require
if(k!=indice){
for(int i=0;i<finDelCiclo+1;i++){
aux=M[k][i];
M[k][i]=M[indice][i];
M[indice][i]=aux;
}
}
if(M[k][k]==0){
printf("No tiene solucion\n");
break;
}
else{

for(int i=0;i<finDelCiclo;i++){
//recorrer la fila
if(i!=k){
pivote=-M[i][k];
for(int j=k;j<finDelCiclo+1;j++){//recorrer elementos de una fila

M[i][j]=M[i][j]+pivote*M[k][j]/M[k][k];

else{
pivote=M[k][k];
for(int j=k;j<finDelCiclo+1;j++){
M[i][j]=M[i][j]/pivote;

También podría gustarte