Documentos de Académico
Documentos de Profesional
Documentos de Cultura
TESIS DE LICENCIATURA
PRESENTA
ASESOR DE TESIS:
ESIS: DRA. LOURDES SANDOVAL SOLÍ
SOLÍS
AGRADECIMIENTOS
2
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
INDÍCE
INTRODUCCIÓN ........................................................................................................................
CAPÍTULO 1 CONCEPTOS BÁSICOS ........................................................................................ 9
Definición 1.1 Matriz Dispersa ............................................................................................ 9
Definición 1.2 Sistema de Ecuaciones Lineales ................................................................... 9
Teorema 1 ......................................................................................................................... 11
Definición 1.3 Factorización LU ......................................................................................... 12
Definición 1.4 Residuo....................................................................................................... 20
Teorema 2 ......................................................................................................................... 20
Definición 1.5 .................................................................................................................... 21
Teorema 3 ......................................................................................................................... 21
CAPÍTULO 2 GENERACIÓN DE MATRICES DISPERSAS ........................................................ 22
CONCLUSIONES .................................................................................................................... 59
BIBLIOGRAFÍA ....................................................................................................................... 60
3
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
INTRODUCCIÓN
los marcos de acero haciendo uso de las computadoras [1] [2] [3]. El BMP se
• Ecuaciones Diferenciales.
• Diseño de Circuitos.
• Hipertextos.
Por esta razón el BMP es un tema muy importante que se estudia día con día con
diagonal.
eran ceros.
4
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
Por su trabajo Harry Markowitz fue premiado en 1989 con el Premio Von Neumann
Por otra parte Ralph Arthur Willoughby [L1] fue otro de los pioneros de la
compañero Werner Liniger, observaron que las ecuaciones con las que trabajaban
eran muy grandes y dispersas. Los primeros códigos desarrollados fueron para
5
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
Sparse Matrices and Their Applications”, el encuentro fue financiado por la IBM T.J
Watson Research Center in Yorktown Heights, New York, September 9-10, 1968.
“Sparse Matrix Proceedings” (RAI 3-12-69), que fue solicitado por mucha gente en
todo el mundo.
dispersos grandes, los cuales fueron publicados en 1972 por la IBM [L3].
A través de los años se han desarrollado varios algoritmos para resolver el BMP,
que también nos sirve para resolver sistemas de ecuaciones lineales grandes, la
mayoría de ellos están basados en teoría de grafos, entre los más importantes
tenemos el algoritmo de Grado Mínimo que fue propuesto por Tinney y Walker en
1967 que se utiliza para reducir el fill-in cuando se utiliza el método de eliminación
En cuanto a los métodos para resolver sistemas de ecuaciones lineales, hay dos
tipos, los métodos directos y los iterativos, dentro de los métodos directos mas
6
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
Luis Cholesky, que fue publicado por el comandante Benoit en 1924 en la revista
Dentro de los métodos iterativos tenemos el método de Jacobi que fue creado y
propuesto por el matemático alemán Carl Gustav Jakob Jacobi [9], también está el
vida diaria, en el pasado resolver dichos sistemas era complicado y muy laborioso
Por otro lado existen diferentes esquemas de almacenamiento para trabajar con
(CSC), y el Esquema Modified Sparse Row (MSR) [5] [6] [10] [7] [4] [14].
• Capitulo 5. Pruebas.
• Conclusiones.
• Bibliografía.
7
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
las matrices dispersas con las que vamos a trabajar, el capítulo 3 trata acerca
ecuaciones lineales asociados a las matrices que hemos generado, por último
8
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
residuo.
Una matriz dispersa es una matriz en la que la mayor parte de sus elementos son
ceros.
1 0 0 2 0 0 0 0 3 0
0 4 0 0 5 0 6 0 0 7
0 0 8 0 0 9 10 0 0 0
11 0 0 12 0 0 0 0 0 0
0 13 0 0 14 0 0 0 15 0
A=
0 0 16 0 0 17 0 18 0 19
0 20 21 0 0 0 23 0 24 0
0 0 0 0 0 25 0 26 27 0
28 0 0 0 29 0 30 31 32 0
0 0 0 0 0 0 0 0 0 33
Matriz dispersa de 10 x 10
9
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
Cabe aclarar que los sistemas de ecuaciones con los que trabajaremos son
forma:
a11 L a1n x1 b1
M O M * M = M
a x b
n1 L a nn n n
Representación Matricial de un Sistema de Ecuaciones Lineales
Como se puede observar los elemento de nuestra matriz representan los
Ax = b
Cabe señalar que al resolver sistemas de ecuaciones lineales podemos tener tres
b) otro caso que se puede dar es que el sistema tenga una familia de
10
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
función de estas.
familia de soluciones.
Teorema 1 [12]
Sea
un sistema de ecuaciones lineales. Si A es invertible, el sistema tiene
tipos de métodos para resolver este tipo de sistemas, que son los métodos
11
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
2. Factorización .
3. Factorización de Cholesky.
4. Factorización .
5. Factorización .
1. Método de Jacobi.
3. Método SOR.
solución única y el método que utilizaremos para resolver dichos sistemas será
Factorización .
una matriz en dos, una matriz triangular inferior y otra matriz triangular superior
A = LU
único que varia son los términos independientes de los sistemas de ecuaciones
12
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
O en forma equivalente
O bien
13
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
!
!
O en forma equivalente
" !
#
O bien
!
!
siguiente:
$%&
'.
(
+ )*
,
-
$%&
'
**
!
-
$%&
'
14
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
"().
/.* +*. #
,
$%&
'
+..
0
0 !
10
24 02 23
$%&
'
"()5
157*
68* /)6 +65 #
0
,
$%&
'
+55
ecuación
9 se puede escribir como:
: ;
Donde
, la ecuación anterior se resuelve como sigue. Sea
: <
< ;
Para una matriz de orden N, las sustituciones hacia adelante y hacia atrás se
15
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
<
;
<
; !
>? < @
,
- A '
4
<B
:B
BB
C< !
1B
4D : E
:
F
<
;
>
F@
G <
H
G ;
H
<
;
< ;
<
C; !
< E
<
C; !
< !
< E
Escribimos la ecuación
= en forma más explícita:
:
<
G F
H
G :
H
G <
H
F
:
<
16
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
Y la solución es
<
:
< !
:
:
< !
: !
:
:
factorización
17
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
ind=r;
c=A(i,:);
A(i,:)=A(r,:);
A(r,:)=c;
for k=r+1:n
piv=-(A(k,j)/A(i,j));
A(k,:)=piv*A(i,:)+A(k,:);
end
end
end
else
for k=i+1:n
if j<n
piv=-(A(k,j)/A(i,j));
A(k,:)=piv*A(i,:)+A(k,:);
L(k,j)=-1*piv;
end
end
end
end
end
end
U=A;
L;
18
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
dividir el valor del elemento de abajo entre el elemento de la diagonal con signo
multiplica todo el renglón del elemento de la diagonal por este JKL y se suma al
renglón de abajo, dicho resultado sustituye al renglón que estén por debajo del
La factorización está considerada como un método directo que nos sirve para
resolver sistemas de ecuaciones lineales, sin embargo para poder utilizar este
diagonalmente, esto nos permite asegurar que podemos aplicar sin necesidad
19
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
definición 1.5
residuo = b − Ax '
El residuo es un término importante ya que nos sirve para saber que tan buena es
ecuaciones lineales y que garantizan que dicho sistema tenga solución única,
Teorema 2 [9]
O
20
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
dominante cuando:
P P Q ? R R
4
S
Teorema 3 [9]
singular.
sistema lineal de la forma Ax=b para obtener su solución única sin intercambio de
renglones o columnas.
21
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
En este capitulo se realiza una breve descripción del procedimiento que se realizó
para la generación de matrices dispersas, las cuales son objeto de estudio para
este trabajo.
términos independientes.
22
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
S=(A+A')/2;
A=S;
%Hacer A estrictamente dominante
for i=1:n
A(i,i)=A(i,i)*50*n;
end
A(find(A<=density))=0;
figure(1);
spy(A)
B=rand(n,1);
Enseguida se muestra una matriz generada a partir de la función que
implementamos:
Para poder visualizar nuestra matriz utilizamos la función spy que nos provee
100 x 100:
23
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
24
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
MATRICES DISPERSAS
dispersas. Ahora nuestro objetivo es poder almacenarlas para poder trabajar con
ellas.
trabajar con matrices dispersas grandes entre los más importantes podemos
Una vez que generamos la matriz dispersa con la que vamos a trabajar, debemos
buscar una forma de almacenarla en memoria ya que las matrices que vamos a
25
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
la matriz con la que estemos trabajando, El primer arreglo val contiene el valor de
F
_
F h
^ g
O
^ b
e g
^F
F
F
F
g
] F
F
- f
Matriz de orden 5 x 5
Lij
F
-
KkK
Klmj
almacenamiento
26
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
Ahora supongamos que tenemos los tres arreglos anteriores y queremos obtener
implementarlo:
Este método es uno de los más usados para trabajar con matrices dispersas,
también es de fácil de implementar, consta de tres arreglos, dos de, los cuales
tienen longitud U=, es decir tiene que ver con la cantidad de elementos diferentes
27
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
1 0 0 2 0
3 4 0 5 0
A = 6 0 7 8 9
0 0 10 11 0
0 0 0 0 12
Matriz de orden 5 x 5
Lij
F
-
Klm
Ki
F
-
Índice =1;
Cont=1;
Ia (1) = 1;
Para i=1 hasta n hacer
Para j=1 hasta m hacer
Si A (i, j) diferente de cero entonces hacer
Val (índice) = A (i, j);
Ico (índice) = j;
28
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
Índice = índice + 1;
Cont = Cont +1;
End_Si
End_Para
Ia (i+1) = Cont;
End_Para
de nuestra matriz? o mejor aun ¿como podemos saber cual es la matriz original?
siguiente manera:
Con ayuda del arreglo ia, obtenemos el número de elementos que tenemos que
leer por fila, para obtener dicho número hacemos la diferencia entre el elemento
ia
(ii )
ia
( )
––
ia
(i) después con este resultado procedemos a leer los índices de las
Lij
-
`
a
b
c
d
e
F
-
Klm
Ki
F
-
29
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
Para obtener la matriz original a partir de estos tres vectores, tenemos el siguiente
1 0 0 2 0
3 4 0 5 0
A = 6 0 7 8 9
0 0 10 11 0
0 0 0 0 12
Matriz de orden 5 x 5
30
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
Por otra parte las primeras posiciones del otro arreglo JA contiene el puntero
OO
-
N
F
sO
F
`
`
almacenamiento:
Ind = n+2;
JA (1) = ind;
Para i=1 hasta n hacer
Para j=1 hasta m hacer
Si i es igual a j entonces hacer
AA (i) = A (i, i);
Si no entonces hacer
Si i diferente de j y A (i, j) diferente de cero entonces hacer
AA (ind) = A (i, j);
JA (ind) = j;
Ind = ind +1;
End_Si
End_Si
End_Para
31
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
JA (i+1) = ind;
End_Para
esto:
Temp = 1;
Indi = 1;
Clave = n+1;
Para i=1 hasta n hacer
A (i, i) = AA (i);
Dif =JA (indi +1) – JA (indi);
Mientras Temp sea menor o igual Dif hacer
A (i, JA (clave + indi)) = AA (clave + indi);
Indi = indi + 1;
Temp = temp + 1;
End_Mientras
Temp = 1;
End_Para
32
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
DISPERSAS
grafos.
33
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
1. Construir una tabla donde se indique el grado de cada uno de los nodos.
grado, los pasos 2 y 3 se repiten hasta que todos los nodos se hayan
visitados.
posteriormente el implícito
1. Primero calculamos el grado de cada uno de los nodos, para ello contamos
vector llamado cola para que una vez que se hayan visitado todos los
34
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
orden, este proceso se continua hasta que todos los nodos hayan sido
visitados.
3. Por último procedemos a reordenar nuestra matriz con ayuda del vector
orden.
siguiente grafo:
Nodo A B C D E F G H I J
A 1 0 0 1 0 1 0 0 0 0
B 0 1 1 0 0 0 1 0 0 1
C 0 1 1 1 1 0 0 0 0 0
D 1 0 1 1 0 1 0 0 1 0
E 0 0 1 0 1 0 1 0 0 0
F 1 0 0 1 0 1 1 1 0 0
G 0 1 0 0 1 1 1 1 0 0
H 0 0 0 0 0 1 1 1 0 0
I 0 0 0 1 0 0 0 0 1 0
J 0 1 0 0 0 0 0 0 0 1
Tabla 1 Matriz de Adyacencia Original
35
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
NODO GRADO
(9) I 1
(10) J 1
(1) A 2
(5) E 2
(8) H 2
(2) B 3
(3) C 3
(4) D 4
(6) F 4
(7) H 4
Tabla 2 Lista de grado de cada nodo
vector orden:
myz{ | }
~
q
Nodo I D A C F E B H G J
I 1 1 0 0 0 0 0 0 0 0
D 1 1 1 1 1 0 0 0 0 0
A 0 1 1 0 1 0 0 0 0 0
C 0 1 0 1 0 1 1 0 0 0
F 0 1 1 0 1 0 0 1 1 0
E 0 0 0 1 0 1 0 0 1 0
B 0 0 0 1 0 0 1 0 1 1
H 0 0 0 0 1 0 0 1 1 0
G 0 0 0 0 1 1 1 1 1 0
J 0 0 0 0 0 0 1 0 0 1
Tabla 3 Matriz de Adyacencia Reordenada con CM Explícito
36
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
function [A]=mckee(LA,grado,n,MA,A)
%Ordenar Lista de Adyacencia
tam=size(LA);
for r=1:n
for i=1:tam(2)
for j=i+1:tam(2)
if LA(r,j)~=0 && LA(r,i)~=0
if grado(LA(r,j))< grado(LA(r,i))
temporal=LA(r,j);
LA(r,j)=LA(r,i);
LA(r,i)=temporal;
end
else
break;
end
if grado(LA(r,j))==grado(LA(r,i))
if LA(r,j)<LA(r,i)
temp2=LA(r,i);
LA(r,i)=LA(r,j);
LA(r,j)=temp2;
end
end
end
end
end
[valor,indice]=sort(grado);
%tres vectores orden, cola y visitados
37
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
% cola=zeros(1,n);
visitados=zeros(1,n);
incola=1;
inorden=1;
incolumna=1;
inaux=1;
innodo=1;
in=indice(innodo); %Seleccionar el nodo de menor grado
visitados(in)=1; %Marcarlo como visitado
orden(inorden)=in; %Colocarlo en el vector orden
inorden=inorden+1;
nodo=LA(in,incolumna); % Asignar nodo adyacente
while nodo==0 % Verificar si el nodo adyacente es cero
innodo=innodo+1;
if innodo<n
in=indice(innodo); %Seleccionar el nodo de menor grado siguiente
visitados(in)=1; %Marcarlo como visitado
orden(inorden)=in; %Colocarlo en el vectro orden
inorden=inorden+1;
nodo=LA(in,incolumna);
else
break;
end
end
while nodo~=0 %Verificar si el nodo adyacente es diferente de cero
if visitados(nodo)==0 %Verificar si el nodo no ha sido visitado en caso
afirmativo
visitados(nodo)=1; %Marcarlo como visitado
38
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
39
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
innodo=innodo+1;
end
end
end
end
nodo=LA(in,incolumna);
end
incolumna=1;
for i=1:n
in=indice(i);
if visitados(in)==0
visitados(in)=1;
nodo=LA(in,incolumna);
orden(inorden)=in;
inorden=inorden+1;
while nodo~=0 %Verificar si el nodo adyacente es diferente de cero
if visitados(nodo)==0 %Verificar si el nodo no ha sido visitado en
caso afirmativo
visitados(nodo)=1; %Marcarlo como visitado
cola(incola)=nodo; %Colocarlo en el vector cola
incola=incola+1;
orden(inorden)=nodo; %Ponerlo en el vector orden
inorden=inorden+1;
incolumna=incolumna+1;
if incolumna<tam(2)
nodo=LA(in,incolumna);
end
else %En caso negativo
40
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
incolumna=incolumna+1;
end
if incolumna<=tam(2)
nodo=LA(in,incolumna);
else
nodo=0;
end
if nodo==0
incolumna=1;
tama=size(cola);
if inaux>tama
break;
else
in=cola(inaux);
inaux=inaux+1;
if in==0
if innodo<n
in=indice(innodo+1);
innodo=innodo+1;
end
end
end
end
nodo=LA(in,incolumna);
end
end
end
41
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
orden;
AA=A(orden,:);
AA=AA(:,orden);
A=AA;
figure(2)
spy(MA)
Como se observa en el código de nuestra función primero ordenamos nuestra lista
de adyacencia para así tener los nodos adyacentes de menor grado al principio y
los de mayor grado al final, luego procedemos a implementar los pasos dos y tres
Los pasos uno y dos son los mismos que se mencionaron anteriormente, la
trabajar con la matriz tal cual, trabajamos con los vectores del formato CSR,
Ki
()
, luego sacamos la diferencia entre el
Ki
(myz{
(K) )
9
{j
Ki
(myz{
(K)) y lo guardamos en zKk, en un contador
guardarlo en
Ki
(K ), a una variable zKl{ le asignamos Ki
(myz{
(K)),
luego en Lij copiamos los valores que tenemos en Lij que corresponden al
42
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
nodo que tenemos en el vector orden, de igual manera copiamos los índices de las
columnas correspondientes al nodo del vector orden, estos los sacamos del vector
Esto solo nos permite intercambiar los renglones, pero nos falta intercambiar las
arreglo myz{ y en un vector llamado zKl{ guardamos los índices del vector
zKl{ y cambiamos el valor de Klm en esa posición por el valor del índice del
función descrita en la parte de Esquema CSR, que nos permite obtener la matriz
original, y listo tenemos la matriz reordenada para poder trabajar con ella.
matriz:
Nodo I D A C F E B H G J
I 1 1 0 0 0 0 0 0 0 0
D 1 1 1 1 1 0 0 0 0 0
A 0 1 1 0 1 0 0 0 0 0
C 0 1 0 1 0 1 1 0 0 0
F 0 1 1 0 1 0 0 1 1 0
E 0 0 0 1 0 1 0 0 1 0
B 0 0 0 1 0 0 1 0 1 1
H 0 0 0 0 1 0 0 1 1 0
G 0 0 0 0 1 1 1 1 1 0
J 0 0 0 0 0 0 1 0 0 1
Tabla 4 Matriz A Reordenada con CM Implícito
43
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
,
-
-
`
a
-
a
-
`
b
c
-
a
d
e
`
b
e
`
c
e
F
a
d
e
a
b
c
d
e
c
F
,
d
a
-F
-
-c
F
a
c
function [AM]=mckeeim(val,ico,ia,LA,grado,n)
%Ordenar Lista de Adyacencia
tam=size(LA);
for r=1:n
for i=1:tam(2)
for j=i+1:tam(2)
if LA(r,j)~=0 && LA(r,i)~=0
if grado(LA(r,j))< grado(LA(r,i))
temporal=LA(r,j);
LA(r,j)=LA(r,i);
LA(r,i)=temporal;
end
else
break;
end
if grado(LA(r,j))==grado(LA(r,i))
if LA(r,j)<LA(r,i)
temp2=LA(r,i);
LA(r,i)=LA(r,j);
LA(r,j)=temp2;
end
44
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
end
end
end
end
[valor,indice]=sort(grado);
%tres vectores orden, cola y visitados
% cola=zeros(1,n);
visitados=zeros(1,n);
incola=1;
inorden=1;
incolumna=1;
inaux=1;
innodo=1;
in=indice(innodo); %Seleccionar el nodo de menor grado
visitados(in)=1; %Marcarlo como visitado
orden(inorden)=in; %Colocarlo en el vector orden
inorden=inorden+1;
nodo=LA(in,incolumna); % Asignar nodo adyacente
while nodo==0 % Verificar si el nodo adyacente es cero
innodo=innodo+1;
if innodo<n
in=indice(innodo); %Seleccionar el nodo de menor grado siguiente
visitados(in)=1; %Marcarlo como visitado
orden(inorden)=in; %Colocarlo en el vectro orden
inorden=inorden+1;
nodo=LA(in,incolumna);
else
45
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
break;
end
end
while nodo~=0 %Verificar si el nodo adyacente es diferente de cero
if visitados(nodo)==0 %Verificar si el nodo no ha sido visitado en caso
afirmativo
visitados(nodo)=1; %Marcarlo como visitado
cola(incola)=nodo; %Colocarlo en el vector cola
incola=incola+1;
orden(inorden)=nodo; %Ponerlo en el vector orden
inorden=inorden+1;
incolumna=incolumna+1;
if incolumna<tam(2)
nodo=LA(in,incolumna);
end
else %En caso negativo
incolumna=incolumna+1;
end
if incolumna<=tam(2)
nodo=LA(in,incolumna);
else
nodo=0;
end
if nodo==0
incolumna=1;
tama=size(cola);
if inaux>tama
break;
46
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
else
in=cola(inaux);
inaux=inaux+1;
if in==0
if innodo<n
in=indice(innodo+1);
innodo=innodo+1;
end
end
end
end
nodo=LA(in,incolumna);
end
incolumna=1;
for i=1:n
in=indice(i);
if visitados(in)==0
visitados(in)=1;
nodo=LA(in,incolumna);
orden(inorden)=in;
inorden=inorden+1;
while nodo~=0 %Verificar si el nodo adyacente es diferente de cero
if visitados(nodo)==0 %Verificar si el nodo no ha sido visitado en
caso afirmativo
visitados(nodo)=1; %Marcarlo como visitado
cola(incola)=nodo; %Colocarlo en el vector cola
incola=incola+1;
orden(inorden)=nodo; %Ponerlo en el vector orden
47
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
inorden=inorden+1;
incolumna=incolumna+1;
if incolumna<tam(2)
nodo=LA(in,incolumna);
end
else %En caso negativo
incolumna=incolumna+1;
end
if incolumna<=tam(2)
nodo=LA(in,incolumna);
else
nodo=0;
end
if nodo==0
incolumna=1;
tama=size(cola);
if inaux>tama
break;
else
in=cola(inaux);
inaux=inaux+1;
if in==0
if innodo<n
in=indice(innodo+1);
innodo=innodo+1;
end
end
48
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
end
end
nodo=LA(in,incolumna);
end
end
end
orden;
tam=length(orden);
clave=1;
% Paso 3 Reordenar la matriz como se explico anteriormente
contnz=1;
wia(1)=contnz;
for i=1:tam
dif=ia(orden(i)+1)-ia(orden(i));
contnz=contnz+dif;
wia(i+1)=contnz;
indice=ia(orden(i));
for j=1:dif
wval(clave)=val(indice);
wico(clave)=ico(indice);
clave=clave+1;
indice=indice+1;
end
end
wia;
wval;
wico;
49
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
for i=1:tam
indices=find(wico==(orden(i)));
for j=1:length(indices)
wicom(indices(j))=i;
end
end
wicom;
[AM]=invschemecsr(wia,wicom,wval,n);
figure(3)
spy(AM)
de adyacencia para así tener los nodos adyacentes de menor grado al principio y
los de mayor grado al final, luego procedemos a implementar los pasos dos y tres
50
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
CAPÍTULO 5 PRUEBAS
En este capítulo se presentan las pruebas que se realizaron y los resultados que
• Función Schemecsr.
• Función Mckee.
• Función Mckeeim.
• Función Factorización.
• Función Solucion.
• Función Residuo.
%Programa Principal
1 clc;
2 clear all;
3 n = input('Da la dimensión de la matriz: ');
4 density = input('Da el porcentaje de dispersión de la matriz: ');
5 tic;
6 [A,B]=generamatriz(n, density);
7 [ia, ico, val, LA, MA, grado]=schemecsr(A);
51
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
la matriz, ver líneas 3 y 4. En la línea 5 la instrucción tic sirve para medir el tiempo
programa genera, almacena, reordena con ayuda de Mckee explícito o con Mckee
implícito, Factoriza y calcula tanto la solución como el residuo para verificar que
52
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
53
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
vector llamado grado donde se almacena el grado de cada uno de los nodos,
54
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
Ahora se muestra otro ejemplo de una matriz de dimensión 500 con 0.85 de
dispersión:
55
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
56
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
Mckee explícito así como el tiempo que nos lleva aplicar la factorización y
Tabla 5 Resultados
57
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
58
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
CONCLUSIONES
acerca de este tema y del área, además de que durante el desarrollo del mismo he
proceso que uno debe de realizar en la vida diaria para crecer profesionalmente.
Por último el terminar esta tesis me llena de un gran orgullo y me impulsa a seguir
este trabajo.
59
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
BIBLIOGRAFIA
[1] Andrew Lim, Brian Rodrigues, Fei Xiao, "A genetic Algorithm with Hill
(2002).
[2] Andrew Lim, Jing Lin, Brian Rodrigues, 2005, "Ant colony optimization
with Hill Climbing for the bandwidth Minimization Problem", Applied Soft
[3] Andrew Lim, Jing Lin, Fei Xiao, 2007, "Particle Swarm Optimization and
[7] M. Dolores García de León, Marzo 2003, Tesis Doctoral “Estrategias para
60
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
[8] Pedro Ramón Almeida Benítez, José Ramón Franco Brañas, 1999,
pp. 20-22.
pp. 278-280.
[14] Yousef Saad, 2003, “Iterative Methods for Sparse Linear Systems”,
61
Resolución de Sistemas de Ecuaciones Lineales Dispersos 2012
LIGAS INTERNET
[L1] http://nobelprize.org/nobel_prizes/economics/laureates/1990/markowitz-
autobio.html. (20/01/2012).
62