fprintf('\n\n\n\t\t********************************************************************************\n') fprintf('\t\t* Este metodo es similar al de la eliminacion gaussiana, pero la *\n') fprintf('\t\t* caracteristica importante de este metodo es que a diferencia de obtener *\n') fprintf('\t\t* el valor de las variables del sistema en forma regresiva, aqui se los *\n') fprintf('\t\t* obtiene directamente de reducir por filas la matriz aumentada A|B *\n') fprintf('\t\t********************************************************************************\n\n') fprintf('\n\t\t********************************************************************************\n') fprintf('\t\t* Antes de empezar a ejecutar el algoritmo de Gauss-Jordan en el sistema, *\n') fprintf('\t\t* por favor escoja una opcion de presentacion de datos.... *\n') fprintf('\t\t********************************************************************************\n\n\n') fprintf('\t\t\t\t1. Format short; coma fija con 4 decimales (defecto)\n'); fprintf('\t\t\t\t2. Format long; coma fija con 15 decimales\n'); fprintf('\t\t\t\t3. Format short e; notación científica con 4 decimales\n'); fprintf('\t\t\t\t4. Format long e; notación científica con 15 decimales\n'); fprintf('\t\t\t\t5. Format rat; expresa los números racionales como cocientes de enteros\n'); fprintf('\n\t\tIngrese una opcion por favor;\n'); onn=input(' Opcion # '); if (onn~=1&onn~=2&onn~=3&onn~=4&onn~=5) fprintf('\n\t\t\t\tIngrese una opcion valida...por favor, \n\n') fprintf('\n\t\t\t\tse iniciara con format short(por defecto) \n\n') end switch (onn) case 1, format short fprintf('\n\t\tLa presentacion de datos se va a iniciar segun\n ') fprintf('\n\t\tFormat short; coma fija con 4 decimales (defecto)\n') case 2, format long fprintf('\n\t\tLa presentacion de datos se va a iniciar segun\n ') fprintf('\n\t\tFormat long; coma fija con 15 decimales\n') case 3, format short e fprintf('\n\t\tLa presentacion de datos se va a iniciar segun\n ') fprintf('\n\t\tFormat short e; notación científica con 4 decimales\n') case 4, format long e fprintf('\n\t\tLa presentacion de datos se va a iniciar segun\n ') fprintf('\n\t\tFormat long e; notación científica con 15 decimales\n') case 5, format rat fprintf('\n\t\tLa presentacion de datos se va a iniciar segun\n ') fprintf('\n\t\tFormat rat; expresa los números racionales como cocientes de enteros\n') end fprintf('\n\t\tPresione una tecla para continuar por favor...\n ') pause clc fprintf('\n\t\t\tIngrese la matriz de coeficientes por favor\n\n') fprintf('\t\t********************************************************************************\n') fprintf('\t\t* POR EJEMPLO [4 1 2;2 4 -1;1 1 -3] *\n') fprintf('\t\t********************************************************************************\n\n') aa=input(' '); fprintf('\n\t\t\tIngrese matriz columna de terminos independientes por favor\n\n') fprintf('\t\t********************************************************************************\n') fprintf('\t\t* POR EJEMPLO [9;-5;-9] *\n') fprintf('\t\t********************************************************************************\n\n') bb=input(' '); A=[aa,bb]; fprintf('\n\t\t\t\t\tLa matriz aumentada A|B del sistema es;\n') A fprintf('\n\n\t\t\t\tPresione una tecla para continuar por favor...'), pause [m,n] = size(A); i = 1; j = 1; k = 0; tol = max([m,n])*eps*norm(A,'inf'); while (i <= m) & (j <= n) [p,k] = max(abs(A(i:m,j))); k = k+i-1; if (p <= tol) fprintf(['\n\n\t\t\t\t Columna ' int2str(j) ' es insignificante']) A(i:m,j) = zeros(m-i+1,1) fprintf('\n\n\t\t\t\tPresione una tecla para continuar por favor...\n') pause j = j + 1; else if i ~= k % Cambiar las i-esimas y las k-esimas filas. fprintf(['\n\n\t\t\t\tCambiar filas ' int2str(i) ' y ' int2str(k) blanks(10)]) fprintf('\n\n') A([i k],:) = A([k i],:) fprintf('\n\n\t\t\t\tPresione una tecla para continuar por favor...\n') pause end % Normaliza la i-esima fila% fprintf('\n\n\t\t\t\tEliminando columna %d\n',j) fprintf(['\n\t\t\t\ta partir de la referencia en A(' int2str(i) ',' int2str(j) ')' blanks(10)]) fprintf('\n\n\t\t\t\tA(%d,%d)/%0.5f\n',i,j,A(i,j)) A(i,j:n) = A(i,j:n)/A(i,j) fprintf('\n\t\t\t\tPresione una tecla para continuar por favor...\n') pause %Ejecuta la eliminacion de la j-esima columna a partir de la i-esima %fila% fprintf(['\n\n\t\t\t\tEliminando la columna ' int2str(j) blanks(10)]) fprintf('\n') A fprintf('\n\n\t\t\t\tPresione una tecla para continuar por favor...\n') pause for k = 1:m if k ~= i fprintf('\n') fprintf('\n\n\tFila[%d]=Fila[%d] - (A[%d,%d]/A[%d,%d])*Fila[%d]\n',k,k,k,j,i,j,j) pause A(k,j:n) = A(k,j:n) - A(k,j)*A(i,j:n) end end fprintf('\n\n\t\t\t\tPresione una tecla para continuar por favor...\n') pause i = i + 1; j = j + 1; end end fprintf('\n\n\t\t\t\tEntonces los valores de las incognitas son;\n') for k = 1:m fprintf('\n\n\tx(%d)=%d\n',k,A(k,n)) pause
videotutoriales de matlab, octave, numpy, python, POA, algoritmia, simulacion de procesos en ingenieria quimica, y algo de ingenieria quimica
domingo, 22 de julio de 2012
Metodo de Gauss- Jordan
Suscribirse a:
Enviar comentarios (Atom)
muchas gracias.....no tenes el diagrama de flujo?
ResponderEliminar