26.12.2014 Views

metode de calcul numeric matriceal. algoritmi fundamentali

metode de calcul numeric matriceal. algoritmi fundamentali

metode de calcul numeric matriceal. algoritmi fundamentali

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

14 CAPITOLUL 0. CONCEPTE FUNDAMENTALE<br />

şi<br />

f(ˆx) = ˆf(x). (0.13)<br />

Problema fiind bine condiţionată, din (0.11) rezultă că<br />

‖f(x) − f(ˆx)‖<br />

‖f(x)‖<br />

‖x − ˆx‖<br />

= κ ≤ κµβ −t , (0.14)<br />

‖x‖<br />

un<strong>de</strong> κ şi µ sunt <strong>de</strong> ordinul unităţii. Deci, din (0.13) şi (0.14),<br />

‖f(x) − ˆf(x)‖<br />

‖f(x)‖<br />

≤ κµβ −t ,<br />

adică un algoritm stabil nu introduce erori suplimentare semnificative în rezolvarea<br />

unei probleme bine condiţionate.<br />

În mod similar, se poate observa că, în alte situaţii (<strong>de</strong> exemplu pentru probleme<br />

rău condiţionate sau pentru <strong>algoritmi</strong> instabili), mărimea erorii asociate rezultatului<br />

nu poate fi apreciată. Când un algoritm stabil este folosit pentru a rezolva<br />

o problemă rău condiţionată, nu există nici o garanţie că f(ˆx) şi f(x) au valori<br />

apropiate şi, <strong>de</strong>şi f(ˆx) este (aproximativ) egal cu ˆf(x), diferenţa dintre f(x) şi ˆf(x)<br />

poate fi semnificativă. Când un algoritm instabil este folosit pentru rezolvarea unei<br />

probleme bine condiţionate, soluţia <strong>calcul</strong>ată ˆf(x) pentru date exacte <strong>de</strong> intrare<br />

este soluţie exactă a problemei cu ˆx <strong>de</strong>parte <strong>de</strong> x, şi tot aşa este f(ˆx) <strong>de</strong> f(x). În<br />

sfârşit, nu e nici o speranţă <strong>de</strong> a obţine erori mici atunci când un algoritm instabil<br />

este utilizat pentru o problemă rău condiţionată.<br />

Exemplul 0.12 Revenim la problema <strong>calcul</strong>ului sumei, f : R 2 −→ R,<br />

f(x, y) = x + y. Problema poate fi bine sau rău condiţionată în funcţie <strong>de</strong> datele<br />

<strong>de</strong> intrare (vezi exemplul 0.11).<br />

”Algoritmul” <strong>de</strong> <strong>calcul</strong> al sumei în virgulă mobilă ˆf : R 2 −→ R este<br />

ˆf(x, y) = x ⊕ y = fl(x + y),<br />

un<strong>de</strong> fl este o funcţie <strong>de</strong> rotunjire care respectă relaţia (0.7), iar x şi y sunt numere<br />

în FVM; <strong>de</strong>ci, în conformitate cu (0.7),<br />

ˆf(x, y) = x(1 + ρ) + y(1 + ρ),<br />

cu |ρ| <strong>de</strong> ordinul β −t , adică suma <strong>calcul</strong>ată este suma exactă a operanzilor uşor<br />

perturbaţi, şi <strong>de</strong>ci algoritmul <strong>de</strong> sumare este stabil.<br />

♦<br />

Exemplul 0.13 Să analizăm acum algoritmul <strong>de</strong> <strong>calcul</strong> al mărimii<br />

f(a, b, c) = b 2 − 4ac. Presupunem că a, b, c sunt numere în FVM. În conformitate<br />

cu (0.7) avem<br />

ˆf(a, b, c) = b ⊗ b ⊖ 4 ⊗ a ⊗ c = [b 2 (1 + ρ 1 ) − 4ac(1 + ρ 2 )](1 + ρ 3 ),<br />

cu |ρ 1 |, |ρ 2 |, |ρ 3 | <strong>de</strong> ordinul β −t ; am presupus că 4 ⊗ a se <strong>calcul</strong>ează fără erori, ceea<br />

ce e a<strong>de</strong>vărat în baza 2, dar nu şi în baza 10.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!