ilu
Fatoração LU incompleta de uma matriz esparsa.
Categoria: Mathematics > Sparse Matrices
Sintaxe
[L, U] = ilu(A)
Retorna fatores triangulares esparsos com o padrão de não nulos de A, de modo que L*U aproxime A.
[L, U] = ilu(A, opts)
Escolhe a variante com uma struct: type é 'nofill', 'crout' ou 'ilutp', com droptol nas duas últimas.
LU = ilu(A)
Retorna os dois fatores juntos em uma matriz (L sem a diagonal unitária, mais U).
Descrição
Uma fatoração LU exata de uma matriz esparsa costuma preencher muitos zeros. ilu mantém os fatores esparsos descartando elementos: os que estão fora do padrão original ('nofill') ou os menores que uma tolerância ('crout', 'ilutp'). Assim L*U fica apenas próximo de A, que é justamente o desejado para um pré-condicionador.
Passe L e U como M1 e M2 ao gmres, bicgstab e aos demais solvers iterativos.
Argumentos de entrada
A- Matriz esparsa quadrada.
opts- Struct com
typee, para'crout'e'ilutp',droptol, um limiar abaixo do qual os elementos são descartados.
Argumentos de saída
L- Fator triangular inferior com diagonal unitária.
U- Fator triangular superior.
Exemplo
Pré-condicionando o bicgstab
A = sparse(diag(4*ones(5,1)) + diag(ones(4,1),1) + diag(ones(4,1),-1));
[L, U] = ilu(A);
full(U)
b = (1:5)';
[x, flag] = bicgstab(A, b, 1e-10, 50, L, U);
flag
ans = 5×5
4.0000 1.0000 0 0 0
0 3.7500 1.0000 0 0
0 0 3.7333 1.0000 0
0 0 0 3.7321 1.0000
0 0 0 0 3.7321
flag = 0