При решении многих
прикладных задач приходится иметь дело с
разреженными матрицами, то есть с матрицами,
имеющими много нулевых элементов. К числу таких
задач в первую очередь следует отнести граничные
задачи для систем дифференциальных уравнений в
частных производных. Возникающие при этом модели
- это, как правило, квадратные матрицы высокого
порядка с конечным числом ненулевых диагоналей. Известно,
что матрица порядка n требует для своего хранения
n2 байт оперативной памяти, а время
вычислений пропорционально n3. Поэтому,
когда количество неизвестных переменных
достигает нескольких сотен, вычисления с полными
матрицами становятся неэффективными и
необходимо принимать во внимание степень
разреженности матрицы, то есть отношение
количества ненулевых элементов к общему
количеству элементов матрицы.
Для разреженной матрицы S порядка m х n с
количеством ненулевых элементов nnz(S) требования
к объему оперативной памяти пропорциональны nnz.
Вычислительная сложность операций над
элементами массива также пропорциональна nnz,
линейно зависит от m и n и не зависит от
произведения m х n. Сложность такой операции как
решение системы линейных уравнений с
разреженной матрицей зависит от упорядочения
элементов и заполненности матрицы, что
обсуждается позднее в этой главе.
При работе с разреженными матрицами
соблюдается фундаментальный принцип
вычислительной сложности: время, необходимое для
выполнения матричных операций над разреженной
матрицей, пропорционально количеству
арифметических операций над ненулевыми
элементами. Это подтверждает широко
распространенное правило: время вычислений
пропорционально количеству операций с плавающей
точкой.
В этой главе описан новый класс операций,
реализованных в системе MATLAB, для работы с
разреженными матрицами. Это операции хранения,
преобразования, упорядочения, графического
представления и решения систем линейных
уравнений.
Элементарные разреженные матрицы
- SPARSE - формирование
разреженной матрицы
- SPDIAGS - формирование
диагоналей разреженной матрицы
- SPEYE - единичная разреженная
матрица
- SPRANDN - случайная
разреженная матрица
- SPRANDSYM - случайная
разреженная симметрическая матрица
Преобразование разреженных матриц
- FIND - определение индексов
ненулевых элементов
- FULL - преобразование
разреженной матрицы в полную
- SPCONVERT - преобразование
данных в ASCII-формате в массив разреженной
структуры
Работа с ненулевыми элементами
- ISSPARSE - проверка на
принадлежность к классу разреженных матриц
- NNZ - количество ненулевых
элементов
- NONZEROS - формирование
вектора ненулевых элементов
- NZMAX - количество ячеек
памяти для размещения ненулевых элементов
- SPALLOC - выделить
пространство памяти для разреженной матрицы
- SPFUN - вычисление функции
только для ненулевых элементов
- SPONES - формирование матрицы
связности
Характеристики разреженной системы
- NORMEST - оценка 2-нормы
разреженной матрицы
- CONDEST - оценка числа
обусловленности матрицы по 1-норме
- SPRANK - структурный ранг
разреженной матрицы
Визуализация разреженных матриц
- GPLOT - построение графа
- SPY - визуализировать
структуру разреженной матрицы
Алгоритмы упорядочения
- RANDPERM - формирование
случайных перестановок
- COLPERM - упорядочение
столбцов с учетом их разреженности
- DMPERM - DM-декомпозиция
разреженной матрицы
- SYMRCM - RCM-упорядоченность
- COLMMD - упорядочение по
разреженности столбцов
- SYMMMD - симметрическая
упорядоченность
Операции над деревьями
Вспомогательные операции
- SPPARMS - установка
параметров для алгоритмов упорядочения и
прямого решения линейных уравнений для
разреженных матриц
- SYMBFACT - характеристики
разложения Холецкого
- SPAUGMENT - формирование
расширенной матрицы для метода наименьших
квадратов
 
|