08.11.2014 Views

Aprenda Matlab 6.1 - Universidad Politécnica de Madrid

Aprenda Matlab 6.1 - Universidad Politécnica de Madrid

Aprenda Matlab 6.1 - Universidad Politécnica de Madrid

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Aprenda</strong> <strong>Matlab</strong> <strong>6.1</strong> como si estuviera en Primero página 54<br />

speye(m,n)<br />

sprand(m,n)<br />

sprandn(m,n)<br />

sprandsym(n)<br />

spdiags(A)<br />

sparse(m,n)<br />

sparse(A)<br />

Matriz i<strong>de</strong>ntidad dispersa <strong>de</strong> tamaño m×n con unos en la diagonal<br />

Matriz aleatoria dispersa con distribución uniforme<br />

Matriz aleatoria dispersa con distribución normal<br />

Matriz aleatoria simétrica<br />

Matriz dispersa a partir <strong>de</strong> las diagonales <strong>de</strong> otra matriz<br />

Crea una matriz dispersa <strong>de</strong> tamaño m×n con todos los elementos cero<br />

Crea una matriz dispersa a partir <strong>de</strong> una matriz llena<br />

sparse(i,j,val,m,n) Construye una matriz dispersa a partir <strong>de</strong>: i vector <strong>de</strong> índices <strong>de</strong> fila, j<br />

vector <strong>de</strong> índices <strong>de</strong> columna, val vector <strong>de</strong> valores, m número <strong>de</strong> filas, n<br />

número <strong>de</strong> columnas, y un 6º argumento que permite <strong>de</strong>finir el máximo<br />

nnz (por <strong>de</strong>fecto en el tamaño <strong>de</strong> val) por si se quieren añadir <strong>de</strong>spués más<br />

elementos<br />

full(S) Convierte una matriz dispersa en una matriz llena<br />

find(S) Encuentra los índices <strong>de</strong> los elementos distintos <strong>de</strong> cero y los <strong>de</strong>vuelve<br />

como si la matriz fuera un vector (por columnas).<br />

[i,j,val]=find(S) Devuelve índices <strong>de</strong> fila, <strong>de</strong> columna y valores <strong>de</strong> los elementos, a partir<br />

<strong>de</strong> los cuáles se pue<strong>de</strong> volver a crear la matriz<br />

spy(S) Representa en una figura los elementos distintos <strong>de</strong> cero <strong>de</strong> la matriz<br />

nnz(S) Devuelve el número <strong>de</strong> elementos distintos <strong>de</strong> cero<br />

nonzeros(S) Devuelve un vector lleno que contiene los elementos distintos <strong>de</strong> cero<br />

nzmax(S) Memoria reservada para elementos distintos <strong>de</strong> cero<br />

spones(S) Reemplazar los elementos distintos <strong>de</strong> cero por unos<br />

spalloc(m,n,nzmax) Reserva espacio para una matriz dispersa m×n<br />

issparse(S) Devuelve true si el argumento es una matriz dispersa<br />

5.5.2. OPERACIONES CON MATRICES DISPERSAS<br />

Las matrices dispersas son más “<strong>de</strong>licadas” que las matrices llenas. En concreto, son muy sensibles<br />

a la or<strong>de</strong>nación <strong>de</strong> sus filas y columnas. El problema no es tanto la matriz dispersa en sí, como las<br />

matrices –también dispersas- que resultan <strong>de</strong> las factorizaciones LU o <strong>de</strong> Cholesky necesarias para<br />

resolver sistemas <strong>de</strong> ecuaciones, calcular valores y vectores propios, etc. En estas factorizaciones<br />

pue<strong>de</strong> haber muchos elementos cero que <strong>de</strong>jan <strong>de</strong> serlo y esto es un grave problema para la<br />

eficiencia <strong>de</strong> los cálculos. Reor<strong>de</strong>nando las filas y columnas <strong>de</strong> una matriz dispersa se pue<strong>de</strong><br />

minimizar el número <strong>de</strong> elementos que se hacen distintos <strong>de</strong> cero al factorizar (llenado o fill-in).<br />

MATLAB dispone <strong>de</strong> dos formas principales <strong>de</strong> reor<strong>de</strong>nación: los métodos <strong>de</strong>l mínimo grado<br />

(minimum <strong>de</strong>gree) y <strong>de</strong> Cuthill-McKee inverso (reversed Cuthill-McKee). A continuación se<br />

<strong>de</strong>scriben las funciones más importantes <strong>de</strong> MATLAB en esta categoría.<br />

spfun('fun', S) Aplica una función a los elementos distintos <strong>de</strong> cero <strong>de</strong> la matriz S<br />

p=colmmd(S) Devuelve el vector <strong>de</strong> permutaciones <strong>de</strong> columnas calculado con el método<br />

<strong>de</strong>l mínimo grado (minimum <strong>de</strong>gree). Para matrices no simétricas esta<br />

permutación tien<strong>de</strong> a producir factorizaciones LU más dispersas.<br />

p=symmmd(S) Devuelve el vector <strong>de</strong> permutaciones <strong>de</strong> filas y columnas (symmetric<br />

minimum <strong>de</strong>gree permutation). Aplicando esta permutación a las filas y<br />

columnas se obtienen factorizaciones <strong>de</strong> Cholesky más dispersas.<br />

p=symrcm(S) Obtiene un vector <strong>de</strong> permutaciones por el método <strong>de</strong> Cuthill-McKee<br />

inverso tal que, aplicado a filas y columnas <strong>de</strong> S, obtiene matrices con los

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!