exponenta event banner

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

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

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

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

load airfoil

Просмотр сетки конечных элементов

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

% 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 или Cholesky факторизации матриц, которые происходят от «длинных, худых» задач. Он работает как для симметричных, так и для несимметричных матриц.

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(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.

См. также

| | |