Académique Documents
Professionnel Documents
Culture Documents
1.
M
etodos para resolver sistemas lineales
Los sistemas lineales de ecuaciones, de forma natural, aparecen en muchos campos de la ingeniera; por ejemplo, analsis de estructuras, circuitos
electricos, problemas de flujo, etc. As, gracias al avance de la tecnologa, las
computadoras han hecho posible que muchos de los sistemas, considerados
grandes, se puedan resolver de manera rapida y precisa. Esto no solo a permitido a los ingenieros estudiar y analizar problemas mas complejos sino que
el modelamiento de los mismos es cada da mas cercano a la realidad.
En la practica, cuando se analiza un problema se busca transformalo o
expresarlo como un sistema de ecuaciones lineales y, a continuacion, buscar
su solucion a traves de metodos numericos. Por tal motivo, los sistemas de
ecuaciones lineales es la herramienta mas utilizada en la ingeniera moderna.
Un ejemplo de sistemas lineales es el que se muestra a continuacion:
x1 2x2 + 3x3 = 4
2x1 5x2 12x3 = 15
2x2 10x3 = 10
(1)
1 2 3
x1
4
2 5 12 x2 = 15 ,
(2)
0 2 10
x3
10
el cual es equivalente a la matriz ampliada
1 2 3 4
2 5 12 15 .
0 2 10 10
1.1.
(3)
Teora b
asica
p m
Metodos numericos
Ejercicio
1 2
4 5
7 8
matrices
3
1 2 3
4 5 6
6
9
7 8 8
0
3
6
1
3
6
Se pregunta:
2
p m
Metodos numericos
1. C
ual de las matrices propuestas es no singular?
2. C
ual de los sistemas: A1 x = b1, A1 x = b2, A2 x = b1 y A2 x = b2 tiene
solucion u
nica?
1.2.
El vector residual
(4)
(5)
1.3.
N
umero de condicionamiento
3/2
5/6 .
}
p m
Metodos numericos
Definici
on 1 (N
umero de condicionamiento). Sea A una matriz cuadrada,
= kAkkA1 k
(6)
recibe el nombre de n
umero de condici
on de una matriz A. Ademas,
(A) 1 y si (A) es un n
umero proximo a 1 se dice que A es una matriz
bien condicionada y si es mucho mayor a 1, se dice que la matriz esta mal
condicionada.
En otras palabras, el n
umero de condicionamiento, si es peque
no, indica
que peque
nos cambios o perturbaciones en los datos de entrada, produciran
peque
nos cambios en las salidas; caso contrario, si en n
umero de condicionamiento es grande, indicara que peque
nos cambios en los datos de entrada,
producen grandes cambios en las salidas.
Observacion: Cuando en ingeniera se obtienen matrices con un n
umero
de condicionamiento grande, esto generalmente indica que el dise
no esta mal
elaborados y por lo tanto el problema a resolver necesita ser redise
nado.
1.4.
M
etodo de Gauss
1.5.
C
odigos
function x=backsubst(U,b)
% Esta funci
on resuelve un sistema triangular superior, mediante una
% sustituci
on regresiva.
% Entrada. U:= matriz trinangular superior, b:= vector columna con iguales
% dimensiones.
% Salida. x:= vector soluci
on
[n,m]= size(U); x(n)=b(n)/U(n,n); for j=n-1:-1:1
x(j)=(b(j)-U(j,j+1:n)*x(j+1:n))/U(j,j)
end x=x;
p m
Metodos numericos
function B=rowswitch(A,i,j)
%Entrada. A:= matriz m x n , i ,j:=
ndices de las filas i y j.
%Salida. B:= la matriz A intercambiada la fila i por la fila j
[m,n]=size(A); if i<1|i>m|j<1|j>m
error(Indices no validos)
end
B=A; if i==j
return
end B(i,:)=A(j,:); B(j,:)=A(i,:);
function B=rowcomb(A,i,j,c)
%Entrada: A:= una matriz, i,j := indices de las filas, c:= un n
umero
%distinto de cero.
%Salida: B:= matriz. Es el resultado de a~
nadir a la fila j de A, c veces
%la fila i.
[m,n]=size(A);
if i<1|i>m |j<1|j>m
error(Indice invalido)
end
if i==j
error(Operacion invalida)
end
B=A; B(j,:)= c*A(i,:)+A(j,:);
function B=rowmult(A,i,c)
%Entrada. A:= matriz, i:= el
ndice una fila cualquiera, c:=un n
umero
%distinto de cero.
%Salida. B:= matriz. Es el resultado de multiplicar por c la fila i
[m,n]=size(A);
if i<1|i>m
error(Indice invalido)
end
B=A; B(i,:)=c*A(i,:);
function x=gausselim(A,b)
%Entrada. A:= matriz cuadrada, no singular, b:= vector de las mismas
%dimensiones de la matriz A.
%Salida. x:= Vector soluci
on. Obtenido al resolver el sistema Ax=b por
%eliminaci
on gaussiana con pivote parcial. Siempre y cuando la matriz A sea
5
p m
Metodos numericos
%no singular.
[n,n]=size(A);
Ab=[A;b];
for k=1:n
[mayor, ocurre]=max(abs(Ab(k:n,k)));
if mayor ==0
error(La matriz de coeficientes es singular)
end
m=k+ocurre-1;
Ab=rowswitch(Ab,k,m);
for j=k+1:n
Ab=rowcomb(Ab,k,j,-Ab(j,k)/Ab(k,k));
end
end
x=backsubst(Ab(:,1:n),Ab(:,n+1));
1.6.
Factorizaci
on LU
Algoritmo
%Factorizaci
on LU con pivote
% PA = LU
A=[0 10 6 3 4; 3 0 7 5 6;4 9 0 2 1; 1 2 3 0 5; 3 4 5 6 7]
%A=[-4 10 6 3 4; 3 -3 7 5 6;4 9 -30 2 1; 1 2 3 0 5; 3 4 5 6 7]
%A=magic(10)
B=A;
[m,n]=size(A);
L=eye(n);
P=eye(n);
p m
Metodos numericos
for j=1:n
for i=j+1:m
if A(j,j)~=0
L(i,j)=A(i,j)/A(j,j);
A(i,:)=A(i,:)-L(i,j)*A(j,:);
else
k=j-1;
[mx c]=max(A(j:m,j)); % Busco el maximo entre la columna
A([c+k,j],:)=A([j,c+k],:); % Intercambio filas
P([c+k,j],:)=P([j,c+k],:); % Construyo la matriz de pivotes
L(i,j)=A(i,j)/A(j,j);
% Matriz triangular inferior
% de coeficientes
A(i,:)=A(i,:)-L(i,j)*A(j,:); % Hago ceros a los elementos
% de la columna (Gauss)
end
end
end
U=A;
P*B
L*U
1.7.
Ejercicios
Considere el siguiente sistema lineal de ecuaciones,
x1 + 21 x2 + 13 x3 = 2
1
x1 + 13 x2 + 41 x3 = 0
12
x + 14 x2 + 51 x3 = 1
3 1
1. Resolver el sistema utilizando el metodo de Gauss.
2. Resolver el sistema de manera exacta, es decir, analticamente
(comparar respuestas).
Escrbase una funcion de Matlab [L,U,P]=fac_LUP(A) que calcule la
factorizacion LU de una matriz A utilizando el algoritmo propuesto. La
matriz L debe ser una matriz triangular inferior n n, U una triangular
superior nn y P una matriz de permutacion de las mismas dimensiones
que A, tales que se cumpla L*U=P*A.
Compruebe dicha funcion aplicandola a una matriz aleatoria 55.
p m
Metodos numericos
Dado el sistema lineal de ecuaciones Ax = b, donde la matriz de coeficientes A Rnn es una matriz no singular, un metodo para resolver
dicho sistema consiste en calcular la factorizacion LU de la matriz A.
Si para resolver el sistema utilizamos el algoritmo del apartado anterior
entonces, podemos obtener la solucion x resolviendo los dos sistemas
triangulares siguientes:
Ly = P b
Ux = y
1
1
1 12
3
n
1
1
1
2
3
4
n+1
Hn =
..
..
..
..
...
.
.
.
.
1
1
1
1
2n1
n
n+1
n+2
Esta matriz puede ser facilmente generada en Matlab, utilizando el
comando hilb(n), donde n es el orden de la matriz. En el presente
ejercicio se pide:
1. Resolver el sistema Hx = b, donde b es el vector Hx y x =
(1, 1, , 1)0 con n = 12. Este sistema se debe resolver por 3
metodos distintos. Uno de los metodos debe utilizar el programa
x = gausselimi(A,b).
2. Compare el error producido por los tres metodos.
3. Interprete los resultados.
p m