Matlab Sistema De Ecuaciones Lineales Metodo De Gauss
Enviado por fre2625464 • 28 de Enero de 2013 • 2.240 Palabras (9 Páginas) • 1.180 Visitas
Práctica 3. Sistemas de ecuaciones lineales I (Método de Gauss)
En la práctica anterior vimos como expresar un sistema lineal en forma matricial, como comprobar la solución de un sistema, y como usar la 'división izquierda' para hallar una solución.
También vimos ejemplos de sistemas mal condicionados, y sistemas donde la 'división izquierda' no da una solución porque el sistema es incompatible.
En esta práctica veremos como resolver sistemas triangulares y el método de Gauss para resolver sistemas lineales.
Contents
• Resolución de un sistema triangular superior.
• Resolución de un sistema triangular inferior.
• Método de Gauss (Ejemplo).
• Método de Gauss (Programación del método).
Resolución de un sistema triangular superior.
Consideremos un sistema de tres ecuaciones y tres incógnitas como el siguiente
A11*x1 + A12*x2 + A13*x3 = b1,
A22*x2 + A23*x3 = b2,
A33*x3 = b3.
Para hallar su solución podemos despejar x3 en la última ecuación,
x3=b3/A33.
Con este valor de x3, podemos despejar x2 en la segunda ecuación
x2=(b2-A23*x3)/A22.
Y con los valores hallados de x3 y x2 podemos despejar x1 en la primera
ecuación
x1=(b1-A12*x2-A13*x3)/A11.
Emplearemos este método para resolver un sistema lineal de n ecuaciones y n incógnitas donde la matriz de coeficientes tiene ceros debajo de la diagonal.
Consideramos un sistema como el siguiente:
A(1,1)*x(1) + A(1,2)*x(2) + ... + A(1,n-1)*x(n-1) + A(1,n)*x(n) = b(1),
A(2,2)*x(2) + ... + A(2,n-1)*x(n-1) + A(2,n)*x(n) = b(2),
...
A(n-1,n-1)*x(n-1) + A(n-1,n)*x(n) = b(n-1),
A(n,n)*x(n) = b(n).
Podemos despejar x(n) de la última ecuación con lo que x(n)=b(n)/A(n,n). Conociendo x(n) podemos despejar x(n-1) de la penúltima ecuación.
Siguiendo este proceso, supongamos que ya hemos hallado x(n), x(n-1), ... x(i+1) y queremos despejar x(i) de la ecuación i-ésima
A(i,i)*x(i) + A(i,i+1)*x(i+1) + ... + A(i,n)*x(n) = b(i),
entonces tenemos
x(i)=(b(i) - S )/A(i,i),
donde S = A(i,i+1)*x(i+1) + ... + A(i,n)*x(n) .
Nos proponemos expresar el valor de S como un producto escalar de un vector fila por un vector columna.
S = A(i,i+1)*x(i+1) + ... + A(i,n)*x(n) .
En Matlab, el vector fila A(i,i+1:n) contiene los elementos que están en la fila i, y en las columnas desde la i+1 hasta la n, es decir A(i,i+1), A(i,i+2), A (i,i+3), ... A(i,n-1), A(i,n).
El vector columna x(i+1:n) contiene los elementos de x que van desde el i+1 hasta el n, es decir x(i+1), x(i+2), ..., x(n-1), x(n). Por tanto el valor de S se puede calcular como S=A(i,i+1:n)*x(i+1:n), con lo que usamos las operaciones vectores de Matlab.
Podemos escribir el pseudocódigo que permite resolver el sistema.
Entrada A, b.
n = número de filas de A.
Inicializamos x.
Para i=n, n-1, n-2, ..., 1
x(i)= (b(i)- A(i,i+1:n)*x(i+1:n))/A(i,i)
Siguiente i.
El siguiente código Matlab permite resolver un sistema triangular superior.
% Matriz del sistema
A=[1 3 2 2 1; 0 1 2 4 1; 0 0 2 1 -1; 0 0 0 3 -2; 0 0 0 0 2];
% Término independiente
b=[-2;-1;-2;-9;6];
% Hallamos el número de ecuaciones del sistema.
n=length(A);
% Definimos un vector-columna para almacenar la solución.
x=zeros(n,1);
% El bucle va desde la última ecuación hasta la primera
for i=n:-1:1
x(i)= (b(i)- A(i,i+1:n)*x(i+1:n))/A(i,i);
end
disp('La solución del sistema es ');
disp(x);
La solución del sistema es
1
-2
1
-1
3
Ej 1. Empleando el código que hemos visto escriba un script que permita resolver el sistema
x1 + 2*x2 + 3*x3 + x4 + x5 = 7,
x2 + 4*x3 + x4 - x5 = 6,
- x3 + 2*x4 - x5 = -5,
3*x4 + x5 = -2,
2*x5 = 2.
Compruebe el resultado con la 'división izquierda' (Sol. x1=1, x2=0, x3=2, x4=-1, x5=1).
Ej 2. Modifique el programa para que imprima (usando disp o fprintf) un mensaje como 'El elemento 3 de la diagonal es cero' si algún elemento de la diagonal vale cero, pero que no interrumpa el método. Aplique el programa a la resolución del sistema A*x=b donde A=[1,2,3,1,1;0,2,4,-1,-1;0,0,0,2,-1;0,0,0,3,1;0,0,0,0,-2], b=[2;3;-5;-5;-2]. (Sol x5=1, x4=-2.) (El sistema es compatible indeterminado, se pueden dar las soluciones dependiendo de un parámetro)
Resolución
...