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

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

Данные хранятся в файле airfoil.mat. Данные состоят из 4253 пар (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. The axes 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. The axes 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. The axes 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. The axes 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. The axes with title Approximate Minimum Degree contains an object of type line.

См. также

| | |