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
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