Quando uma matriz está mal condicionada ? Depende da precisão da solução que você procura, tanto quanto "a beleza está nos olhos de quem vê" ...
Pode ser que sua pergunta seja melhor reformulada, pois existem estimadores de número de condição baratos e robustos com base na fatoração da ?L U
Supondo que você esteja interessado no problema real geral (denso, não simétrico) na aritmética de dupla precisão, sugiro que você use o solucionador especialista LAPACK DGESVX, que fornece uma estimativa de condição na forma de seu recíproco, . Como bônus, você também tem outras vantagens, como equilíbrio / balanceamento de equações, refinamento iterativo, limites de erro para frente e para trás. A propósito, o mau condicionamento patológico ( ) é sinalizado como um erro por .κ ( A ) > 1 / ϵRCOND ≈ 1 / κ ( A )κ ( A ) > 1 / ϵINFO>0
Entrando em mais detalhes, o LAPACK estima o número da condição na norma 1 (ou -norm se você estiver resolvendo ) via DGECON . O algoritmo subjacente é descrito no gramado 36: "Soluções triangulares robustas para uso na estimativa de condições" .A T x = b∞UMATx = b
Tenho que confessar que não sou especialista na área, mas minha filosofia é: "se é bom o suficiente para o LAPACK, é para mim".
É quase impossível saber se o seu sistema está mal condicionado a partir de apenas um resultado. A menos que você tenha alguma previsão sobre o comportamento do seu sistema (ou seja, saiba qual deve ser a solução), não há muito o que dizer de uma única solução.
Dito isso, você pode ganhar mais informação se você resolver mais de um sistema com o mesmo . Suponha que você tenha um sistema no formato A x = b . Para um A específico que você não tem conhecimento prévio sobre seu condicionamento, é possível executar o seguinte teste:A Ax=b
Pode ser necessário resolver vários sistemas lineares com diferentes vetores do lado direito para fornecer uma melhor indicação sobre se o sistema está mal condicionado. Obviamente, esse processo é um pouco caro ( operações para a primeira solução e operações para cada solução sucessiva, supondo que o seu solucionador direto salve seus fatores). Se sua matriz A é bastante pequena, isso não é um problema. Se for grande, talvez você não queira fazer isso. Em vez disso, é melhor calcular o número da condiçãoem uma norma conveniente.Θ(n3) Θ(n2) ||A||⋅||A−1||
fonte