Jakie są objawy złego warunkowania przy stosowaniu metod bezpośrednich?


14

Załóżmy, że mamy system liniowy i nie wiemy nic o jego warunkowaniu i nie mamy wstępnych informacji o rozwiązaniu. Ślepo stosujemy eliminację Gaussa i uzyskujemy rozwiązanie x . Czy można ustalić, czy to rozwiązanie jest godne zaufania (tj. Czy system jest dobrze uwarunkowany) bez dokładnej wstępnej analizy matrycy ? Czy wielkość czopów dostarcza wiarygodnych informacji?

I ogólnie, jakie są główne wytyczne dotyczące wykrywania złych warunków „w locie”?

Odpowiedzi:


13

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 .RCOND1/κ(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”.


8

Rozwiązanie źle uwarunkowanego układu równań z macierzą normy 1 losowa prawa strona normy 1 będzie z dużym prawdopodobieństwem normą rzędu liczby warunków. W ten sposób obliczenie kilku takich rozwiązań powie ci, co się dzieje.


To właśnie robi DGECON, z dodatkową finezją iteracyjnego udoskonalania kierunku wyszukiwania w celu zmaksymalizowania wyniku oraz za pomocą niestandardowego trójkątnego solvera (nie BLAS), aby nie wypaczać rzeczy przez błędy aproksymacji. Koszt obliczeniowy DGECON jest zatem porównywalny z twoim prostym testem. +1 za zapamiętanie prostego znaczenia norm macierzowych i liczby warunków. Ciekawe powinno być sprawdzenie, czy DGECON jest naprawdę bardziej odporny na proste losowe sprawdzanie.
Stefano M

Biorąc pod uwagę, że liczba warunków rozwiązania pokrywa się z liczbą warunków obliczenia A x, czy wystarczy pomnożyć skalowaną macierz przez te losowe wektory zamiast rzeczywistego rozwiązania A x = b ? Ax=bAxAx=b
faleichik

2
@faleichik Na pewno nie: sztuczka polega na takim skalowaniu , aby A = 1 i κ ( A ) = A A - 1= A - 1 . Oczywiście, będąc algebrą liniową, nie musisz tak naprawdę skalować A, ale tylko A x ... jednak musisz najpierw obliczyć A . Twój odwrotny argument musiałby najpierw obliczyć A - 1AA=1κ(A)=AA1=A1AAxAA1co staramy się ocenić.
Stefano M

5

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

  1. Rozwiąż dla określonego wektora prawej strony b . Ax=bb
  2. Przesuń wektor prawej strony o gdzie | | ϵ | | jest bardzo mały w porównaniu do | | b | | .bnew=b+ε||ϵ||||b||
  3. Rozwiąż .Axnew=bnew
  4. Jeśli twój system jest dobrze uwarunkowany, nowe rozwiązanie powinno być dość zbliżone do starego (tj. powinno być małe). Jeśli zaobserwujesz dramatyczną zmianę w nowym rozwiązaniu (tj. | | X - x n e w | | jest duży), oznacza to, że twój system jest prawdopodobnie źle uwarunkowany. ||xxnew||||xxnew||

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


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

@JackPoulson: Masz absolutną rację ... Wydaje mi się, że całkowicie się od tego rozdzieliłem. Bez obaw :) Zaktualizuję moją odpowiedź
Paweł

||Axb||
scales as
||A||||x||
a nearly singular A might give a meaningful residual even if its solution is very bad.
Reid.Atcheson

@Reid.Atcheson: Not really. The approximate solution to an ill conditioned system can still produce a small residual. This does not really doesn't give you any indication as to how far away it is from the true solution.
Paul

1
May be it is more wise to explicitly state ε very small with respect to b. Everything is relative in this area... Most readers will know, but someone could be mislead in dangerous waters.
Stefano M
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.