Gauss-Jordan en Scilab Reporte en Lyx
Short Description
Download Gauss-Jordan en Scilab Reporte en Lyx...
Description
Práctica #8: Método de Gauss Jordan. Aldaco J., Blanco C., Granados D., Pérez J. March 22, 2011
Introducción. x que satisface una única ecuación, f (x) = 0. En esta ocasión se estudiarán los sistemas de ecuaciones algebraicas lineales, los cuales tienen valores múltiples x1 , x2 , x3 , ..., xn que satisfacen de forma simultánea ecuaciones de la forma:
En prácticas anteriores, se desarrollaron métodos para obtener el valor de
a11 x1 + a12 x2 + ... + a1n xn = b1 a21 x1 + a22 x2 + ... + a2n xn = b2 . . .
an1 x1 + an2 x2 + ... + ann xn = bn Donde las a son los coecientes constantes, las b son los términos independientes y
n es el número de ecuaciones.
Uno de los algoritmos más utilizados para la solución de esta clase de sistemas de ecuaciones es el método de
Gauss.
Este proceso consiste de dos pasos : eliminación hacia delante y sustitución atrás. En el primero de ellos, se
reduce el conjunto de ecuaciones a un sistema triangular superior. Posteriormente, se despejan los diversos valores de las variables de forma progresiva siguiendo el procedimiento descrito por la siguiente fórmula:
(i−1)
xi =
bi
P
−
(i−1)
aij
xj
ai−1 ii
para i = n − 1, n − 2, ...
Si en el proceso de encontrar las soluciones de un sistema de ecuaciones se genera una matriz identidad en lugar de una triángular, el algoritmo utilizado es el método de
Guass-Jordan.
Este método es una variación del de Gauss
y su principal diferencia radica en que cuando una incógnita se elimina en
Gauss-Jordan
ésta es eliminada en otras
ecuaciones y no sólo en las subsecuentes. En el siguiente trabajo se describe la implementación de una función para solucionar sistemas de ecuaciones mediante la utilización de este método y los resultados obtenidos al utilizarla para solucionar problemas de álgebra lineal.
1
Diagrama de ujo del método.
Planteamiento de la Función en Scilab. function dupa=gaussi(A,b)//se define la funcion k=1 q=length(b) for i=1:q//se trabaja con la matriz y el vector para posicionar en el renglon 1 if abs(A(i,1))==max(abs(A(:,1))) c=A(1,:) d=b(1) A(1,:)=A(i,:) //Esta parte del código encuentra el valor mayor absoluto b(1)=b(i) //lo acomoda en la A(1,;) y lo renombra los vectores. A(i,:)=c b(i)=d
2
end end for j=2:q //para hacer ceros hacia abajo b(j)=b(j)-b(k)*((A(j,k))/(A(k,k))) A(j,:)=A(j,:)-(A(k,:))*((A(j,k))/(A(k,k))) end for w=2:q-1 for i=2:q // se trabaja con el renglon 2 y el tres, cuatro dependiendo de la matriz if abs(A(i,w))==max(abs(A(w:q,w))) c=A(w,:) d=b(w) A(w,:)=A(i,:) //Esta parte del código encuentra el valor mayor absoluto b(w)=b(i) //lo acomoda en la A(2,;) y lo renombra los vectores. A(i,:)=c b(i)=d end end w=w+1 end for a=2:q-1 //este es para hacer los ceros en el ultimo renglón for i=a+1:q b(i)=b(i)-b(a)*(A(i,a)/A(a,a)) A(i,:)=A(i,:)-A(a,:)*(A(i,a)/A(a,a)) i=i+1 end a=a+1 end for h=2:q //para hacer ceros en las démas entradas for i=1:h-1 b(i)=b(i)-b(h)*((A(i,h))/(A(h,h))) A(i,:)=A(i,:)-(A(h,:))*(A(i,h)/A(h,h)) end end for i=1:q //con esto se divide la matriz para dar 1 y los resultados para dar los valores b(i)=b(i)/A(i,i); A(i,i)=1 i=i+1 end dupa=[A,b]//se despliega el resultado con el gaussi(A,b) endfunction
Planteamiento de Problemas de Álgebra Lineal. Después de haber denido en
Scilab
las funciones cuyo propósito era solucionar sistemas de ecuaciones mediante
el método de Gauss-Jordan (con y sin pivoteo), éstas fueron utilizadas en diversos problemas. En primer lugar, fue planteada la siguiente situación:
3
Una granja incluye en la dieta de sus animales vitaminas A, B y K. En cierto mes compraron 20 cajas de vitamina A, 40 cajas de vitamina B y 50 cajas de vitamina K pagando $70000, al mes siguiente compraron 30 cajas de vitamina A, 20 de vitamina B y 50 cajas de vitamina K por un total de $51520, un mes después compraron 40 de vitamina A, 10 de vitamina B y 70 de vitamina K con un costo de 45000. Si el precio por caja no ha variado en todo ese tiempo, ¾Qué precio tiene cada caja de vitaminas?. Al analizar los enunciados, es posible darse cuenta que es factible plantear este problema como un sistema de ecuaciones lineales. Las tres ecuaciones que componen el sistema son las siguientes:
20A − 40B − 50K = 70, 000 30A − 20B + 50K = 51520 40A + 10B + 70K = 45000 Este sistema de ecuaciones puede ser representado de forma matricial de la siguiente manera:
20 −40 −50 30 −20 50 40 10 70
70, 000 51520 45000
Por lo tanto, podemos utilizar la función que previamente denimos para encontrar los valores de
A, B y K
que
satisfagan las tres ecuaciones. Para introducir el sistema de ecuaciones, debemos separar la matriz de coecientes y el vector de términos independientes, de la siguiente manera:
70, 000 20 −40 −50 A = 30 −20 50 , b = 51520 45000 40 10 70
Después de haber hecho esto, se procedió a introducir estos valores en la función , arrojando como resultado el siguiente vector:
1679.8202 X = −625.48315 −227.68539
Por lo tanto, hemos encontrado un vector
X,
que satisface el sistema lineal
AX = b.
Para comprobar que la
solución que encontramos es correcta, simplemente procedemos a llevar a cabo la siguiente multiplicación:
20 −40 −50 1679.8202 70, 000 30 −20 50 −625.48315 = 51520 40 10 70 −227.68539 45000 Esto demuestra que el vector
C
que obtuvimos satisface el sistema.
Posteriormente, dados los siguientes sistemas de ecuaciones lineales:
0.02x1 + 0.03x2 − 0.04x3 = −0.04
0.1 + 0.05x2 + 0.2x3 = 1.3 12x1 + 25x2 − 3x3 = 10
16x1 + 2x2 + 4x3 = 0
−7x1 + 8x2 + 15x3 = 2
50x1 + 10x2 + 8x3 = 6
Fueron buscadas sus soluciones mediante el método de Gauss-Jordan con y sin pivoteo. La manera para introducir estos sistemas lineales a las funciones denidas en
Scilab
es homóloga la del problema anterior. Introduciendo de
forma separada la matriz de coecientes y el vector de términos independientes del sistema.
4
Resumen de Resultados. En la tabla 1 se muestran cada uno de los sistemas de ecuaciones propuestos en la práctica ( en su notación matricial) y sus respectivas soluciones utilizando el método de Gauss Jordan por pivoteo . Por cuestiones de espacio, las soluciones son mostradas como vectores renglones, sin embargo, son vectores columna. Tabla 1. Resultados de los Sistemas Lineales. Problema
Sistema a Resolver 20 −40 −50 70, 000 A = 30 −20 50 , b = 51520 70 40 10 45000 0.1 0.05 0.02 1.3 25 −3 , b = 10 A = 12 8 15 −7 2 0.02 0.03 0.04 −0.04 2 4 , b = 0 A = 16 50 10 8 6
Solución con pivoteo
1
2
3
X= X= X=
1679.8202 −625.48315 −227.68539 13.68745 −5.0634199 9.2213005 0.2941176 0.1176471 −1.2352941
En la tabla 2, se muestra el número de problema, y tres soluciones de estos: Las que se encontraron mediante el método de Gauss Jordan, con y sin pivoteo y la solución exacta del Problema. Para nes comparativos, fue calculado el error relativo entre ambas. Tabla 2. Comparación de Soluciones entre distintas variaciones del método de Gauss Jordan. Problema
Solución exacta
1
X=
2
X=
3
X=
1679.8202 −625.48315 −227.68539 13.68745 −5.0634199 9.2213005 0.2941176 0.1176471 −1.2352941
Solución con Pivoteo
X=
X=
X=
1679.8202 −625.48315 −227.68539 13.68745 −5.0634199 9.2213005 0.2941176 0.1176471 −1.2352941
Solución sin Pivoteo
X=
X=
X=
1679.8202 −625.48315 −227.68539 13.68745 −5.0634199 9.2213005 0.2941176 0.1176471 −1.2352941
Error Relativo
0
0
0
Conclusión. Al nalizar los procedimientos de la práctica anterior se podido conocer la utilidad la utilidad del método de Gauss-Jordan para la solución de sistemas de ecuaciones lineales. Además, se conocieron dos varientes de este método, las cuales pueden ser utilizada en diversas situaciones. También se pudo observar que en el caso de matrices ideales, no existe una diferencia signicativa entre utilizar el Método de Gauss Jordan con pivoteo o sin éste, sin embargo, no se debe de aplicar el mismo criterio cuando se solucionan matrices cuyas soluciones no son exactas, como en el caso de sistemas lineales que provienen de problemas reales de ingeniería.
Aportaciones Personales. Josshimar Aldaco: Se sabe que existen muchos problemas ingenieriles que se suelen resolver por sistemas de ecuaciones, muchos de ellas son lineales, el empleo de Scilab para la solución de este tipo de sistemas me parece interesante debido a su gran utilidad al simplicar los cálculos y operaciones, pudiendo así destinar mayores esfuerzos y tiempo en otros
5
aspectos que nos competen como ingenieros. Por mencionar un ejemplo se tiene a los sistemas homogéneos con más de 2 incógnitas. Por ejemplo: Un ingeniero industrial supervisa la producción de cuatro tipos de computadoras. Se requieren cuatro clases de recursos: Horas-hombre; metales; plásticos y componentes electrónicos. producción de cada tipo de computadoras. Si se dispone diariamente de 504 horas-hombre, 1970 Kg de metal, 970 Kg de plástico y 601 componentes electrónicos. ¾Cuántas computadoras de cada tipo se pueden construir por día? Bien se puede emplear el código usado en esta práctica para el sistema de ecuaciones (siendo x, y, z y w, los tipos de computadora 1, 2, 3 y 4 respectivamente) al conocer los datos y aplicarlo en una matriz o sistema de ecuaciones, posteriormente se pueden resolver y encontrar la respuesta. Christian Blanco:
En la presente práctica pude comprobar el uso de un método que da buenas aproximaciones en la resolución de sistemas de ecuaciones, el método de Gauss Jordan, se pudo entender la lógica del programa al estar dividido por pequeñas tareas de acuerdo a cada ciclo dentro del código. A partir de esto se observó el pivoteo parcial, obteniendo un grado de programación complejo mas no comparable al del pivoteo total presentado por Grossman(2005), el hecho de manejar esto y al compararlo con los resultados obtenidos por scilab y maxima se obtuvieron resultados similares, a excepción de cuando se necesita una solución falsa obtenida a partir de mínimos cuadrados por el comando A\b. Un ejemplo práctico útil en la ingeniería en biotecnología representa el uso de estos sistemas de ecuaciones en el manejo del comportamiento de las variables de un reactor biológico, esto es por ejemplo en una columna de destilación al hacer el balance de materia para n numero de platos se plantea un sistema matricial tri-diagonal, el control de sistemas electrónicos dentro de estos, como lo es en el calculo del valor de los componentes que lo componen ya sean resistencias, voltaje, corriente entre otras. Diego Granados:
Una de mis aplicaciones favoritas de la eliminación de Gauss Jordan es el balanceo de ecuaciones químicas. Para esto, se asignan variables a cada una de las especies químicas participantes en la reacción y los valores de las las corresponden al número de átomos de cada elemento que existe de cada molécula. Supongamos que tenemos la siguiente reacción:
C6 H12 O6 + O2 → CO2 + H2 O Si a cada molécula le asignamos una variable y a cada elemento un renglón de una matriz de manera que: Molécula
Variable Asignada
C6 H12 O6 O2 CO2 H2 O
A B C D
Obtenemos la siguiente matriz:
0 1 0 0 0 2 2 2 1 0 0 0
6 12 A= 6 0
La la de ceros fue agreagada para llevar a cabo el cálculo. Como puede intuirse, el sistema tiene múltiples soluciones. Al resolverse, se eligen las soluciones con múltiplos más bajos. Jordan Pérez:
Nos damos cuenta que este procedimento es muy útil cuando se tienen cantidades grandes y se evita el error, existen muchas aplicaciones para este método sin embargo los resultado obtenidos aqui son muy parecidos a los
6
encontrados por otros métodos. Las aplicaciones mas remarcables en el ambiente biotecnólogo son desde la determinacion de corriente hasta resolver sistemas biologicos donde se tengan dos poblaciones de microorganismos. Los sistemas de eliminacion de gauss jordan con pivoteo nos proporcionan una herramienta nueva, y al mismo tiempo nos impulsan a crear códigos que pueden llegar a ser más complejos y completos para solucionar ecuaciones sin necesidad de restricciones.
Referencias [1] Stanley I Grossman,(2005) Álgebra Lineal, 5ta edición, McGraw-Hill-
7
View more...
Comments