Os métodos padrão para determinar o espaço nulo de uma matriz são usar uma decomposição QR ou um SVD. Se a precisão é primordial, o SVD é o preferido; a decomposição do QR é mais rápida.
Usando o SVD, se A = UΣ VH , as colunas de V correspondentes a pequenos valores singulares (ou seja, pequenas entradas diagonais de Σ ) formam a base para o espaço nulo. A tolerância relevante aqui é o que se considera um valor singular "pequeno". O MATLAB, por exemplo, é pequeno para max ( m , n ) ⋅ ε , onde ε está relacionado à precisão da máquina (veja aqui na documentação do MATLAB ).
Usando a decomposição QR, se , e a classificação de for , as últimas colunas de formam o espaço nulo de , assumindo que a decomposição QR seja reveladora da classificação. Para determinar , calcule o número de entradas na diagonal principal de cuja magnitude excede uma tolerância (semelhante à usada na abordagem SVD).A r n - r Q A r RUMAT= Q RUMArn - rQUMArR
Não use a decomposição da LU. Na aritmética exata, é uma abordagem viável, mas com a aritmética de ponto flutuante, o acúmulo de erros numéricos a torna imprecisa.
A Wikipedia cobre esses tópicos aqui .