И другие программы этой серии
К-й блок матрицы A(p,q) имеет индексы r(k):r(k+1)–1; [p,q,r,s] = dmperm(A) находит перестановки p и q и векторы индексов r и s, так что матрица A(p,q) оказывается в верхней треугольной форме. Блок имеет индексы (r(i):r(i+1)–1,s(i):s(i+1)–1). В терминах теории графов диагональные блоки соответствуют сильным компонентам Холла графа смежности матрицы À. Примеры:
>> A=sparse([1,2,1,3,2],[3,2,1,1,1],[7,6,4,5,4],3,3);full(A) ans =
407
460
500 >> [p,q,r]=dmperm(A)
Функция colamd – более мощная и быстрая реализация colmmd.
1 Квадратная матрица A называется приводимой, если она подобна клеточной матрице, квадратные элементы которой соответствуют индукции линейного оператора A в отдельные подпространства.
244
Типы данных – массивы специального вида
Применение разреженных матриц
245
p =
123 q =
321 r =
1234 >> full(A(p,q)) ans =
704
064
005
• symmmd(S) возвращает вектор упорядоченности для симметричной положительно определенной матрицы S, так что S(p,p) будет иметь более разреженное разложение Холецкого, чем S. Иногда symmmd хорошо работает с симметрическими неопределенными матрицами. Такое упорядочение автоматически применяется при выполнении операций \\ и /, а также при решении линейных систем с разреженными матрицами. Можно использовать команду spparms, чтобы изменить некоторые опции и параметры, связанные с эвристикой в алгоритме.
Алгоритм упорядочения для симметрических матриц основан на алгоритме упорядочения по разреженности столбцов. Фактически symmmd(S) только формирует матрицу Ê с такой структурой ненулевых элементов, что K\'*K имеет тот же график разреженности, что и S, и затем вызывает алгоритм упорядочения по разреженности столбцов для K. Пример:
>> B=bucky;p=symmmd(B);
>> R=B(p,p);
>> subplot(1,2,1),spy(B);subplot(1,2,2),spy(R)
На рис. 5.2 приводится пример применения функции symmmd к элементам разреженной матрицы.
• r = symrcm(S) возвращает вектор упорядоченности для симметричной матрицы S и называется упорядочением Катхилла-Макки.
Начало в части 1