Разреженные матрицы: sparce, spy, speye, spalloc

При использовании численных методов (метод конечных разностей, метод конечных элементов) часто возникают матрицы, в которых ненулевые элементы составляют лишь малую часть. Такие матрицы называются разреженными. Было бы нерационально тратить драгоценную память компьютера на запоминание огромного количества нулей. Рассмотрим пример.

A =

1 0 0 0 -1

0 2 0 0 0

0 0 1 0 0

0 0 0 2 0

0 4 0 0 1

В этой матрице из 25 чисел лишь семь ненулевых, то есть меньше одной трети. С увеличением размеров матриц эта доля, как правило, уменьшается. В матрице жесткости конструкции, возникающей при применении МКЭ, доля ненулевых элементов обычно менее 5-ти процентов.

Для хранения таких матриц в MATLAB’e используется специальная технология.

Выполните команду:

>> B = sparse(A)

B =

(1,1) 1

(2,2) 2

(5,2) 4

(3,3) 1

(4,4) 2

(1,5) -1

(5,5) 1

Команда sparse (sparse - редкий) изменяет порядок хранения матрицы. То есть матрица B – это та же самая матрица A, но для запоминания каждого ненулевого элемента используется одно вещественное значение (величина элемента) и два целых (номера строки и столбца, в которых располагается этот элемент). А нулевые элементы, таким образом, вообще не занимают памяти.

Обращаться с разреженной матрицей можно также, как и с обычной. Например, сложить с другой матрицей

>> A+B

ans =

2 0 0 0 -2

0 4 0 0 0

0 0 2 0 0

0 0 0 4 0

0 8 0 0 2

Все нюансы, возникающие при выполнении операций с разреженными матрицами (а они имеются) MATLAB решает сам. Вникать в них вам не обязательно. Единственное, что требуется от вас – это дать понять MATLAB’у, с какой матрицей следует обращаться как с разреженной, а с какой – как с обычной.

Для работы с разреженными матрицами имеется довольно много функций. Однако на настоящем этапе ограничимся только одной:

>> spy(A)

Разреженные матрицы: sparce, spy, speye, spalloc - student2.ru
Эта функция (spy – подглядывать, подсматривать) дает графическое изображение расположения ненулевых элементов. Здесь, для матрицы размера 5х5 такое изображение мало, что дает. Однако в тех случаях, когда размер матрицы порядка сотен или даже тысяч, такая картинка дает очень ценную информацию о структуре матрицы.

Упражнения.

  1. Создайте обычным способом матрицу размера 6х6 с 7-8-ью ненулевыми элементами.
  2. Преобразуйте эту матрицу в разреженную
  3. Получите портрет матрицы

Задание

Найти решение системы линейных алгебраических уравнений Разреженные матрицы: sparce, spy, speye, spalloc - student2.ru . Матрицу A и вектор b взять по номеру своего варианта, заменяя значение n номером своего варианта.

Работу оформить в виде m-файла. Матрицу A следует создавать с использованием функций формирования матриц, имеющихся в системе MATLAB.

1–5. Разреженные матрицы: sparce, spy, speye, spalloc - student2.ru
6–10. Разреженные матрицы: sparce, spy, speye, spalloc - student2.ru
11–15. Разреженные матрицы: sparce, spy, speye, spalloc - student2.ru
16–20. Разреженные матрицы: sparce, spy, speye, spalloc - student2.ru
21–25. Разреженные матрицы: sparce, spy, speye, spalloc - student2.ru
26–30. Разреженные матрицы: sparce, spy, speye, spalloc - student2.ru

Наши рекомендации