Графическое представление разреженных матриц

Этот пример показывает mesh конечного элемента для крыла НАСА, включая две запаздывающих откидных створки. Больше информации об истории крыльев доступно в Крыльях NACA (nasa.gov).

Данные хранятся в файле airfoil.mat. Данные состоят из 4 253 пар (x, y) координаты точек mesh. Это также содержит массив 12 289 пар индексов, (i, j), задавая связи между точками mesh.

Загрузите файл данных в рабочую область.

load airfoil

Просмотрите Mesh конечного элемента

Во-первых, масштабируйте x и y 2-32 принести им в область значений [0,1]. Затем сформируйте разреженную матрицу смежности из (i, j) связи и сделайте ее положительной определенный. Наконец, постройте матрицу смежности, использующую (x, y) как координаты для вершин (точки mesh).

% Scaling x and y
x = pow2(x,-32); 
y = pow2(y,-32);

% Forming the sparse adjacency matrix and making it positive definite
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));

% Plotting the finite element mesh
gplot(A,[x y])
title('Airfoil Cross-Section')

Визуализируйте шаблон разреженности

Можно использовать spy визуализировать ненулевые элементы в матрице, таким образом, это - особенно полезная функция, чтобы видеть шаблон разреженности в разреженных матрицах. spy(A) строит шаблон разреженности матричного A.

spy(A)
title('Airfoil Adjacency Matrix')

Симметричное переупорядочение - обратный алгоритм Катхилла-Макки

symrcm использует метод Обратного алгоритма Катхилла-Макки для переупорядочения матрицы смежности. r = symrcm(A) возвращает вектор сочетания r таким образом, что A(r,r) имеет тенденцию иметь его диагональные элементы ближе к диагонали, чем A. Эта форма является хорошим предварительным упорядоченным расположением для LU или факторизации Холесского матриц, которые прибывают из "долгих, тощих" проблем. Это работает и на симметричные и на несимметричные матрицы.

r = symrcm(A);
spy(A(r,r))
title('Reverse Cuthill-McKee')

Симметричное переупорядочение - сочетания столбца

Используйте j = COLPERM(A) возвратить вектор сочетания, который переупорядочивает столбцы разреженной матрицы A в не уменьшающемся порядке ненулевого количества. Эта форма иногда полезна как предварительное упорядоченное расположение для LU-факторизации, как в lu(A(:,j)).

j = colperm(A);
spy(A(j,j))
title('Column Count Reordering')

Симметричное переупорядочение - симметричная аппроксимированная минимальная степень

symamd дает симметричное аппроксимированное минимальное сочетание степени. Для симметричного положительного определенного матричного A, команда p = symamd(S) возвращает вектор сочетания p таким образом, что S(p,p) имеет тенденцию иметь более разреженный Фактор Холесского, чем S. Иногда symamd работает хорошо на симметричные неопределенные матрицы также.

m = symamd(A);
spy(A(m,m))
title('Approximate Minimum Degree')

Смотрите также

| | |