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 type e, 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
Saída
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

Veja também

ichol lu gmres bicgstab