ilu

Неполная LU-факторизация

Синтаксис

ilu(A,setup)
[L,U] = ilu(A,setup)
[L,U,P] = ilu(A,setup)

Описание

ilu производит модуль нижняя треугольная матрица, верхняя треугольная матрица и матрица перестановок.

ilu(A,setup) вычисляет неполную LU-факторизацию A. setup является входной структурой максимум с пятью опциями настройки. Поля нужно назвать точно как показано в приведенной ниже таблице. Можно включать любое количество этих полей в структуре и задать их в любом порядке. Проигнорированы любые дополнительные поля.

Имя поля

Описание

type

Тип факторизации. Значения для type включают:

  • 'nofill' (значение по умолчанию) — Выполняет факторизацию ILU с уровнем 0, заполняют, известный как ILU (0). С набором type к 'nofill' только используется опция настройки milu; все другие поля проигнорированы.

  • 'crout' — Выполняет версию Crout факторизации ILU, известной как ILUC. С набором type к 'crout' только используются опции настройки droptol и milu; все другие поля проигнорированы.

  • 'ilutp' — Выполняет факторизацию ILU с порогом и поворот.

Если type не задан, факторизация ILU с уровнем 0 заполняют, выполняется. Поворот только выполняется с набором type к 'ilutp'.

droptol

Пропустите допуск неполной LU-факторизации. droptol является неотрицательным скаляром. Значением по умолчанию является 0, который производит полную LU-факторизацию.

Ненулевые записи U удовлетворяют

  abs(U(i,j)) >= droptol*norm(A(:,j)),

за исключением диагональных элементов, которые сохраняются независимо от удовлетворения критерия. Записи L тестируются против локального допуска отбрасывания прежде чем быть масштабируемым центром, таким образом, для ненулей в L

abs(L(i,j)) >= droptol*norm(A(:,j))/U(j,j).

milu

Измененная неполная LU-факторизация. Значения для milu включают:

  • 'row' — Производит измененную неполную LU-факторизацию суммы строки. Записи из недавно сформированного столбца факторов вычтены из диагонали верхнего треугольного фактора, U, сохранив суммы столбца. Таким образом, A*e = L*U*e, где e является вектором из единиц.

  • 'col' — Производит измененную неполную LU-факторизацию суммы столбца. Записи из недавно сформированного столбца факторов вычтены из диагонали верхнего треугольного фактора, U, сохранив суммы столбца. Таким образом, e'*A = e'*L*U.

  • 'off' (значение по умолчанию) — Никакая измененная неполная LU-факторизация не производится.

udiag

Если udiag является 1, любые нули на диагонали верхнего треугольного фактора заменяются локальным допуском отбрасывания. Значением по умолчанию является 0.

thresh

Порог центра между 0 (обеспечивает поворот диагонали), и 1, значение по умолчанию, которое всегда выбирает максимальную запись значения в столбце, чтобы быть центром.

ilu(A,setup) возвращает L+U-speye(size(A)), где L является модулем, нижняя треугольная матрица и U являются верхней треугольной матрицей.

[L,U] = ilu(A,setup) возвращает модуль нижняя треугольная матрица в L и верхняя треугольная матрица в U.

[L,U,P] = ilu(A,setup) возвращает модуль нижняя треугольная матрица в L, верхняя треугольная матрица в U и матрица перестановок в P.

Ограничения

ilu работает над разреженными квадратными матрицами только.

Примеры

Запустите с разреженной матрицы и вычислите LU-факторизацию.

A = gallery('neumann', 1600) + speye(1600);
setup.type = 'crout';
setup.milu = 'row';
setup.droptol = 0.1;
[L,U] = ilu(A,setup);
e = ones(size(A,2),1);
norm(A*e-L*U*e)

ans =

  1.4251e-014

Это показывает, что A и L*U, где L и U даны измененным ILU Crout, имеют ту же сумму строки.

Запустите с разреженной матрицы и вычислите LU-факторизацию.

A = gallery('neumann', 1600) + speye(1600);
setup.type = 'nofill';
nnz(A)
ans =

        7840

nnz(lu(A))
ans =

      126478

nnz(ilu(A,setup))
ans =

        7840 

Это показывает, что A имеет ненули 7840, полная LU-факторизация имеет ненули 126478, и неполная LU-факторизация, с уровнем 0 временной замены, имеет ненули 7840, та же сумма как A.

Советы

Эти неполные факторизации могут быть полезны как предварительные формирователи для системы линейных уравнений, решаемых итерационными методами, такими как BICG (Градиенты BiConjugate), GMRES (Обобщенный Метод минимальных невязок).

Ссылки

[1] Саад, Yousef, итерационные методы для разреженных линейных систем, издательства PWS, 1996, глава 10 - предварительное создание условий методов.

Смотрите также

| |