ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Matlab Sistema De Ecuaciones Lineales Metodo De Gauss


Enviado por   •  28 de Enero de 2013  •  2.240 Palabras (9 Páginas)  •  1.193 Visitas

Página 1 de 9

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 de un sistema triangular inferior.

Consideremos ahora un sistema cuya matriz de coeficientes tiene ceros por encima de la diagonal:

A(1,1) *x(1) =b(1),

A(2,1) *x(1) + A(2,2) *x(2) =b(2),

...

A(n-1,1)*x(1) + A(n-1,2)*x(2) + ... + A(n-1,n-1)*x(n-1) =b(n-1),

A(n,1) *x(1) + A(n,2)*x(2) + ... + A(n,n-1)*x(n-1) + A(n,n)*x(n)=b(n).

En este sistema se puede despejar x(1) de la primera ecuación. Una vez hallado el valor de x(1), se puede hallar x(2) despejando en la segunda ecuación. Supongamos que ya hemos hallado x(1), x(2), ..., x(i-1). Considerando la ecuación i-ésima

A(i,1)*x(1) + A(i,2)*x(2) + ... + A(i,i-1)*x(i-1) + A(i,i)*x(i) =b(i)

podemos despejar x(i).

Ej 3. a) Despeje (en papel) x(i) en la última ecuación. b) Exprese (en papel) el valor de x(i) usando un producto escalar de un vector fila por un vector columna. c) Programe la resolución de un sistema triangular inferior. d) Compruebe el programa resolviendo el sistema A*x=b donde A=[1,0,0,0,0;0,2,0,0,0;1,1,1,0,0;0,-1,0,3,0;-2,0,1,0,-2], b=[1;4;6;10;-9]. (Sol. x = [1;2;3;4;5] )

Método de Gauss (Ejemplo).

El método de Gauss permite resolver sistemas lineales de ecuaciones. La idea del método consiste en efectuar operaciones de filas a la matriz del sistema de forma que el sistema resultante (que es equivalente al original) tenga la matriz del sistema triangular superior.

Veremos en primer lugar un ejemplo en el que, haciendo

...

Descargar como (para miembros actualizados) txt (12 Kb)
Leer 8 páginas más »
Disponible sólo en Clubensayos.com