cnacap2 erori de calcul +×i aproxim¦éri
DESCRIPTION
nTRANSCRIPT
1
Capitolul 2
ERORI DE CALCUL ŞI APROXIMĂRI -APROXIMĂRI ÎN MATLAB
„Daca nu ştii unde vrei sa ajungi nu are importanţă pe ce drum o iei.”
(anonim)
2.1. Reprezentări ale numerelor utilizate în calculator
Din cele mai vechi timpuri, oamenii utilizează sistemul zecimal de
reprezentare a numerelor, sistem de numeraţie cu baza 10. Pentru reprezentarea
oricăror numere, indiferent cât de mari, se folosesc cele 10 cifre cu valori diferite.
Simbolurile acestor cifre, folosite actual în întreaga lume, sunt denumite de europeni
cifre arabe, iar de arabi cifre indiene, după culturile de la care fiecare le-au preluat.
Sistemul zecimal este un sistem de numerație pozițional, în care poziția fiecărei cifre
indică înmulțirea valorii cifrei respective cu o putere a lui 10. Fiecare poziție indică
o valoare de 10 ori mai mare decât poziția din dreapta sa. Dacă există parte
fracționară, ea urmează după număr, după un separator zecimal, care în România
este virgula. Limbajul Matlab utilizează notaţia zecimală iar ca separator zecimal
se foloseşte punctul.
Tabel 2.1 Corespondenţa între sistemele de numeraţie
Zecimal 0 1 2 3 4 5 6 7 8 9 10
Binar 0 1 10 11 100 101 110 111 1000 1001 1010
Chiar dacă nu este evident acest lucru, majoritatea computerelor utilizează
la efectuarea calculelor sistemul binar de reprezentare a numerelor, sistem în care
există doar două cifre posibile, 0 și 1. Computerul primeşte datele de intrare scrise în
sistem zecimal, face transformările corespunzătorea, execută operaţiile aritmetice în
sistem binar şi înainte de a afişa rezultatul îl transformă în baza zece. Cea mai fiabilă
metodă de stocare a datelor de calculator și respectiv de prelucrare se bazează pe
sistemul binar deoarece 1 bit, celula de memorie cu capacitate minimă care
reprezintă unitatea elementară de informaţie care poate fi ori un 0, ori un 1 şi anume:
"celula este magnetizată sau nu este magnetizată" sau "trece curent sau nu trece
Calcul numeric asistat – TEORIE ŞI APLICAŢII ÎN MATLAB
2
curent", etc. Pentru exemplificare, numărul 2731 se scrie în format binar
101010101011 deoarece acesta se constituie prin sumele:
2731 = 2048 + 512 + 128 + 32 + 8 + 2 + 1 = 1 x 211
+ 0 x 210
+ 1 x 29 + 0 x 2
8 +
+ 1 x 27 + 0 x 2
6 + 1 x 2
5 + 0 x 2
4 + 1 x 2
3 + 0 x 2
2 + 1 x 2
1 + 1 x 2
0
Acelaşi număr poate fi scris similar în sistem de numeraţie zecimal astfel:
2731 = 2000+ 700 + 30 +1 = 2 x 103 + 7 x 10
2 + 3 x 10
1 + 1 x 10
0
Un alt aspect important este reprezentat şi de faptul că, având resurse
limitate, computerul nu poate utiliza întreaga mulţime infinită a numerelor reale R ci
doar o submulţime a acesteia, pe care o vom nota F. Nu toate numerele reale pot fi
reprezentate exact. Mulțimea numerelor reale este alcătuită din mulțimea fracțiilor
zecimale, pozitive și negative, cu o infinitate de zecimale. Numerele reale sunt
definite intuitiv ca fiind acele numere care sunt în corespondență unu-la-unu cu
punctele de pe o dreaptă infinită: axa numerelor.
Numerele reale ale mulţimii F, mulţime de dimensiuni finite, constituie obiectul aşa
numitei aritmetici în virgulă mobile (flotante) utilizată de computere. Proprităţile
acestor numere sunt diferite faţă de numerele mulţimii R. Orice număr real x este, în
principiu, reprezentat de către computer cu numărul notat fl(x), care nu corespunde
întotdeauna numărului x ci este doar o aproximare a acestuia. Reprezentarea în
virgulă mobile presupune existent unei baze b (întotdeauna pară) şi a unei precizii p.
Conform IEEE (Institute of Electrical and Electronics Engineers), standardul care
precizează formatul de reprezentare în memorie în simpla si dubla precizie a unui
numar real este IEEE-754 iar reprezentarea se face în virgula mobila normalizată (b
= 2):
53 241 0 2222 1
1
221
0 ,p},,{,)...()x(flx ke
p
p
Numărul este reprezentat prin printr-un cuvânt de n biti, conţinând urmatoarele
câmpuri:
Semn Exponent Mantisă
unde s este bitul de semn al numărului (s = 0 număr pozitiv şi s = 1 număr negativ),
m este mantisa numărului, reprezentând cifrele semnificative (α0, α1, α2 ...), iar e este
exponentul (puterea la care trebuie ridicata o valoare numita bază si care inmulteste
cifrele semnificative ale numarului). Valoarea numarului real reprezentat in virgula
mobila este data de expresia: es bm)()x(fl 1
Ȋn general baza este egală cu 2 iar mantisa trebuie să îndeplinească condiţia:
1 > m ≥ ½.
Fig. 2.1. Reprezentarea numerelor într-un cuvânt (semn, exponent cu semn şi mantisă)
Capitolul 2 - ERORI DE CALCUL ŞI APROXIMĂRI
3
Aproximarea lui x prin fl(x) poarta numele de rotunjire, iar eroarea introdusă se
numeşte eroare de rotunjire. Exista mai multe modalitati pentru rotunjire:
• trunchiere (rotunjire prin tăiere): se reţin primele p cifre din reprezentarea
normalizata a lui x
• rotunjire la cel mai apropiat număr în virgulă mobilă (rotunjire la par): fl(x)
este cel mai apropiat numar în virgulă mobila de x; în caz de egalitate (dacă există
două numere în virgulă mobilă egal depărtate de x) se consideră acel număr în
virgulă mobilă a cărui ultimă cifră este pară.
Aşa numita precizie a maşinii εmach este generată de acurateţea sistemului
în virgulă mobilă. Rotunjirea la par determină o acurateţe mai mare a reprezentării
numerelor. Omiterea cifrelor care rămân în afara reprezentării numerelor formează
aşa numita eroare de rotunjire.
Conform standardului IEEE 754, formatele de reprezentare a numerelor în
virgulă mobila sunt:
-simplă precizie (single-precission) pe 32 de biti:
• 1 bit pentru semnul mantisei
• 8 biti pentru exponentul decalat (emin = -126, emax = 127)
• 23 biti pentru mantisa (p = 24, α0 = 1 se omite)
- dublă precizie (double-precission) pe 64 de biti
• 1 bit pentru semnul mantisei
• 11 biti pentru exponentul decalat (emin = -1022, emax = 1023)
• 52 biti pentru mantisa (p = 53, α0 = 1 se omite)
Regula de rotunjire este rotunjirea la par. Deci pentru
- simpla precizie, εmach = 2-24
≈ 10-7
(7 cifre zecimale semnificative).
- dubla precizie, εmach = 2-53
≈ 10-16
(16 cifre zecimale semnificative).
Programul Matlab utilizează implicit formatul dublă precizie pentru
datele de tip numeric (double) . Mai este posibilă introducerea numerelor în simplă
precizie (simple), care oferă un spaţiu de stocare mai mic dar şi o precizie mai mică,
precum şi introducerea numerelor întregi cu semn (int) sau fără semn (uint), tipurile
de date sunt prezentate în & 3.5.
Ȋn MATLAB valorile maximă şi minimă reprezentabile pot fi obţinute cu
ajutorul comenzilor realmin şi realmax, astfel încât:
xmin = 2.225073858507201 · 10−308
şi, respectiv,
xmax = 1.7976931348623158 · 10+308
.
Astfel, un număr pozitiv mai mic decât xmin produce un mesaj de eroare şi este
tratat ca numărul 0. Un număr pozitiv mai mare decât xmax produce un mesajul Inf
care este reprezentarea lui +∞.
De asemenea standardul IEEE-754 defineste două valori speciale pentru
situaţii exceptionale cu scopul de a oferi posibilitatea continuării calculului:
Inf, pe post de "infinit" ("infinity"), pentru rezultatul împartirii unui numar finit la
zero.
NaN, pe post de "non-numar" ("not a number"), pentru rezultatul urmatoarelor
operatii:
-adunarea Inf + (-Inf);
-înmulţirea: 0×Inf;
Calcul numeric asistat – TEORIE ŞI APLICAŢII ÎN MATLAB
4
-împărţirea: 0/0 sau Inf/Inf;
-calculul restul împărţirii unui număr x la 0 sau a lui Inf la x;
-calculul rădăcinii pătrate x pentru x < 0.
2.3. Precizia şi acurateţea datelor - erori
Rezolvarea numerică a diferitelor probleme implică, de cele mai multe ori,
obţinerea unor soluţii aproximative printr-un calcul iterativ, soluţii cu valoare foarte
apropiată de cea exactă. Metodele de calcul numeric presupun determinarea unor
rezultate aproximative. Pentru o problemă inginerească complexă, în majoritatea
cazurilor nu poate fi calculată soluţia analitică, exactă. De asemenea, nu poate fi
determinată nici valoarea erorii de calcul a soluţiei aproximative calculate. Din acest
motiv trebuie utilizate unele metode
de estimare a erorilor fiind, de cele
mai multe ori posibilă calcularea unei
limite maxime a erorii.
Ȋn figura 2.2 se poate
observa diferenţa dintre conceptul de
precizie al datelor şi conceptul de
acurateţe. Acurateţea reprezintă
măsura în care o mărime calculată sau
măsurată se apropie de valoarea reală.
Precizia este definită ca fiind măsura
în care valorile calculate şi valorile
măsurate sunt în concordanţă unele cu
altele. Inacurateţea reprezintă o
deviere sistematică de la valoarea
exactă iar imprecizia se referă la
mărimea dispersiei rezultatelor.
Conceptul cifrelor semnificative (digiţi) se referă la faptul că o valoare
numerică poate fi desemnată formal cu ajutorul unui anumit număr de cifre în
concordanţă cu unitatea de măsură a mărimii respective. De exemplu, viteza
înregistrată de vitezometrul unui autovehicol presupune existenţa a doar două cifre
semnificative comparativ cu indicatorul kilometrajului autovehiculului care poate
indica cu precizie şase cifre semnificative.
Fie x* un număr care aproximează numărul exact x, adică o aproximantă a
lui x. Dacă x*
< x, atunci spunem că x*
este o aproximaţie minoră (sau în minus) a
lui x. Dacă x* > x, atunci spunem că x
* este o aproximaţie majoră (sau în plus) a lui
x. Putem scrie:
x = x* + Δx 2.1
unde Δx este eroarea numărului x.
Un număr exact poate fi considerat ca un număr aproximativ care are
eroarea egală cu zero. Există numeroase situaţii în care semnul erorii nu este
cunoscut, aşa încât se utilizează eroarea absolută a numărului aproximativ:
Acuratete
Pre
cizi
e
Fig. 2.2. Precizia şi acurateţea unor date
sunt concepte diferitei (după Chapra)
Capitolul 2 - ERORI DE CALCUL ŞI APROXIMĂRI
5
Definiţie:
Eroarea absolută ε a unui număr aproximativ x*, reprezintă valoarea absolută a
diferenţei dintre numărul exact x corespunzător şi numărul x*:
ε = | x - x* | 2.2
Cel mai întâlnit caz este atunci când numărul aproximat x nu este cunoscut;
astfel relaţia 2.3 nu poate fi folosită pentru determinarea erorii. Din acest motiv, este
util ca în locul erorii absolute ε (cu valoare necunoscută din punct de vedere
teoretic), să introducem o estimare superioară acesteia, aşa numita limită a erorii
absolute Δ.
Definiţie:
Limita erorii absolute Δ a unui număr aproximativ x*, poate fi orice număr, nu mai
mic decât eroarea absolută a acelui număr.
Astfel:
ε = | x - x*| ≤ Δ 2.3
Deci se poate spune că x* - Δ este o aproximare minoră pentru x iar x
* + Δ este o
aproximare majoră pentru acelaşi x :
x* - Δ ≤ x ≤ x
* + Δ 2.4
Putem scrie:
x = x* ± Δ 2.5
Deşi există mai multe numere care pot fi considerate ca fiind limita erorii
absolute (în fapt orice număr mai mare decât un Δ determinat), totuşi, în practică
este convenabil de ales cel mai mic număr care satisface inegalitatea 2.4.
EXEMPLU 2.1:
Să se determine limita erorii absolute pentru numărul π = 3,14 (numărul cu două
zecimale exacte) folosit în locul numărului iraţional π.
Soluţie:
Din inegalitatea cunoscută x*=3,14 < π < 3.15 rezultă că | x
* - π |< 0,01 şi de aici
avem
Δ = 0,01.
Dacă luăm în considerare inegalitatea x* = 3,14 < π < 3.142, putem obţine o estimare
mai bună, şi anume Δ = 0,02.
Trebuie remarcat faptul că noţiunea erorii absolute nu ţine cont de ordinul
de mărime al valorii examinate. De exemplu, o eroare de 1 cm este semnificativă în
cazul unui reper din industria construcţiei de autovehicule dar este aproape
insesizabilă în cazul construcţiei clădirilor. Dacă luăm în considerare două tije care
au lungimile l1 = 200 ± 0,5 mm şirespectiv l2 = 5 ± 0,5 mm, deşi marginile erorilor
absolute sunt egale (0,5) totuşi prima tijă cu lungimea l1 poate fi prelucrată mult mai
uşor decât tija cu lungimea l2. Din acest motiv, mărimea erorii absolute ε sau limita
erorii absolute Δ nu sunt satisfăcătoare pentru a descrie eficace precizia unor
măsurători sau unor calcule.
Calcul numeric asistat – TEORIE ŞI APLICAŢII ÎN MATLAB
6
Definiţie:
Eroarea relativă δ a unui număr aproximativ x* este dată de raportul dintre eroarea
absolută ε a numărului şi modul (valoarea absolută) a numărului aproximat x
corespunzător.
Astfel:
δ = x
2.6
şi ε = |x|·δ 2.7
Similar cazului erorilor absolute, se introduce noţiunea de limită a erorii relative.
Definiţie:
Limita erorii relative δa a unui număr aproximativ x*, poate fi orice număr, nu mai
mic decât eroarea relativă a acelui număr.
Astfel:
δ ≤ δa 2.8
Deci:
δ = x
≤ δa 2.9
şi
x = x* ± x·δa
= x
*·(1 ± δa
) 2.10.
Prin definiţie x > 0, x*> 0 şi ε
> 0. Atunci:
δ = x
≤
*x
2.11.
Putem lua astfel numărul
*ax
drept limita erorii relative a lui x*. Similar se
poate scrie:
ε = x ·δ ≤·( x* + ε
) ·δa
2.12.
şi de aici:
Δ ≤ a
a*x
1 2.13.
Deoarece în mod obişnit Δ << x* şi δa << 1, se poate face aproximarea:
*ax
2.14
şi respectiv:
a*x 2.15.
Majoritatea metodelor numerice folosesc o metodologie iterativă pentru a
calcula soluţia. Astfel eroarea poate fi estimată ca o diferenţă între aproximaţia
curentă şi cea anterioară. Eroarea relativă procentuală se poate calcula cu
formula:
Capitolul 2 - ERORI DE CALCUL ŞI APROXIMĂRI
7
εaprox = %curenta.aprox
anterioara.aproxcurenta.aprox100
2.16.
Ȋn anumite cazuri, metodele numerice folosesc drept criteriu pentru oprirea
interaţiilor inegalitatea:
| εaprox | < εs 2.17
unde:
εs este toleranţa procentuală specificată a calculelor, care conform (Chapra, 2012)
este legată de conceptul celor n cifre semnificative:
%, ns 1050 2 2.18.
EXEMPLU 2.2:
Volumul unui rezervor de apă este la 20º este V = 999,795 ± 0,005 m3. Să se
determine limita erorii relative a cantităţii de apă.
Soluţie:
Avem ΔV = 0,005 şi V < 999,790. Aplicând ec. 2.14 se obţine:
%,
,V 105
790999
0050 6 .
EXEMPLU 2.3:
Rezultatul R = 32,57 a fost obţinut la determinarea unei constante a unui proces.
Ştiind că eroarea relativă a acestei valori este de 0,2 ‰ să se determine limitele
rezultatului R.
Soluţie:
Avem δR = 0,002 şi deci ΔR R· δR = 0,07.
Deci:
32,5 ≤ R ≤ 32,64.
2.4. Surse ale erorilor
Orice mărime determinată în urma unor experimente sau observaţii din
activitatea practică de zi cu zi este de fapt o aproximaţie a unei mărimi reale. De
cele mai multe ori acceptăm apriori ideea comiterii unei erori datorită diferenţei
dintre cele două valori. Aceste aproximări pot influenţa investigaţia şi denatura
rezultatul unui studiu sau observaţie. Abaterile introduse se pot neglija doar dacă
acestea sunt suficient de mici încât cerinţele problemei practice să fie satisfăcute.
Din acest motiv trebuie să existe un control, trebuie să existe o evaluare a erorii
introduse prin aproximarea făcută. Mai mult chiar, valoarea aproximaţiei nu are
valoare fără a cunoaşte eroarea comisă şi din acest motiv, analiza erorilor este
fundamentală în orice proces.
Dacă încercăm să realizăm o clasificare a erorilor în funcţie de sursa de
apariţie a lor, putem deosebi mai multe surse de erori care pot afecta analiza unor
Calcul numeric asistat – TEORIE ŞI APLICAŢII ÎN MATLAB
8
date şi calculele realizate. Se pot distinge mai multe grupe de erori care apar în cazul
aplicării de metode numerice pentru rezolvarea unei probleme matematice:
- de multe ori afirmaţiile matematice nu oferă o imagine precisă şi
exhausitivă fenomenelor fizice studiate şi, din această cauză, pentru rezolvarea
problemelor se obişnuieşte a se accepta anumite condiţii care conduc la obţinerea
unor rezultate similare. Se obţin astfel erori de enunţare/formulare a problemei;
- erorile care se introduc prin valoarea unor coeficienţi, parametri numerici
sau valori pentru unele date intermediare care nu pot fi determinate decât
aproximativ se numesc erori iniţiale;
- erorile de metodă se obţin atunci când problema dată, problemă
complexă şi imposibil de rezolvat este înlocuită de o problemă aproximativă care
conduce la un rezultat similar. Un caz special al acestor erori este reprezentat de
erorile de trunchiere care sunt introduse prin renunţarea la o parte din termenii unei
sume (de exemplu aproximarea sumei unei serii printr-o suma parţială sau
considerarea unui termen cu un rang “suficient” de mare pentru a aproxima limita
unui şir). De asemenea, în acele cazuri în care ecuaţiile matematice pot fi rezolvate
doar prin evaluarea unor procese infinite, oprirea procesului de calcul la un anumit
termen din secvenţa infinită introduce erorile denumite erori reziduale;
- aşa cum a fost prezentat în &.2.1, erorile de rotunjire propriu-zise apar
datorită faptului că echipamentele de calcul nu pot lucra cu un număr infinit de
zecimale şi trebuie să opereze trunchieri sau rotunjiri ale ultimelor zecimale după
reguli prestabilite. Fie de exemplu expresia 33
1E . Desigur că rezultatul este egal
cu 1 dar, dacă maşina de calcul respectă ordinea priorităţilor efectuării operaţiilor se
ajunge la un rezultat egal cu 0,999(9) rezultat care introduce erori deoarece în
calculator informaţia este trunchiată, în funcţie de precizia de calcul impusă
calculelor. Acest tip de erori se pot diminua prin aranjarea termenilor astfel încât să
fie efectuate mai întâi operaţiile la numitor şi numărător şi abia la sfârşit să se
realizeze şi împărţirea.
2.4.1. Calcule fără estimarea precisă a erorilor - Reguli
Ȋn majoritatea cazurilor, când este necesară efectuarea unui număr foarte
mare de operaţii, este practic imposibil să se ţină cont de toate erorile pe care le-ar
putea introduce fiecare operaţie. Este necesar deci a fi stabilite reguli generale astfel
încât erorile sa fie controlate şi menţinute la valori minime. Există recomandarea de
a se respecta următoarele reguli [Muscă, Spînu, 2004]:
- la adunarea şi scăderea unor numere de valoare aproximativ egală, rangul
cel mai mic păstrat al rezultatului trebuie să fie egal cu cel mai puternic rang al
ultimelor cifre semnificative exacte al numerelor iniţiale date;
- la înmulţirea şi împărţirea cu numere de valoare aproximativ egală trebuie
conservate în rezultat tot atâtea cifre semnificative câte erau şi în numărul
aproximativ din datele iniţiale care avea cel mai mic număr de cifre exacte;
- ridicând un număr la pătrat sau la cub, rezultatul trebuie să păstreze tot
atâtea cifre semnificative câte numară baza puterii;
Capitolul 2 - ERORI DE CALCUL ŞI APROXIMĂRI
9
- după extragerea rădăcinii pătrate sau cubice trebuie să se ia în considerare
atâtea cifre semnificative câte erau în numărul de sub radical;
- toate rezultatele intermediare trebuie să păstreze o cifră în plus faţă de
cele care sunt recomandate în reguile precedente. Această cifra va fi rotunjită abia la
finalul calculului;
- dacă datele iniţiale pot să fie luate cu o precizie arbitrara, pentru obţinerea
unui rezultat cu un număr de k cifre exacte, este necesar ca la începerea calculului
ele să fie luate astfel încat, în comparaţi cu regulile precedente să se asigure (k+1)
cifre exacte.
2.4.2. Aproximarea cu ajutorul dezvoltării în serii Taylor
Fie dată funcţia f : (α, β) → R- de n+1 ori derivabilă pe (α, β), iar a (α,
β), atunci pentru orice x (α, β), există un punct ξ cuprins între a şi x, astfel încât să
fie adevărată formula lui Taylor:
)(f)!n(
)ax()a(f
!n
)ax(...)a('f
!
)ax()a(f)x(f
)n(n
nn
11
11
2.19.
Polinomul lui Taylor Tn(x) Restul lui Lagrange Rn(x)
Adică: f(x) = Tn(x) + Rn(x) 2.20.
Pentru a se putea folosi în calculul aproximativ al unor mărimi, în calculul limitelor
se poate demonstra faptul că atunci când x → a, rezultă că ξ → a şi deci este valabilă
şi relaţia:
0
nnn )ax(
)x(T)x(flim 2.21.
EXEMPLU 2.3:
Să se calculeze aproximanta numărului 6 732 folosind formula lui Taylor şi restul
de ordinul 2. Să se verifice utilizând calculatorul.
Soluţie:
Se consideră funcţia : f(x) = 6 x . Formula lui Taylor cu restul de ordinul unu pentru
această funcţie este:
)(''f!
)ax()a('f
!
)ax()a(f)x(f
21
2
. Ȋnlocuind obţinem:
611
2
65
61 1
6
5
6
1
2
1
6
1
1 //
/
!
)ax(
a!
)ax(a)x(f
, ξ (a, x)
Restul lui Lagrange R1(ξ)
Lunând x = 732 şi a = 729, putem obţine pentru primii doi termeni din formula de
mai sus:
Calcul numeric asistat – TEORIE ŞI APLICAŢII ÎN MATLAB
10
002133
1
6
1
1
33
729
1
6
1
1
729732729732
565
6161 ,!
)()x(f
/
//
Pentru a determina eroarea de calcul se evaluează restul lui Lagrange, alegând
ξ = 729:
4
611
2
611
2
1 108729
1
6
5
6
1
2
7297321
6
5
6
1
2
// !
)(
!
)ax()(R
2.4.3. Aproximarea erorilor şirurilor alternant convergente
Fie o serie convergentă: ...aa...aaaS nn 1210 2.22.
Primii n termeni ai sumei se pot grupa iar relaţia (2.22) devine:
nn RSS 2.23
unde:
n
nnn aS
0
este suma parţială a primilor n termeni iar
...aaaR nnnn 321 este restul de ordinul n.
Atunci când n → , 0nR .
Dacă suma este alternantă, se poate demonstra că:
1 nn aR 2.24
adică faptul că eroarea care se comite atunci când se aproximează suma unei serii
alternant convergente printr-o sumă parţială de ordinul n este mai mică în valoare
absolută decât primul termen neglijat.
EXEMPLU 2.4:
Se dă seria alternantă convergentă
4
4
3
3
2
2
34
2
33
2
32
2
3
2 Care este
termenul general al sumei? Să se realizeze o aplicaţie pentru calcularea sumei de mai
sus, cu n număr întreg pozitiv cerut de la tastatură şi să se determine empiric
valoarea sumei cu 2 zecimale exacte. Care este valoarea la care converge suma? Câţi
termeni trebuie adunaţi astfel încât să se obţină valoarea sumei cu 3 zecimale
exacte? Calculaţi eroarea folosind inegalitatea ( 1 nn aR ) dintre restul sumei şi
termenul de ordinul n+1 şi verificaţi cu ajutorul aplicaţiei elaborate.
Soluţie:
Suma se poate scrie: Sn =
n
kk
kk
k)(
1 3
21 . Aplicaţia poate fi salvată într-un fişier cu
numele pE23.m, de forma: pE23.m
n=input('introduceti numarul termenilor sumei, n=')
s=0
for i=1:n
s=s+(-1)^(i+1)*2^i/(i*3^i)
i
Capitolul 2 - ERORI DE CALCUL ŞI APROXIMĂRI
11
end
Seria este puternic convergentă spre 0.51082562376599 (a fost calculată suma cu
150 de termeni). Pentru a ajunge la 3 zecimale exacte trebuie adunaţi minim 12
termeni.
»pE23
introduceti numarul termenilor sumei, n=150 n = 150 s = 0 s = 0.66666666666667 i = 1 s = 0.44444444444444 i = 2 s = 0.54320987654321 i = 3 s = 0.49382716049383 i = 4 s = 0.52016460905350 i = 5
s = 0.50553269318701 i = 6 s = 0.51389378796786 i = 7 s = 0.50901648267903 i = 8 s = 0.51190673766501 i = 9 s = 0.51017258467342 i = 10 s = 0.51122358648650 i = 11
s = 0.51058130760073 i = 12 s = 0.51097655614582 i = 13 s = 0.51073187847505 i = 14 s = 0.51088412235909 i = 15 s = 0.51078896993157 i = 16 s = 0.51084867341550 i = 17
Pentru a ajunge la 3 zecimale exacte trebuie adunaţi minim 12 termeni. » 0.51082562376599-0.51097655614582
ans =
-1.509323798301043e-004
» 0.51097655614582-0.51058130760073
ans =
3.952485450900989e-004
2.5. Formula generală a erorii - problema directă şi problema inversă
Ȋn practică este uneori necesar a se calcula precizia unui rezultat al unor
calcule atunci când se cunosc preciziile factorilor care intervin în formulă. De
asemenea, în majoritatea situaţiilor din practica inginerească apare necesitatea de a
se cunoaşte valoarea erorilor parametrilor funcţiei plecând de la o precizie dorită a
rezultatului. Aceste probleme sunt cunoscute ca fiind problema directă şi problema
inversă a erorilor.
Calcul numeric asistat – TEORIE ŞI APLICAŢII ÎN MATLAB
12
Problema directă a erorii Fie o funcţie de n variabile u=f(x1, x1, x1, ... , xn) şi fie |Δxi| erorile absolute
ale argumentelor funcţiei. Dacă presupunem că |Δxi| sunt suficient de mici astfel
încât pătratul lor să fie neglijat atunci se poate deduce prin calcule succesive
(Zaharia, 2008) că eroarea relativă a funcţiei nu depăşeşte o anumită valoare care
depinde de valoarea derivatelor parţiale ale funcţie:
i
n
i iu x
x
)u( ln
1
2.25.
Problema inversă a erorii Fie o funcţie de n variabile u=f(x1, x1, x1, ... , xn) şi fie |Δxi| erorile absolute
ale argumentelor funcţiei. Este vorba despre determinarea preciziei necesare a
datelor iniţiale pentru a se obţine rezultatul cu precizia stabilită.
Problema este nedeterminată deoarece o aceeaşi limită a erorii funcţiei
poate fi obţinută printr-o infinitate de combinaţii ale limitelor erorilor absolute ale
argumentelor. Rezolvarea se face aplicând principiul egalităţii efectelor ceea de
înseamnă ca toţi factorii să aibă contribuţii egale la formarea erorii absolute a valorii
funcţiei (Zaharia, 2008), şi anume Δu. Se obţine relaţia:
i
i
x
un
ux
1 2.26.
OBSERVAŢIE:
Din punct de vedere tehnologic, pentru unele componente pot apare cerinţe
de realizare la precizii exagerat de mari aşa încât nu pot fi executate decât la un cost
prohibitiv. Ȋn aceste cazuri trebuie refăcut proiectul astfel încât să fie respectat şi
criteriul economic.
EXEMPLU 2.5:
Fie un rezervor constituit dintr-un cilindru gol, cu raza mare a bazei R ≈ 5 m, raza
mică r ≈ 2 m şi înălţimea H ≈ 15 m. Să se determine care sunt erorile absolute de
determinare ale valorilor R, r, H şi numărului π, pentru ca volumul rezervorului să
poată fi calculat/executat cu o precizie de 0,1 m3.
Soluţie: r ≈ 2 m,
R ≈ 5 m,
H ≈ 15 m,
ΔV = 0,1 m3
__________________
ΔR = ?; Δr = ?; ΔH = ?; Δπ = ?;
H)rR(V 22cilG
Capitolul 2 - ERORI DE CALCUL ŞI APROXIMĂRI
13
5103,5521514,3
1
4
1,0
2
1
4
RH
VR
m
41032,1221514,3
1
4
1,0
2
1
4
rH
Vr
m
4
22221079,3
)25(14,3
1
4
1,0
)(
1
4
rR
VH
m
5
2222109,7
)25(15
1
4
1,0
)(
1
4
rRH
V
EXEMPLU 2.6:
Fie o sferă cu raza R ≈ 2 m. Să se determine care sunt erorile absolute de
determinare ale valorii razei şi numărului π, pentru ca volumul sferei să poată fi
calculat cu o precizie de 0,1 m3.
Soluţie: R ≈ 2 m ;
ΔV = 0,1 m3
__________________
ΔR = ?; Δπ = ?;
3sfera R
3
4V
4
22
1095,9214.34
1
2
1.0
33
4
1
2
R
VR
0013,0
3
1
1
3 2
rh
V
2.7. Formate de afişare ale numerelor în MATLAB
Implicit, MATLAB afişează valorile numerice cu cinci zecimale în format
virgulă fixă, scalată. Ȋn tabelul 2.1 sunt prezentate formatele disponibile pentru
valorile numerice. Formatul de reprezentare al datelor se poate schimba folosind
comanda format sau File/Preferences/Command Window/ Numeric format.
Formatul specificat cu ajutorul funcţiei format este valabil numai în secţiunea
curentă.
Funcţia format nu controlează decât modul în care valorile numerice sunt
afişate în fereastra de comandă. Modul în care sunt realizate calculele nu este afectat
de formatul reprezentării / afişării numerelor. Folosit fără argumente, funcţia format
schimbă formatul la cel implicit, respectiv short cu 5 zecimale, virgulă fixă scalată,
Calcul numeric asistat – TEORIE ŞI APLICAŢII ÎN MATLAB
14
2.8. Funcţii MATLAB pentru aproximarea numerelor
Funcţiile Matlab destinate aproximării numerelor cu numere întregi
operează asupra fiecărul element al unei matrice sau am unui vector. Dacă
elementele din argumentului funcţiei sunt numere complexe atunci se operează
independent asupra fiecărei părţi (reală şi imaginară) în parte.
Alte funcţii existente pentru aproximarea numerelor sunt prezentate în
tabelul 2.3.
Tab. 2.1. Formate pentru valori numerice afişate în Matlab
File /
Preferences
/ Numeric
format
Formatul afişat
short Format virgulă scalată, cu 5 zecimale long Format virgule fixă scalată, cu 15 zecimale pentru dublă precizie şi 8
zecimale pentru simplă precizie hex Hexazecimal (reprezentare hexazecimală a unui număr binar în dublă
precizie) bank Stabileste formatul pentru dolari şi centi long e Format virgulă mobilă, cu 15 zecimale pentru dublă precizie şi 8
zecimale pentru simplă precizie short e Format virgulă mobilă cu 5 zecimale long g Cel mai bun format între virgulă fixă şi virgulă mobilă, cu 15 zecimale
pentru dublă precizie şi 8 zecimale pentru simplă precizie short g Cel mai bun format între virgulă fixă şi mobilă, cu 5 zecimale rat Raport de numere întregi mici plus Simbolurile “+”, “-” şi “ ” sunt afişate pentru numere pozitive, negative
şi elemente egale cu zero; partea imaginară este ignorată loose Adaugă linii între liniile pe care se află răspunsul, pentru ca ieşirile să
fie mai uşor de citit compact Suprimă linii din răspunsul oferit pe ecran pentru ca să încapă mai
multe ieşiri pe un singur ecran
Tab. 2.2. Funcţii utilizate pentru aproximare cu numere întregi
Funcţie Descriere ceil Returnează un număr întreg, rotunjit spre cel mai apropiat întreg spre
plus infinit (+ ) fix Returnează un număr întreg, rotunjit spre cel mai apropiat întreg spre
zero floor Returnează un număr întreg, rotunjit spre cel mai apropiat întreg spre
minus infinit (- ) round Returnează un număr întreg, rotunjit spre cel mai apropiat întreg
Capitolul 2 - ERORI DE CALCUL ŞI APROXIMĂRI
15
EXEMPLU 2.7:
Să se rotunjească elementele vectorului V = (0 1 2,3 -2,3 2,9 -2.9 5,7 -10,5 9,2 -9,2)
prin folosirea celor 4 funcţii dedicate în Matlab: » V=[ 0 1 2.3 -2.3 2.9 -2.9 5.7 -10.5 9.2 -9.2]
V =
Columns 1 through 7
0 1.0000 2.3000 -2.3000 2.9000 -2.9000 5.7000
Columns 8 through 10
-10.5000 9.2000 -9.2000
» round(V)
ans = 0 1 2 -2 3 -3 6 -11 9 -9
» ceil(V)
ans = 0 1 3 -2 3 -2 6 -10 10 -9
» fix(V)
ans = 0 1 2 -2 2 -2 5 -10 9 -9
» floor(V)
ans = 0 1 2 -3 2 -3 5 -11 9 -10
EXEMPLU 2.8:
Să se aproximeze prin rotunjire la a 4-a zecimală numărul 2,65987. Ce fel de
aproximare este? Care este eroarea?
Să se aproximeze prin trunchiere la a 4-a zecimală acelaşi număr. Ce fel de
aproximare este? Care este eroarea?
Să se rotunjească spre cel mai apropiat întreg spre ∞. Care este eroarea? Care este
linia de comandă în MATLAB?
Să se rotunjească spre cel mai apropiat întreg spre -∞. Care este eroarea? Care este
linia de comandă în MATLAB?
Soluţie: 2,65987
Rotunjire la a 4-a zecimală → 2,6599 Aproximare prin adaos
Eroare absolută= | 2,6599-2,65987 | = 0,0000299
Trunchiere la a 4-a zecimală → 2,6598 Aproximare prin lipsă
Eroare absolută = | 2,6598-2,65987 |= 0,00007
Aproximare spre +∞: » ceil(2.65987) ans = 3
Eroarea absolută = | 2,65987 – 3| = 0.34013 Aproximare spre -∞: floor(2.65987)
Eroarea absolută = | 2,65987 – 2 | = -0.65987
Tab. 2.3. Funcţii utilizate pentru aproximare cu numere întregi
Funcţie Descriere rem Returnează restul împărţirii argumentelor rat Returnează aproximarea unui număr cu fracţii raţionale continue rats Returnează aproximarea unui număr cu numere raţionale sign Returnează semnul argumentului