În domeniul analizei numerice stabilitatea numerică este întotdeauna o proprietate dezirabilă a algoritmilor numerici. Definiția precisă a stabilității depinde de context: un context important este algebra liniară numerică, iar altul îl reprezintă algoritmii pentru rezolvarea prin aproximare discretă a ecuațiilor diferențiale ordinare și a celor cu derivate parțiale.
În algebra liniară numerică, principala preocupare o reprezintă instabilitățile cauzate de proximitatea singularităților de diferite tipuri, cum ar fi valorile proprii foarte mici sau aproape în coliziune. Pe de altă parte, în algoritmii numerici pentru ecuații diferențiale preocuparea este creșterea erorilor de rotunjire și/sau a fluctuațiilor mici ale datelor inițiale, care ar putea provoca o abatere mare a răspunsului final față de la soluția exactă.
Unii algoritmi numerici pot amortiza micile fluctuații (erorile) din datele de intrare; alții ar putea amplifica astfel de erori. Calculele despre care se poate demonstra că nu amplifica erorile de aproximare se numesc numeric stabile. Una dintre sarcinile comune ale analizei numerice este de a alege algoritmi care sunt robuști, care nu dau un rezultat foarte diferit la o modificare foarte mică a datelor de intrare.
Antonimul stabilității este instabilitatea. De obicei un algoritm folosește o metodă aproximativă, iar în unele cazuri s-ar putea demonstra că algoritmul s-ar apropia de soluția corectă într-o anumită limită (atunci când se utilizează numere reale, nu numere în virgulă mobilă). Chiar și în acest caz, nu există nicio garanție că el va converge către soluția corectă, deoarece erorile de rotunjire sau trunchiere în virgulă mobilă pot fi amplificate, în loc să fie amortizate, determinând creșterea exponențială a abaterii de la soluția exactă.
Stabilitatea în algebra liniară numerică thumb|Diagramă care prezintă eroarea directă și eroarea inversă , precum și relația lor cu soluția exactă și a soluției numerice a aplicației Există diferite modalități de a formaliza conceptul de stabilitate. În algebra liniară numerică sunt adesea utilizate următoarele definiții ale stabilității directe, inverse și mixte.
Fie problema care trebuie rezolvată de algoritmul numeric ca o funcție care aplică datele pe soluția . Rezultatul algoritmului, să zicem *, se va abate de obicei de la soluția „adevărată” . Principalele cauze ale erorii sunt eroarea de rotunjire și eroarea de trunchiere. Eroarea directă a algoritmului este diferența dintre rezultat și soluția „adevărată”; în acest caz, . Eroarea inversă este cea mai mică astfel încât Cu alte cuvinte, eroarea inversă spune ce problemă a rezolvat de fapt algoritmul. Eroarea directă și eroarea inversă sunt legate de : eroarea directă are cel mult mărimea condiționării înmulțită cu mărimea erorii inverse.
În multe cazuri este mai natural să se considere eroarea relativă
în loc de eroarea absolută
Un algoritm este stabil invers dacă eroarea inversă este mică pentru toate intrările . Desigur, „mic” este un termen relativ, iar definiția sa va depinde de context. Adesea se dorește ca eroarea să fie de același ordin de mărime sau poate doar cu câteva ordine de mărime mai mare decât „precizia mașinii de calcul”.
thumb|Stabilitatea mixtă combină conceptele de eroare directă și eroare inversă Definiția obișnuită a stabilității numerice folosește un concept mai general, numit „stabilitate mixtă”, care combină eroarea directă și eroarea inversă. Un algoritm este stabil în acest sens dacă rezolvă aproximativ o problemă apropiată, adică dacă există un astfel încât ambele sunt mici și este mică. Prin urmare, un algoritm stabil invers este întotdeauna stabil.
Un algoritm este stabil direct dacă eroarea sa directă împărțită la numărul condiționării problemei este mică. Aceasta înseamnă că un algoritm este stabil direct dacă are o eroare directă de mărime similară cu un algoritm stabil invers.
Stabilitatea numerică la ecuațiile diferențiale Definițiile de mai sus sunt relevante în special în situațiile în care erorile de trunchiere nu sunt importante. În alte contexte, de exemplu la rezolvarea numerică a ecuațiilor diferențiale se folosește o definiție diferită a stabilității numerice. În metodele numerice pentru rezolvarea ecuațiilor diferențiale ordinare există stabilitatea numerică în sensul sistemelor dinamice, cum ar fi . O metodă stabilă este importantă la calculul rigidității sistemelor.
O altă definiție este utilizată în calculul numeric al ecuațiilor cu derivate parțiale. Un algoritm pentru rezolvarea unei ecuații cu derivate parțiale liniare este stabil dacă a soluției numerice la un moment fix rămâne mărginită pe măsură ce pasul tinde spre zero. afirmă că un algoritm converge dacă este consistent și stabil. Stabilitatea este uneori obținută prin folosirea . Difuzia numerică este un termen matematic folosit când rotunjirea și alte erori din calcul se dispersează, nu se adună pentru a provoca blocarea calculului. este o procedură utilizată în mod obișnuit pentru analiza stabilității schemelor cu diferențe finite aplicată ecuațiilor cu derivate parțiale liniare. Aceste rezultate nu sunt valabile pentru ecuații cu derivate parțiale neliniare, unde o definiție generală și consistentă a stabilității este complicată de diverse proprietăți care nu apar la ecuațiile liniare.
Exemplu Calcularea rădăcinii pătrate a lui 2 (care este aproximativ 1,41421) este o problemă bine pusă. Mulți algoritmi rezolvă această problemă începând cu o aproximare inițială a lui de exemplu și apoi calculând estimări îmbunătățite etc. O astfel de metodă este celebra metodă babiloniană, care este dată de O altă metodă, numită „metoda X”, este dată de Aceasta este o iterație de punct fix pentru ecuația ale cărei soluții include pe Iterațiile se deplasează întotdeauna spre dreapta deoarece Prin urmare, pentru metoda converge, iar pentru diverge. În tabelul următor sunt prezentate câteva iterații ale fiecărei scheme, cu estimările inițiale Babiloniană Metoda X x0 = 1,4 x0 = 1,42 x0 = 1,4 x0 = 1,42 x1 = 1,4142857... x1 = 1,41422535... x1 = 1,4016 x1 = 1,42026896 x2 = 1,414213564... x2 = 1,41421356242... x2 = 1,4028614... x2 = 1,42056... ... ... x1000000 = 1,41421... x27 = 7280,2284...
Se observă că metoda babiloniană converge rapid indiferent de estimarea inițială, în timp ce Metoda X converge extrem de lent cu estimarea inițială și diverge pentru estimarea inițială Prin urmare, metoda babiloniană este stabilă numeric, în timp ce metoda X este instabilă numeric.
Stabilitatea numerică este afectată de numărul de cifre semnificative de care dispune calculatorul. Dacă se utilizează un calculator cu doar patru cifre zecimale cele mai semnificative, un bun exemplu de pierdere a preciziei poate fi dat de cele două funcții echivalente și Rezultatele calculului cu 4 cifre semnificative sunt:
și
Prin compararea celor două rezultate de mai sus, este clar că pierderea de exactitate (cauzată aici de scăderea aproximărilor numerelor apropiate și în ciuda faptului că scăderea este calculată exact) are un efect uriaș asupra rezultatelor, chiar dacă ambele funcții sunt echivalente, așa cum se arată în continuare.
Valoarea dorită, calculată folosind precizie infinită, este 11,174755... Exemplul este o modificare a unuia preluat din Mathews & Fink, 1999.
Note
Lectură suplimentară
Vezi și Teoria haosului
Categorie:Analiză numerică