Этот пример показывает конечный элемент, 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')