Неполная LU-факторизация
ilu(A,options)
[L,U] = ilu(A,options)
[L,U,P] = ilu(A,options)
ilu создает модуль нижнюю треугольную матрицу, верхнюю треугольную матрицу и сочетание матрицу.
ilu(A,options) вычисляет неполную LU-факторизацию A. options - структура входа с пятью параметрами настройки. Поля должны быть названы так, как показано в таблице ниже. Можно включать любое количество этих полей в структуру и определять их в любом порядке. Любые дополнительные поля игнорируются.
Имя поля | Описание |
|---|---|
| Тип факторизации. Значения для
Если |
| Допуск неполной LU-факторизации. Ненулевые значения abs(U(i,j)) >= droptol*norm(A(:,j)), за исключением диагональных элементов, которые сохраняются независимо от соответствия критерию. Записи abs(L(i,j)) >= droptol*norm(A(:,j))/U(j,j). |
| Модифицированная неполная LU-факторизация. Значения для
|
| Если |
| Порог поворота между |
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.