REPRESENTACIÓN GRÁFICA DE MATRICES DE TIPO SPARSE

117 views
Skip to first unread message

アタラクシア

unread,
Jul 11, 2007, 8:53:30 PM7/11/07
to The MATLAB users
%% Representación Gráfica de Matrices de tipo Sparse
% Este demo muestra el acoplamiento de elemento finito para un ala de
% vuelo de la NASA, incluyendo dos aletas de arrastre.
%
% Copyright 1984-2007 The MathWorks, Inc.
% $Revision: 5.9.4.4.1 $ $Fecha: 2007/07/10 22:27:12 $

%%
% El dato esta almacenado en el archivo AIRFOIL.MAT. Comprende 4253
% pares de coordenadas (x,y)de los puntos de acoplamiento. También
% comprende un arreglo de 12,289 pares de índices, (i,j), que
especifican
% conexiones entre los puntos de acoplamiento.

load airfoil

%% El Elemento Finito de Acoplamiento
% Primero, escalar x e y por 2^(32) para dejarlos en el rango [0,1].
Luego
% formar la matriz adyacencia sparse y hacerla positiva definida

% Escalando x e y
x = pow2(x,-32);
y = pow2(y,-32);

% Formando la matriz adyacencia sparse y haciéndola positiva definida
n = max(max(i),max(j));
A = sparse(i,j,-1,n,n);
A = A + A';
d = abs(sum(A)) + 1;
A = A + diag(sparse(d));

% Graficando el elemento finito de acoplamiento
gplot(A,[x y])

%% Visualizando el patrón de Sparsicidad
% SPY es usado para visualizar el patrón de sparsicidad. SPY(A)
grafica un
% patrón de sparcicidad de la matriz A.

spy(A)
title('La Matriz Adyacencia.')

%% Reordenamiento Simétrico - Inversa Cuthill-McKee
% SYMRCM uses la técnica inversa Cuthill-McKee para reordenar la
matriz
% adyacencia. r = SYMRCM(A) regresa un vector de permutación tal que
A(r,r)
% tiende a tener sus elementos diagonales más cercanos a la diagonal
que A.
% Este es un buen reordenamiento para la factorización LU o Cholesky
que
% vienen de problemas "largos, frágiles". Funciona para ambas matrices
A,
% simétricas y asimétricas.

r = symrmc(A);
spy(A(r,r));
title('Inversa Cuthill-McKee')

%% Reordenamiento Simétrico - COLPERM
% Use j = COLPERM(A) para obtener un vector permutación que reordene
las
% columnas de la matriz de tipo sparse A en orden no-decreciente de
cuenta
% diferente de cero. Esto es algunas veces útil como un
preordenamiento de
% la factorización LU: lu(A(:j)).

j = colperm(A);
spy(A(j,j))
title('Reordenamiento Cuenta Columna')

%% Reordenamiento Simétrico - SYMAMD
% SYMAMD da una permutación simétrica de mínimo grado aproximado. p =
% SYMAMD(S), para una matriz simétrica positiva definida A, se obtiene
el
% vector permutación p tal que S(p,p)tiende a tener un factor Cholesky
más
% de tipo Sparse que S. Algunas veces SYMAMD funciona mejor para
Matrices
% simétricas indefinidas también.

m = symamd(A);
spy(A(m,m))
title('Grado mínimo aproximado')


Traducido al español por Ataraxiainc


displayEndOfDemoMessage(mfilename)

Reply all
Reply to author
Forward
0 new messages