Sunteți pe pagina 1din 12

Metode numerice si de simulare in zica

Ioan Dumitru
2009
ii
Contents
Notiuni introductive v
0.0.1 Erori n rezolvarea problemelor numerice . . . . . . . . . . v
0.1 Erori inerente . . . . . . . . . . . . . . . . . . . . . . . . . . . . x
0.2 Erori de trunchiere . . . . . . . . . . . . . . . . . . . . . . . . . xi
0.2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xii
iii
iv CONTENTS
Notiuni introductive
Introducere
In zica se intalnesc curent probleme de evaluate a diferitelor proprietati
ale unor functii date f(x). Operatiiile tipice cu functii sunt: diferentierea, inte-
grarea, gasirea solutiilor. In multe cazuri axpresia analitica a functiei nu este
cunoscuta si nu se pot obtine forme explicite pentru derivate etc. Chiar daca
expresia analitica a functiei este cunoscuta, efectuarea unor operatii matemat-
ice cu respectiva functie este uneori dicila si este necesara apelarea la evaluari
numerice.
Scopul acestei lucrari este de a introduce un set de metode numerice care sunt
folosite curent in rezolvarea problemelor de zica. Cateva exemple de probleme
care se rezolva utilizand metode numerice vor prezentate.
0.0.1 Erori n rezolvarea problemelor numerice
In toate problemele de prelucrare a datelor zice si de calcul numeric se lu-
creaza cu reprezentari aproximative a parametrilor utilizati. In plus calculele
numerice conduc de obicei la solutii aproximative si nu la solutiile matematic
exacte pentru parametrii determinati. De aceea este foarte important a estima
erorile aparute in procesul de prelucrare a datelor.
Sursele erorilor si clasicarea lor
Se pot distinge trei tipuri de erori n cazul aplic arii de metode numerice pentru
rezolvarea unei probleme:
Erori provenite din simplicarea modelului zic, pentru a descris
ntr-un model matematic; erori din m asur atorile initiale sau erori din calcule
anterioare. Aceste tipuri de erori se numesc erori inerente.
Erori datorate metodei utilizate-de exemplu, trunchierea unei serii
innite (mai precis aproximarea sumei unei serii printr-o sum a partial a), sau
v
vi NOTIUNI INTRODUCTIVE
considerarea unui termen cu un rang sucient de mare pentru a aproxima
limita unui sir. Aceste erori sunt numite erori de metod a sau erori de trunchiere.
Erori datorate reprezent arii datelor si efectu arii calculelor ntr-o ar-
itmetic a cu precizie limitat a (de exemplu aritmetica virgulei mobile). Aceste
erori se numesc erori de rotunjire.
Erori erori absolute si erori relative
Pentru a caracteriza abaterea unei variabile numerice de la valoarea sa exact a
se poate folosi eroarea absoluta, denit a prin:
e
ay
= y y

(1)
n care y este valoarea exacta a variabilei, iar y

este valoarea sa aproxima-


tiva. Deoarece in majoritatea cazurilor valoarea exacta nu este cunoscuta se
prefera utilizarea unei margini superioare a erorii absolute:
a
y
_ [e
ay
[ = [y y

[
In acest caz, in locul valorii exacte y se opereaza cu intervalul:
y

ay _ y _ y

+ ay
O alta modalitate de caracterizare a abaterii unei variabile de la valoarea
exacta este eroarea relativa:
e
ry
=
y y

y
(2)
sau marginea superioara a acesteia:

y
=
a
y
[y[
_
[y y

[
[y[
unde y ,= 0.
Exemple:
1. Pentru y = 3; 141592; y

= 3; 14 se obtine
[e
ay
[ = [y y

[ = [3; 141592 3; 14[ = 0; 001592 = 1; 1592 10


3
[e
ry
[ =

yy

= 0; 000507 = 5; 07 10
4
2. Pentru y = 1000000; y

= 999996 se obtine
[e
ay
[ = [y y

[ = [1000000 999996[ = 4
[e
ry
[ =

yy

=
4
1000000
= 4 10
6
vii
Precizia si exactitatea
Precizia si exactitatea sunt notiuni diferite legate de modul de reprezentare intr-
o zonia de dimensiune nitia a numerelor pe suportul informatiei (de exemplu
in memoria calculatorului sau pe hartie). Astfel:
Precizia: arata cat de apropiat este un numar de reprezentarea sa pe un
suport de informatie.
Exactitatea (acuratetea): arata cat de aproape este un numar fata de val-
oarea sa adevarata.
Atunci cand ne referim la un numar aproximativ reprezentat pe un mediu
zic (memorat) se deneste notiunea de numar de cifre semnicative (ale nu-
marului aproximativ a fata de numarul exact y) ca ind numarul intreg pozitiv
d cel mai mare pentru care:
e
ry
<
10
d
2
Din exemplele anterioare rezulta:
1. [e
ry
[ = 5; 07 10
4
<
10
2
2
d = 2 cifre semnicative;
2. [e
ry
[ = 4 10
6
<
10
5
2
d = 5 cifre semnicative;
Precizia este guvernata de numarul de cifre semnicative implicate in calculul
numeric.
[3]
Erori de rotunjire
Una din cauzele frecvente de eroare in calculele cu numere reale se datoreaza
reprezentarii nite a acestor numere in sistemele de calcul.
Conform standardului IEEE (Institute for Electrical and Electronic Engi-
neers) numerele reale in dubla precizie scrise pe 64 de biti contin 11 biti pentru
exponent si 52 biti pentru mantisa ceea ce corespund pentru exponenti zecimali
intre -1023 si 1024 cu o mantisa de 15-16 zecimale [4]. Astfel numerele reale in
dubla precizie sunt de forma
(1)
s
+ 2
c1023
+ (1 + f)
unde s este indicatorul de semn, c exponentul si f mantisa pentru reprezentarea
binara.
Astfel pentru numarul denit pe biti:
0 10000000011 1011100100010000000000000000000000000000000000000000
primul zerou indica ca numarul este pozitiv, urmatorii 11 biti 10000000011
corespund exponentului care in reprezentare zecimala este
c = 12
10
+ 02
9
+ + 02
2
+ 12
1
+ 12
0
= 1027
viii NOTIUNI INTRODUCTIVE
deci exponentul real este 2
10271023
= 2
4
= 16,urmatorii 52 de biti reprezinta
mantisa
f = 1
_
1
2
_
1
+ 1
_
1
2
_
3
+ 1
_
1
2
_
4
+ 1
_
1
2
_
5
+ 1
_
1
2
_
8
+ 1
_
1
2
_
12
si reprezentat in forma zecimala este (1)
s
+ 2
c1023
+ (1 + f) = (1)
0
+
2
10271023
+
_
1 + 1
_
1
2
_
1
+ 1
_
1
2
_
3
+ 1
_
1
2
_
4
+ 1
_
1
2
_
5
+ 1
_
1
2
_
8
+ 1
_
1
2
_
12
_
= 0:2756640625
10
2
.
Numarul mai mic decat cel prezentat pe 16 biti este:
0 10000000011 1011100100001111111111111111111111111111111111111111
care in reprezentare decimala este :2756640624999999988897769753748434595763683319091796875
10
2
, iar numarul mai mare este:
0 10000000011 1011100100010000000000000000000000000000000000000001
a carui reprezentare decimala este :2756640625000000011102230246251565404236316680908203125
10
2
.
Cel mai mic numar pozitiv care poate reprezentat pe 16 biti se obtine
pentru s = 0, c = 1 si f = 0, ind echivalent cu numarul zecimal 2
1022
(1+0) -
0:225 10
307
iar cel mai mare numar pozitiv care poate reprezentat pe 16
biti se obtine pentru s = 0, c = 2046 si f = 12
52
, ind echivalent cu numarul
zecimal 2
1023
(1 + 1 2
52
) - 0:17977 10
309
.
Numerele, rezultate prin calcule, care sunt mai mici decat cele ce pot
reprezentate pe structura de biti a calculatorului biti genereaza un raspuns de
"underow" si sunt considerate 0; cele care sunt mai mari pentru a reprezen-
tate generaza "overow" si intreruperea calculului.
Modul uzual de reprezentare a unui numar real intr-un sistem de calcul in
forma zecimala este:
y

= 0; kkk:::k 10
kk
= m 10
e
unde k este cifra (0, 1, . . . , 9), m se numeste mantisa, iar e exponent
pentru reprezentarea zecimala. Cu exceptia numarului nul, la care m = 0, in
rest mantisa satisface relatia 0:1 _ [m[ _ 1.
Presupunand ca mantisa este reprezentata cu n cifre, rezulta ca prin aceasta
reprezentare cifrele l din reprezentarea exacta:
y = 0:kk:::k
. .
n
ll::: 10 kk
sunt pierdute prin rotunjire.
In consecinta, eroarea relativa de rotunjire va :
e
ry
=
0; 0:::0lll::: 10 kk
0; kk:::ll::: 10 kk
=
0; lll:::
0:kk:::
10
n
= 10
n+1
si depinde de numarul de cifre semnicative folosite in reprezentarea nu-
marului real si nu de valoarea numarului. Aceasta eroare relativa de rotunjire,
ix
specica sistemului de calcul (calculator + mediu de programare) este cel mai
mare numar real, care adaugat la unitate nu modica valoarea acesteia. Or-
dinul de marime al erorii relative de rotunjire in sistemele uzuale de calcul este
10
5
10
20
, si poate determinat pe ecare sistem de calcul cu urmatorul
algoritm:
// calculeaza eroarea relativa de rotunjire
real err
err=1
repeta
err=err/2
pana cand (1 + err = 1)
scrie err
Eroarea relativa de rotunjire err este cunoscuta sub numele de zeroul masinii
si nu trebuie confundata cu cel mai mic numar pozitiv, nenul, reprezentabil in
calculator.
Pierderea de zecimale semnicativi
- la adunare: calculam
1000000 + 1:0 + 1:0 + :::1:0
. .
1000000
prin calcul analitic obtinand 20000000 si considerand sase zecimale semnicative
pentru mantisa obtinem
1000000 + 1:0 + 1:0 + :::1:0
. .
1000000
=
0:100000 10
7
+ 0:100000 10
1
+ 0:100000 10
1
+ ::: + 0:100000 10
1
. .
=
1000000
0:100000 10
7
= 1000000
prin calcul numeric. La efectuarea operatiei de adunare a doua numere este
bine ca numerele sa e de valori apropiate pentru a avea rezulate exacte.
- la scadere: calculam x sin(x) pentru valori ale lui x apropiate de zero
pastrand zece zecimale semnicative:
x =
1
15
x = 0:6666666667 10
1
sinx = 0:6661729492 10
1
x sinx = 0:0004937175 10
1
= 0:4937175 10
4
Se observa ca in urma efectuarii operatiei se pierd ultimele trei zecimale
semnicative. De aceea in calculul numeric se evita scaderea numerelor de
valori apropiate. [1]
x NOTIUNI INTRODUCTIVE
0.1 Erori inerente
Datele de intrare folosite in rezolvarea unei probleme provin in multe cazuri din
determinari experimentale. Rezultatul oricarei masuratori este susceptibil de
erori si datele de intrare sunt cunoscute cu anumita precizie. Erorile datelor de
intrare intr-un algoritm se numesc erori inerente. Aceste erori se propaga in
procesul de calcul si afecteaza in nal solutia problemei. Chiar daca algoritmul
de calcul nu poate facut responsabil de prezenta erorilor in datele de intrare, el
poate inuenta precizia solutiei. Un algoritm la care eroarea relativa a solutiei
nu depaseste erorile relative ale datelor de intrare este un algoritm stabil din
punct de vedere numeric.
In schimb, daca erorile relative ale solutiei sunt mult mai mari decat cele
ale datelor de intrare se spune ca algoritmul de rezolvare prezinta instabilitati
numerice. In acest caz este posibil ca abateri foarte mici ale datelor de intrare
sa determine abateri mari ale solutiei numerice fata de cea exacta, si sa faca
solutia numerica incorecta.
Daca se noteaza cu y solutia problemei, iar cu x
1
, x
2
, ..., x
n
datele acesteia,
procedeul de calcul va consta in evaluarea functiei dependenta de datele de
intrare y = f(x1; x2; :::; xn).
Presupunand ca erorile absolute ale datele de intrare sunt sucient de mici
si diferentiind solutia problemei:
dy =
@f
@x
1
dx
1
+
@f
@x
2
dx
2
+ +
@f
@x
n
dx
n
se obtine ca eroarea absoluta de determinare a solutiei problemei poate scrisa
ca functie de erorile absolute a datelor de intrare:
e
ay
=
@f
@x
1
e
ax1
+
@f
@x
2
e
ax2
+ +
@f
@x
n
e
axn
Folosind denitia erorii relative se obtine:
y e
ry
=
@f
@x
1
x
1
e
rx1
+
@f
@x
2
x
2
e
rx2
+ +
@f
@x
n
x
n
e
rxn
Deoarece in sistemele numerice de calcul, cele mai complicate proceduri se
reduc in nal la operatii aritmetice, va analizata propagarea erorilor in cazul
celor patru operatii
aritmetice elementare:
Adunarea/Scaderea:
y = f(x
1
; x
2
) = x
1
x
2
e
ay
= e
ax1
e
ax2
e
ry
=
x
1
x
1
x
2
e
rx1

x
2
x
1
x
2
e
rx2
0.2. ERORI DE TRUNCHIERE xi
Daca cei doi termeni x
1
, x
2
au acelasi semn, adunarea este o operatie stabila
numeric, deoarece

x
1
x
1
+ x
2

_ 1;

x
2
x
1
+ x
2

_ 1; [e
ry
[ _ [e
rx1
[ +[e
rx2
[
Pentru semne diferite ale datelor de intrare x
1
, x
2
este posibila aparitia
instabilitatilor numerice la operatia de adunare a numerelor.
Daca cei doi termeni x
1
, x
2
au acelasi semn, operatia de scadere este instabila
numeric. Eroarea relativa a diferentei poate depasi cu multe ordine de marime
eroarea termenilor, prin fenomenul numit de anulare prin scadere, ca in exem-
plul: x1 = 0; 12345 1%; x2 = 0; 12344 1%; y = x1 x2 = 0; 00001 310
4
%.
Inmultirea:
y = f(x
1
; x
2
) = x
1
x
2
e
ay
= x
2
e
ax1
+ x
1
e
ax2
e
ry
= e
rx1
+ e
rx2
Inmultirea este o operatie stabila din punct de vedere numeric deoarece
[e
ry
[ _ [e
rx1
[ +[e
rx2
[.
Impartirea:
y = f(x
1
; x
2
) =
x
1
x
2
e
ay
=
1
x
2
e
ax1
+
x
1
x
2
2
e
ax2
e
ry
= e
rx1
e
rx2
Si impartirea este o operatie stabila din punct de vedere numeric deoarece
[e
ry
[ _ [e
rx1
[ +[e
rx2
[.
In aceste evaluari ale erorilor s-a considerat ca toate calculele se efectueaza
exact. In realitate, rezultatul este rotunjit (la numarul de cifre semnicative
specice sistemului de
calcul) si eroarea relativa a rezultatului este majorata cu eroarea relativa de
rotunjire.
[2]
0.2 Erori de trunchiere
Datorita caracterului nit al oricarui algoritm, incercarea de a rezolva probleme
de analiza matematica, ce presupun teoretic o innitate de pasi (cum sunt de
exemplu calculele limitelor) determina aparitia unor erori de metoda numite
erori de trunchiere. Calculul numeric al limitelor de siruri, serii sau functii
(inclusiv calculul numeric al derivatelor si integralelor, care se reduc in fond tot
la calculul limitelor) presupune trunchierea unui proces numeric innit. Pentru
xii NOTIUNI INTRODUCTIVE
a evidentia eroarea de trunchiere se considera un sir numeric x
k
= 1; 2; :::; n
convergent catre limita x = limk xk. Conform denitiei convergentei,
pentru orice exista un n astfel incat [x x
k
[ _ , pentru orice k > n.
In consecinta, pentru o eroare impusa exista un rang nit n, astfel incat
xn reprezinta o aproximare satisfacatoare pentru limita x. Rezulta ca, dupa
evaluarea unui numar n sucient de mare de termeni, ultimul poate adoptat
ca solutie numerica x

= xn, cu o eroare de trunchiere dependenta de acest n.


O categorie importanta de procese numerice innite o reprezinta seriile Tay-
lor. Acestea, ind serii de puteri, pot utilizate la evaluarea functiilor ele-
mentare (sinus, cosinus, exponentiala, logaritm, etc.) si a celor speciale (Bessel,
integrale eliptice ) prin reducerea la operatii aritmetice elementare (adunari si
inmultiri).
0.2.1
[1] Aaron Naiman, Numerical Methods
[2] Gabriela Ciuprina, Daniel Ioan, Marius Piper, Marius Radulescu, Mihai
Popescu, Metode numerice in ingineria electrica.
[3] Catalin Agheorghiesei, Prelucrarea datelor experimentale in zica si cal-
cul numeric
[4] J. D. Faires, R. L. Burden, Numerical Methods