Este programa permite resolver sistemas de ecuaciones lineales mediante el método de Gauss-Jordan. El programa guía al usuario a través de un menú con opciones para introducir el número de variables, capturar los coeficientes de la matriz, aplicar el método de Gauss-Jordan para reducir la matriz a escalonada reducida e imprimir los resultados.
1. __________________________________________________________
__________________________________________________________
program MatrizGaussJordan;
uses crt;
var
mat:array[1..20,1..10]of real;
var
resmenu:char;
coef,aux:real;
i,j,v,n,m:integer;
fil,posf,col,posc,cant,opc:integer;
//Procedimiento: Portada.
procedure portada;
begin
textbackground(red);
textcolor (white);
clrscr;
gotoxy(20,2);
write('SOLUCION DE MATRICES - METODO GAUSS JORDAN');
gotoxy(25,6);
write('MAIRA JAMBLEIDY PORRAS GARZON');
gotoxy(25,7);
write('JONATHAN YESID VELANDIA FRAILE');
gotoxy(36,8);
write('Alumnos:');
gotoxy(22,13);
write('AGUSTIN DE JESUS VILLALOBOS FLORIAN');
gotoxy(35,14);
write('Ingeniero:');
gotoxy(17,20);
write('FUNDACION UNIVERSITARIA DE SAN GIL - UNISANGIL');
gotoxy(29,21);
write('INGENIERIA DE SISTEMAS');
gotoxy(30,22);
2. write('ESTRUCTURA DE DATOS');
gotoxy(34,23);
write('CHIQUINQUIRA');
gotoxy(38,24);
write('2013');
readkey;
end;
//Procedimiento: Introduccion.
procedure introduccion;
begin
gotoxy(20,2);
write('SOLUCION DE MATRICES - METODO GAUSS JORDAN');
gotoxy(4,5);
write('La solucion de sistemas de ecuaciones lineales encuentra una amplia');
gotoxy(4,6);
write('aplicacion en la CIENCIA y la TECNOLOGIA. Se puede afirmar, que
en');
gotoxy(4,7);
write('cualquier rama de la Ingenieria existe al menos una aplicacion la');
gotoxy(4,8);
write('cual requiera el planteamineto y solucion de tales sistemas.');
gotoxy(4,10);
write('Por ello profundizamos en el tema y realizamos el presente
programa');
gotoxy(4,11);
write('para facilitar su solucion y corrobar respuestas obtenidas cuando
se');
gotoxy(4,12);
write('hace de forma manual.');
gotoxy(44,24);
textcolor(2);
write('Presione una tecla para continuar...');
readkey;
end;
3. //Procedimiento: Definicion.
procedure definicion;
begin
gotoxy(20,2);
write('SOLUCION DE MATRICES - METODO GAUSS JORDAN');
gotoxy(4,5);
write('Sistema de ecuaciones lineales de m ecuaciones con n incognitas.');
gotoxy(4,7);
write('a11 a12 ... a1n b1');
gotoxy(4,8);
write('a21 a22 ... a2n b2');
gotoxy(5,9);
write('. . . .');
gotoxy(5,10);
write('. . . .');
gotoxy(5,11);
write('. . . .');
gotoxy(4,12);
write('am1 am2 ... amn bm');
gotoxy(4,14);
write('Este metodo permite determinar la solucion de un sistema de
ecuaciones');
gotoxy(4,15);
write('lineales, encontrar matrices y su inversa; reducciendo el sistema
dado');
gotoxy(4,16);
write('a otro equivalente en el cual cada ecuacion tiene una incognita
menos');
gotoxy(4,17);
write('que la anterior. Sus creadores fueron:');
gotoxy(3,19);
write('- Carl Friedrinch Gauss.');
gotoxy(3,20);
write('- Wilhelm Jordan.');
gotoxy(44,24);
textcolor(2);
write('Presione una tecla para continuar...');
readkey;
4. end;
//Procedimiento: Registro de variables.
procedure variables;
begin
gotoxy(3,2);
write('Rango de variables: 2 a 10.');
gotoxy(3,4);
write('Digite el numero de variables: ');
read(v);
while (v<2) or (v>10) do
begin
gotoxy(3,6);
write('Rango de variables no valido...');
gotoxy(3,7);
write('Digite de nuevo el numero de variables: ');
clreol;
readln(v);
end;
fil:=v;
col:=v+1;
clrscr;
end;
//Procedimiento: Marco de la matriz.
procedure marco;
begin
for i:=1 to fil+1 do
begin
posc:=2+col*6;
gotoxy(2,i*2);
for j:=2 to posc do
write('-');
end;
cant:=2+2*fil;
for i:=1 to col+1 do
begin
5. posc:=-4+i*6;
gotoxy(posc,2);
for j:=2 to cant do
begin
gotoxy(posc,j);
write('|');
end;
end;
end;
//Procedimiento: Captura de datos.
procedure captura;
begin
for i:=1 to fil do
begin
posf:=1+(i*2);
for j:=1 to col do
begin
posc:=(j*6)-3;
gotoxy(posc,posf);
read(mat[i,j]);
end;
end;
end;
//Procedimiento: Solucion de la matriz.
procedure gauss1;
begin
for i:=1 to fil do
begin
coef:=mat[i,i];
for j:=1 to col do
begin
mat[i,j]:=mat[i,j]/coef;
end;
if i=1 then
begin
6. for m:=2 to fil do
begin
aux:=mat[m,i];
for n:=1 to col do
begin
mat[m,n]:=((-1)*(aux)*mat[i,n]+mat[m,n]);
end;
end;
end;
if i>1 then
begin
for m:=1 to i-1 do
begin
aux:=mat[m,i];
for n:=1 to col do
begin
mat[m,n]:=((-1)*(aux)*mat[i,n]+mat[m,n]);
end;
end;
for m:=i+1 to fil do
begin
aux:=mat[m,i];
for n:=1 to col do
begin
mat[m,n]:=((-1)*(aux)*mat[i,n]+mat[m,n]);
end;
end;
end;
end;
end;
//Procedimiento: Resultados.
procedure resultados;
begin
for i:=1 to fil do
begin
7. posf:=1+(i*2);
for j:=1 to col do
begin
posc:=(j*6)-3;
gotoxy(posc,posf);
write(mat[i,j]:0:1);
end;
end;
end;
//Procedimiento:Fin Resultados.
procedure fin;
begin
gotoxy(3,2);
write('Que tenga un excelente dia.');
gotoxy(3,3);
write('Gracias por utilizar nuestro programa.');
gotoxy(43,24);
textcolor(2);
write('Presione una tecla para continuar...');
readkey;
end;
//Procedimiento: Salida.
procedure salir;
begin
gotoxy(3,2);
write('Que tenga un excelente dia.');
gotoxy(3,3);
write('Gracias por utilizar nuestro programa.');
gotoxy(43,24);
textcolor(2);
write('Presione una tecla para continuar...');
readkey;
end;
8. //Programa Principal..
begin
portada;
clrscr;
resmenu:='s';
while (resmenu='s') or (resmenu='S') do
begin
clrscr;
begin
gotoxy(20,2);
write('SOLUCION DE MATRICES - METODO GAUSS JORDAN');
gotoxy(14,5);
write('1. Introduccion.');
gotoxy(14,6);
write('2. Definicion.');
gotoxy(14,7);
write('3. Solucion de ejercicios.');
gotoxy(14,8);
write('4. Salir.');
gotoxy(14,10);
write('Digite la opcion que desea: ');
readln(opc);
while (opc<1) or (opc>4) do
begin
gotoxy(14,12);
write('Opcion incorrecta...');
gotoxy(14,13);
write('Digite de nuevo su opcion: ');
clreol;
readln(opc);
end;
clrscr;
case opc of
1:
begin