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

Этот пример показывает 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')

Figure contains an axes object. The axes object with title Airfoil Cross-Section contains an object of type line.

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

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

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

Figure contains an axes object. The axes object with title Airfoil Adjacency Matrix contains an object of type line.

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

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

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

Figure contains an axes object. The axes object with title Reverse Cuthill-McKee contains an object of type line.

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

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

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

Figure contains an axes object. The axes object with title Column Count Reordering contains an object of type line.

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

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

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

Figure contains an axes object. The axes object with title Approximate Minimum Degree contains an object of type line.

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

| | |