Kiedy matryca jest źle uwarunkowana ? Zależy to od dokładności poszukiwanego rozwiązania, tak samo jak „piękno jest w oku patrzącego” ...
Czy twoje pytanie powinno być lepiej sformułowane, ponieważ istnieją tanie i solidne estymatory liczbowe stanu oparte na faktoryzacji ?LU
Zakładając, że interesuje Cię prawdziwy ogólny (gęsty, niesymetryczny) problem arytmetyki podwójnej precyzji, sugerowałbym skorzystanie z solvera eksperckiego LAPACK DGESVX, który zapewnia oszacowanie warunków w postaci jego wzajemności, . Jako bonus masz również inne zalety, takie jak wyrównywanie / równoważenie równań, iteracyjne udoskonalanie, granice błędów do przodu i do tyłu. Nawiasem mówiąc, patologiczne złe warunkowanie ( κ ( A ) > 1 / ϵ ) jest sygnalizowane jako błąd przez .RCOND≈1/κ(A)κ(A)>1/ϵINFO>0
Mówiąc bardziej szczegółowo, LAPACK szacuje liczbę warunków w 1-normie (lub normie, jeśli rozwiązujesz A T x = b ) za pomocą DGECON . Podstawowy algorytm opisano w trawniku 36: „Solidne rozwiązania trójkątne do zastosowania w ocenie stanu” .∞ATx=b
Muszę wyznać, że nie jestem ekspertem w tej dziedzinie, ale moja filozofia jest następująca: „jeśli wystarczy dla LAPACK, to dla mnie”.
Jest prawie niemożliwe, aby stwierdzić, czy twój system jest źle uwarunkowany na podstawie tylko jednego wyniku. O ile nie masz pewności co do zachowania twojego systemu (tj. Wiesz, jakie powinno być rozwiązanie), niewiele możesz powiedzieć z jednego rozwiązania.
Mimo to, można uzyskać więcej informacji, jeśli rozwiązać więcej niż jeden system z tego samego . Załóżmy, że masz system w postaci A x = b . Dla konkretnego A, którego nie masz wcześniejszej wiedzy na temat jego warunkowania, możesz wykonać następujący test:A Ax=b
Konieczne może być rozwiązanie kilku układów liniowych za pomocą różnych wektorów po prawej stronie, aby lepiej określić, czy układ jest źle uwarunkowany. Oczywiście proces ten jest nieco kosztowny ( operacji dla pierwszego rozwiązania i Θ ( n 2 ) operacji dla każdego kolejnego rozwiązania, przy założeniu, że Twój bezpośredni solver zapisuje jego czynniki). Jeśli matryca A jest dość mała, nie stanowi to problemu. Jeśli jest duży, możesz tego nie chcieć. Zamiast tego lepiej jest obliczyć numer warunku | | A | | ⋅ | | A - 1 |Θ(n3) Θ(n2) w dogodnej normie.||A||⋅||A−1||
źródło