ilu

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

Синтаксис

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

Описание

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

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

Имя поля

Описание

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 - предварительное создание условий методов.

Расширенные возможности

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

| |