ilu

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

Синтаксис

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

Описание

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

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

Имя поля

Описание

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,options) возвращает L+U-speye(size(A)), где L является модуль нижней треугольной матрицей и U является верхней треугольной матрицей.

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

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

Ограничения

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

Примеры

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

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

ans =

  1.4251e-014

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

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

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

        7840

nnz(lu(A))
ans =

      126478

nnz(ilu(A,options))
ans =

        7840 

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

Совет

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

Ссылки

[1] Saad, Yousef, Итерационные методы для разреженных линейных систем, PWS Publishing Company, 1996, Глава 10 - Preconditioning Technologies.

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

См. также

| |