MATLAB.Exponenta
MATLAB и Simulink на русском
Технологии разработки и отладки
		сложных технических систем

MATLAB\MATLAB

В.Г.Потемкин "Справочник по MATLAB"
Работа с разреженными матрицами

  В оглавление книги \ К следующему разделу \ К предыдущему разделу

Алгоритмы упорядочения

COLPERM
Упорядочение столбцов с учетом их разреженности

Синтаксис:

            j = colperm(S)

Описание:

Функция j = colperm(S) возвращает такой вектор перестановок j, что столбцы матрицы S(:, j) будут упорядочены по возрастанию числа ненулевых элементов. Эту процедуру целесообразно применять перед тем, как выполнить LU-разложение.

Если S - симметрическая матрица, то оказываются упорядоченными и строки и столбцы. Если к тому же матрица S является еще и положительно определенной, то такую процедуру перестановок целесообразно применять перед тем, как выполнить LLT-разложение.

Алгоритм:

Алгоритм очень прост, он реализует сортировку столбцов по числу ненулевых элементов и выглядит следующим образом:

            [I, j] = find(S);
            [ignore, p] = sort(diff(find(diff([0 j' inf]))));

Примеры:

Рассмотрим матрицу вида

             A = [ones(1, n); ones(n-1, 1) speye(n-1, n-1)]

при n = 4

             A = image903.gif (431 bytes).

Ее LU-разложение представляет почти полную матрицу

             lu(A)= image904.gif (465 bytes).

Функция упорядочения столбцов j = colperm(A) возвращает вектор перестановок j = [2:n 1], так что матрица A(j, j) имеет следующий вид:

             A(j, j) = image905.gif (434 bytes),

а ее LU-разложение имеет такую же структуру ненулевых элементов, как исходная матрица A и массив A(j, j):

             lu(A(j, j ) = image906.gif (471 bytes).

Сопутствующие функции: COLMMD, SYMMMD, LU, CHOL.

  В оглавление книги \ К следующему разделу \ К предыдущему разделу

 


Поиск по сайту:

Система Orphus

Яндекс.Метрика