Quais são os sintomas de mau condicionamento ao usar métodos diretos?

14

Suponha que temos um sistema linear e não sabemos nada sobre seu condicionamento e não temos informações preliminares sobre a solução. Aplicamos cegamente a eliminação gaussiana e obtemos alguma solução . É possível determinar se esta solução é confiável (isto é, que o sistema está bem condicionado) sem uma análise preliminar completa da matriz ? A magnitude dos pivôs fornece informações confiáveis?x

E, geralmente, quais são as principais diretrizes para a detecção de maus condicionamentos "on the fly"?

faleichik
fonte

Respostas:

13

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 ?euvocê

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 / ϵRCOND1/κ(UMA)κ(UMA)>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 = bUMATx=b

Tenho que confessar que não sou especialista na área, mas minha filosofia é: "se é bom o suficiente para o LAPACK, é para mim".

Stefano M
fonte
8

A solução de um sistema de equações mal condicionado com uma matriz da norma 1, no lado direito aleatório da norma 1, terá com alta probabilidade uma norma da ordem do número da condição. Assim, o cálculo de algumas dessas soluções dirá o que está acontecendo.

Arnold Neumaier
fonte
Isso é realmente o que o DGECON está fazendo, com a delicadeza adicional de refinar iterativamente a direção da pesquisa para maximizar o resultado e usar um solucionador triangular personalizado (não os BLAS) para não ter as coisas distorcidas por erros de aproximação. O custo computacional do DGECON é, portanto, comparável ao seu teste simples. +1 por lembrar-nos do significado simples de normas matriciais e número de condição. Deve ser interessante descobrir se o DGECON é realmente mais robusto em uma simples verificação aleatória.
Stefano M
que o número da condição de resolver A x = b coincide com o número da condição de computação A x basta apenas multiplicar a matriz em escala com esses vetores aleatórios em vez da solução real A x = b ? Ax=bAxAx=b
faleichik
2
Aκ ( A ) = Um Um - 1= Um - 1Uma Um x Um Um - 1A=1κ(A)=AA1=A1AAxA__A1
5

É 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: AAx=b

  1. Resolva para um vetor específico do lado direito b . Ax=bb
  2. Perturbar seu vetor do lado direito por onde | | £ | | é muito pequeno em comparação com | | b | | .bnew=b+ε||ϵ||||b||
  3. Resolva .Axnew=bnew
  4. Se o seu sistema estiver bem condicionado, sua nova solução deverá estar bastante próxima da antiga (por exemplo, deve ser pequeno). Se você observar uma mudança drástica na sua nova solução (ou seja, | | x - x n e w | | é grande), seu sistema provavelmente está mal condicionado. ||xxnew||||xxnew||

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||||A1||

Paulo
fonte
2
Seu alegação é extremamente longe da verdade. Mesmo que seja denso, pode ser fatorado uma vez com trabalho e cada solução requer apenas trabalho. Θ(kn3)AAO(n3)O(n2)
22612 Jack Poulson
@JackPoulson: Você está absolutamente certo ... acho que me esqueci completamente disso. Não se preocupe :) Vou atualizar minha resposta
Paul
Também se poderia avaliar o resíduo da solução resultante? Desde escalas como | | Um | | | | x | | uma quase singular A pode dar a mesmo residual significativo se a sua solução é muito ruim.
||Axb||
||A||||x||
A
Reid.Atcheson
@ Reid.Atcheson: Na verdade não. A solução aproximada para um sistema mal condicionado ainda pode produzir um pequeno resíduo. Isso realmente não fornece nenhuma indicação de quão longe está da verdadeira solução.
Paul
1
ε b