# lufact

fatoração LU esparsa

## Seqüência de Chamamento

    [hand,rk]=lufact(A,prec)

## Parâmetros

A

  matriz quadrada esparsa

hand

  manipulador para fatores LU esparsos

rk

  inteiro (posto de A)

prec

  vetor de tamanho 2 `prec=[eps,reps]` fornecendo os limiares absoluto e relativo.

## Descrição

`[hand,rk]=lufact(A)` realiza a fatoração LU da matriz esparsa `A`. `hand` (sem exibição) é usado por `lusolve` (para resolver sistemas lineares) e `luget` (para retirar os fatores). `hand` deve ser limpo pelo comando: `ludel(hand)`;

A matriz A não precisa ser de posto cheio, mas deve ser quadrada (desde que A é assumida como sendo esparsa, pode-se adicionar 0, se necessário, para quadrá-la).

eps :

  a magnitude absoluta que um elemento deve ter para ser considerado um candidato a pivô, exceto como último recurso. Este número deve ser posto de modo a ser significantemente menor que o menor elemento da diagonal que se espera estar localizado na matriz. O valor padrão é `%eps`.

reps :

  Este número determina qual será o limiar relativo do pivô. Deve estar entre 0 e 1. Se for 1, então o método de pivoteamento torna-se pivotação completa, que é muito lento e tende a completar a matriz. Se o número acertado é próximo de 0, o método de pivoteamento torna-se estritamente de Markowitz, sem limiar. O limiar de pivô é usado para eliminar candidatos a pivô que poderiam causar crescimento excessivo de elementos se fossem usados. Crescimento de elementos é a causa dos erros de arredondamento. Crescimento de elementos ocorre mesmo em matrizes bem condicionadas. Definir o reps como um número grande reduzirá o crescimento de elementos e os erros de arredondamento, mas colocá-lo muito grande aumentará muito o tempo de execução e resultará num grande número de preenchimentos. Se isto ocorrer, a precisão pode ficar prejudicada por causa do grande número de operações requeridas na matriz devido ao grande número de preenchimentos. 0.001 parece um bom valor, e é o valor default. O default é escolhido fornecendo-se um valor maior que 1 ou menor que ou igual a 0. Este valor deve ser aumentado e a matriz resolvida se o crescimento for excessivo. Mudar o limiar do pivô não melhora o desempenho em matrizes onde o crescimento é baixo, como é geralmente o caso de matrizes mal-condicionadas. reps foi escolhido para uso com matrizes quase diagonalmente dominantes como uma matriz de admissão de nó e nó modificado. Para estas matrizes, geralmente o melhor é usar pivotação diagonal. Para matrizes sem uma diagonal forte, geralmente é melhor usar um limiar maior, como 0.01 ou 0.1.

## Exemplos

    a=rand(5,5);b=rand(5,1);A=sparse(a);
    [h,rk]=lufact(A);
    x=lusolve(h,b);a*x-b
    ludel(h)

## Ver Também

- sparse
- lusolve
- luget