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 .RCOND≈1/κ(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".
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:A Ax=b
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||⋅||A−1||
la source