Этот пример показывает конечный элемент, mesh для аэродинамической поверхности НАСА, включая два задних клапана. Больше информации об истории аэродромов можно найти в NACA Airfoils (nasa.gov).
Данные хранятся в файле airfoil.mat. Данные состоят из 4253 пар (x, y) координат mesh. Он также содержит массив из 12 289 пар индексов (i, j), задающих связи между точками mesh.
Загрузите файл данных в рабочую область.
load airfoilВо-первых, масштабные x и y около вывести их в область значений . Затем сформируйте разреженную матрицу смежности из (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')