Quels sont les symptômes d'un mauvais conditionnement lors de l'utilisation de méthodes directes?


14

Supposons que nous ayons un système linéaire et que nous ne sachions rien de son conditionnement et que nous n'ayons aucune information préliminaire sur la solution. Nous appliquons aveuglément l'élimination gaussienne et obtenons une solution . Est-il possible de déterminer si cette solution est fiable (c'est-à-dire que le système est bien conditionné) sans une analyse préalable approfondie de la matrice ? L'ampleur des pivots donne-t-elle des informations fiables?x

Et généralement, quelles sont les principales lignes directrices pour détecter les mauvais conditionnements "à la volée"?

Réponses:


13

Quand une matrice est-elle mal conditionnée ? Cela dépend de la précision de la solution que vous recherchez, autant que "la beauté est dans l'œil du spectateur" ...

Peut-être votre question devrait-elle être mieux reformulée, car existe-t-il des estimateurs de nombre de conditions bon marché et robustes basés sur la factorisation ?LU

En supposant que vous êtes intéressé par le vrai problème général (dense, non symétrique) en arithmétique double précision, je vous suggère d'utiliser le solveur expert LAPACK DGESVX qui fournit une estimation de condition sous la forme de son réciproque, . En prime, vous avez également d'autres avantages comme l'équilibrage / équilibrage d'équations, le raffinement itératif, les limites d'erreur avant et arrière. Soit dit en passant, un mauvais conditionnement pathologique ( κ ( A ) > 1 / ϵ ) est signalé comme une erreur par .RCOND1/κ(A)κ(A)>1/ϵINFO>0

Pour aller plus loin, LAPACK estime le nombre de conditions dans la norme 1 (ou normale si vous résolvez A T x = b ) via DGECON . L'algorithme sous-jacent est décrit dans la pelouse 36: "Résolutions triangulaires robustes pour une utilisation dans l'estimation de la condition" .ATx=b

Je dois avouer que je ne suis pas un expert dans le domaine, mais ma philosophie est: "si c'est assez bon pour LAPACK, c'est pour moi".


8

La solution d'un système d'équations mal conditionné avec une matrice de norme 1 un côté aléatoire aléatoire de la norme 1 aura avec une forte probabilité une norme de l'ordre du nombre de conditions. Ainsi, le calcul de quelques-unes de ces solutions vous dira ce qui se passe.


C'est en effet ce que fait DGECON, avec la finesse supplémentaire d'affiner itérativement la direction de recherche afin de maximiser le résultat, et d'utiliser un solveur triangulaire personnalisé (pas les BLAS) afin de ne pas fausser les choses par des erreurs d'approximation. Le coût de calcul de DGECON est donc comparable à votre simple test. +1 pour nous souvenir de la signification simple des normes matricielles et du numéro de condition. Il devrait être intéressant de savoir si DGECON est vraiment plus robuste qu'un simple contrôle aléatoire.
Stefano M

Tenant compte du fait que le nombre de conditions de résolution coïncide avec le nombre de conditions de calcul A x suffit-il simplement de multiplier la matrice mise à l'échelle avec ces vecteurs aléatoires au lieu de résoudre réellement A x = b ? Ax=bAxAx=b
faleichik

2
@faleichik Bien sûr que non: l'astuce ici est de mettre à l'échelle telle sorte que A = 1 et κ ( A ) = A A - 1= A - 1 . Bien sûr, étant cette algèbre linéaire, vous n'avez pas à mettre à l'échelle A mais seulement A x ... néanmoins vous devez d'abord calculer A . Votre argument inverse nécessiterait de calculer d'abord A - 1AA=1κ(A)=AA1=A1AAxAA1ce que nous nous efforçons d'évaluer.
Stefano M

5

Il est presque impossible de dire si votre système est mal conditionné à partir d'un seul résultat. À moins que vous ayez une certaine prévoyance sur le comportement de votre système (c.-à-d. Que vous sachiez quelle solution DEVRAIT être), vous ne pouvez pas dire grand-chose d'une solution unique.

Cela dit, vous pouvez obtenir plus d' informations si vous résolvez plus d'un système avec le même . Supposons que vous ayez un système de la forme A x = b . Pour un A spécifique dont vous n'avez aucune connaissance préalable sur son conditionnement, vous pouvez effectuer le test suivant: AAx=b

  1. Résoudre pour un vecteur spécifique du côté droit b . Ax=bb
  2. Perturbez votre vecteur de droite par | | ϵ | | est très petit par rapport à | | b | | .bnew=b+ε||ϵ||||b||
  3. Résoudre .Axnew=bnew
  4. Si votre système est bien conditionné, votre nouvelle solution doit être assez proche de votre ancienne solution (ie doit être petite). Si vous observez un changement radical de votre nouvelle solution (c'est-à-dire | | x - x n e w | | est grand), alors votre système est probablement mal conditionné. ||xxnew||||xxnew||

Vous devrez peut-être résoudre plusieurs systèmes linéaires avec différents vecteurs du côté droit pour vous donner une meilleure indication si le système est mal conditionné. Bien sûr, ce processus est un peu cher (opérations pour la première solution et opérations Θ ( n 2 ) pour chaque solution successive, en supposant que votre solveur direct enregistre ses facteurs). Si votre matrice A est assez petite, ce n'est pas un problème. S'il est grand, vous ne voudrez peut-être pas le faire. Au lieu de cela, vous feriez mieux de calculer le numéro de condition | | A | | | | A - 1 |Θ(n3)Θ(n2)dans une norme pratique.||A||||A1||


2
Θ(kn3)AAO(n3)O(n2)

@JackPoulson: Vous avez absolument raison ... Je suppose que je me suis complètement écarté. Pas de soucis :) Je mettrai à jour ma réponse
Paul

Pourrait-on également évaluer le résidu de la résolution résultante? Puisque
||UNEX-b||
échelles comme
||UNE||||X||
un presque singulier UNEpourrait donner un résidu significatif même si sa solution est très mauvaise.
Reid.Atcheson

@ Reid.Atcheson: Pas vraiment. La solution approximative à un système mal conditionné peut encore produire un petit résidu. Cela ne vous donne pas vraiment d'indication sur la distance à laquelle il est éloigné de la vraie solution.
Paul

1
Il est peut-être plus sage de déclarer explicitement εtrès petit par rapport à b. Tout est relatif dans ce domaine ... La plupart des lecteurs le sauront, mais quelqu'un pourrait être induit en erreur dans des eaux dangereuses.
Stefano M
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.