Documente Academic
Documente Profesional
Documente Cultură
1.1
1.
1.5
Probleme propuse
Exemplul 1.1:
Fie numrul real x = 1234,56789 . Acesta se poate scrie i sub urmtoarele
forme:
x = 1234,56789 10 0 = 123456789,0 10 5 = 0,00123456789 10 6 =
= 0,123456789 10 4
Corespunztor ultimei forme scrise, se denumesc i se noteaz urmtoarele
elemente:
mantis (fracie), notat cu f, reprezentnd numrul fracionar;
exponent, notat cu e, reprezentnd exponentul la care este ridicat baza
de numeraie folosit;
baza de numeraie, notat cu , n cazul de fa egal cu 10;
numrul cifrelor mantisei, notat cu litera t.
Rezult, aadar, c poziia virgulei poate fi modificat, cu adaptarea
corespunztoare a exponentului. Din acest punct de vedere, se spune c
numerele ntregi tratate anterior sunt reprezentate n virgul fix.
Definiie:
O mulime de numere n virgul mobil este definit prin urmtorii
parametri:
(a) - baza mainii de calcul;
(b) t - numrul de cifre n baza utilizate pentru a reprezenta partea
fracionar (precizia mainii de calcul);
(c) L - cel mai mic exponent (limita de depire inferioar);
(d) U - cel mai mare exponent (limita de depire superioar).
Exponentul e este cuprins ntre valorile: L e U .
Definiie:
Mulimea F de numere n virgul mobil este:
F = {x / x = f e } {0} , unde:
d
d
d
f = 1 + + ii + + tt
LeU
, 0 d i 1, i = 1, , t
unde f este mantisa (fracia), e este exponentul, este baza mainii, t este
numrul de cifre n baza i d i sunt cifrele bazei.
1.
Dac pentru orice x F \ {0} , prima cifr a fraciei, d 1 , este diferit de zero,
atunci se spune c sistemul de numere n virgul mobil este normalizat. n
acest caz, poate fi scris relaia: 1 / | f |< 1 .
Orice numr x F \ {0} este cuprins ntre dou valori extreme:
m | x | M
M = L 1 , M = U (1 t )
Acestea se numesc: m cel mai mic numr real pozitiv reprezentabil, iar M
cel mai mare numr real pozitiv reprezentabil. n acest caz, mulimea G se
poate defini ca fiind:
G = {x / m | x | M} {0} = [ M, m] {0} [ m, M] .
ncercarea de a opera cu numere nenule care nu se ncadreaz ntre aceste
limite conduce, pentru majoritatea calculatoarelor numerice, la emiterea unor
mesaje de eroare fatal, care vor determina abandonarea programului: depire
flotant inferioar (dac | x |< m ), respectiv depire flotant superioar
(dac | x |> M ). n unele implementri, se atribuie valoarea zero pentru
numerele din prima categorie menionat, fr emiterea mesajului de eroare,
mpreun cu emiterea unui mesaj de avertizare.
Exemplul 1.2:
Se consider o mulime de numere n virgul mobil normalizat cu
urmtorii parametri: = 2 , t = 3 , L = 1 , U = 2 . Rezult, conform relaiilor
scrise mai sus: m = 1 / 4 i M = 7 / 2 . Elementele mulimii F sunt n acest caz:
.100 2 e , .101 2 e , .110 2 e , .111 2 e , e {1, 0, 1, 2} .
Numrul elementelor mulimii F este: card( F) = 33 . Elementele pozitive ale
mulimii F sunt prezentate n Figura 1.1.
m=
1
4
2-2
M=
2-1
20
21
7
2
1.5
Probleme propuse
Mulimea F este o mulime finit. ntre puterile succesive ale lui numerele
din mulimea F sunt echidistante, numrul acestora fiind constant. Numrul de
elemente ale lui F este dat de relaia:
card( F) = 2 t 1 ( 1) ( U L + 1) + 1 ,
n care mrimea t 1 ( 1) = t t 1 reprezint numrul constant de
elemente dintr-un interval definit de ctre dou puteri succesive ale bazei i
U L + 1 reprezint numrul de intervale determinate de ctre puterile
succesive ale lui . Produsul acestora este multiplicat cu 2 pentru a include att
numerele pozitive, ct i pe cele negative. Valoarea 1 este adugat pentru
elementul 0.
Concluzii:
(a) Numerele aparinnd mulimii F nu sunt echidistante n domeniul lor de
existen; acestea sunt mai dese n apropierea originii (puterile lui
scad) i mai rare spre extremitile mulimii F (puterile lui cresc).
(b) Numerele sunt echidistante numai ntre puterile succesive ale lui .
(c) Datorit faptului c mulimea F are un numr finit de elemente, nu se pot
reprezenta continuu, n detaliu, toate numerele reale; mai mult, fiecare
numr din mulimea F este asociat unui ntreg interval din mulimea G, deci
unui ntreg interval de numere reale.
Uzual este reprezentarea normalizat n baza de numeraie doi, alocndu-se
o poziie binar pentru semn, un numr de poziii binare pentru exponent i t
cifre binare pentru mantis. Deoarece tipul de semn al numrului este memorat,
pentru fracie se realizeaz o reprezentare a ntregului d 1d 2 d t t (valoarea
absolut a mantisei). De asemenea, pentru a nu se memora semnul i pentru
exponent, se reprezint un numr ntreg pozitiv: C = e + E 0 , mrimea E
numindu-se deplasament, iar mrimea C numindu-se caracteristic. Cum
reprezentarea este normalizat, prima cifr a fraciei este d 1 = 1 i nu se mai
reprezint. Astfel, se ctig nc o poziie binar pentru fracie. Se spune c se
realizeaz o reprezentare normalizat cu poziie binar ascuns (n limba
englez, hidden bit).
Exemplul 1.3:
Pentru = 2 i 32 de poziii binare pentru un numr real, reprezentarea se
realizeaz n simpl precizie, iar pentru 64 de poziii binare pentru un numr
real, reprezentarea se realizeaz n dubl precizie.
1.
(1.0)
rotunjirea prin tiere (trunchiere): fl(x) este cel mai apropiat element
c F , de x G , cu proprietatea | c || x | .
Aceast modalitate de rotunjire este ilustrat n Figura 1.2. Astfel, oricare ar fi
numrul x [c 2 , c 3 ) , acesta va fi reprezentat prin elementul c 2 . Expresia
aproximantului pentru numrul real x este: fl( x ) = f e .
x
c1
c2
c3 F
1.5
Probleme propuse
e
| g |< 0,
f ,
2.
fl( x ) =
e
e
t
f , | g | 0,
2
n ultima expresie, semnul + se consider pentru f > 0 i semnul - se
consider pentru f < 0 .
x
c1
y
c2
c3 F
1.
fl( x ) =
f
e ,
e e t ,
e e t ,
e ,
| g |> 0,
2
.
(c)
(d)
1.5
Probleme propuse
| x fl( x ) | | f e + g e t fl( x ) |
1 et
=
k
k 1 t ,
e
| fl( x ) |
| fl( x ) |
(1 / )
10
1.
(b)
1.5
Probleme propuse
11
c F
m-
m+
12
1.
atribuie eps_p 1
ct timp ( 1 + eps _ p > 1 ) execut
atribuie eps_p 0.5*eps_p
1.2
erori inerente;
(b)
(c)
erori de reprezentare.
Erorile inerente provin din datele iniiale ale problemei de rezolvat (date
care pot fi rezultatele unor msurtori experimentale sau ale altor calcule
anterioare) i/sau erorile provenite din faptul c se lucreaz cu un model
aproximativ al fenomenului real implicat n problema de rezolvat.
1.5
Probleme propuse
13
pentru scdere:
fl( x )
fl( y)
, k2 =
;
fl( x ) + fl( y)
fl( x ) + fl( y)
14
1.
k1 =
fl( x )
fl( y)
, k2 =
;
fl( x ) fl( y)
fl( x ) fl( y)
pentru nmulire:
k1 = k 2 = 1 ;
pentru mprire:
k 1 = 1, k 2 = 1 .
1.5
x 10
Probleme propuse
15
-14
4
3
2
1
0
-1
-2
-3
-4
-5
0.985
0.99
0.995
1.005
1.01
1.015
16
1.
b b2 4 a c
, b2 4 a c 0 .
2a
1.5
Probleme propuse
17
(a)
(b)
n care factorul b /( 2 | c |) 1 .
dup calculul discriminantului, pentru evitarea neutralizrii termenilor, se
calculeaz mai nti rdcina cu modulul mai mare, innd cont de
semnul lui b:
x 1 = ( b / 2 + sign ( b) ) / a .
Rdcina cu modulul mai mic se determin folosind relaiile lui Vite
ntre rdcini i coeficieni:
x 2 = c /(a x 1 ) .
18
1.
1.3
1.5
Probleme propuse
19
G
G(D)
G(D*)
D*
G
spaiul datelor
spaiul soluiilor
20
1.
sau foarte mare, atunci erorile n datele iniiale sunt amplificate n soluia
problemei de calcul exact matematic, problema de calcul fiind prost
condiionat.
Exemplul 1.13:
Rezolvarea ecuaiilor polinomiale este o problem prost condiionat. Fie
Pn ( x ) un polinom de gradul n:
Pn ( x ) = a 0 x n + a 1 x n 1 + + a n 1 x + a n ,
unde a i , i = 1,..., n; a 0 0 sunt coeficienii polinomului. Se dorete
determinarea valorilor lui x pentru care Pn ( x ) = 0 .
n cele ce urmeaz, se va demonstra c mici variaii n coeficienii
polinomului conduc la variaii mari n soluiile calculate reprezentnd rdcinile
polinomului.
Se consider, n continuare, o alt problem i anume cea a calculului
valorilor proprii ale unei matrice reale ptratice, pe baza ecuaiei caracteristice
ataate. Se consider matricea A i varianta perturbat a acesteia, A p , de forma:
a 1 0
0 a 1
A =
0 0
0
a 1 0
0 a 1
0 , A p =
a nxn
0
0 .
1
a nxn
| | n soluiile calculate.
proprii
10
sunt
1
Rezult:
1.5
Probleme propuse
21
G
G(D*)
D*
G (D)
D
G*
spaiul datelor
spaiul soluiilor
22
(b)
1.
Definiie:
Un algoritm G se numete stabil numeric, dac datele exacte i datele
perturbate ale problemei de calcul G fiind apropiate ntr-un anumit sens, atunci
i soluia exact matematic corespunztoare setului de date perturbate G(D*)
este apropiat, ntr-un anumit sens, de soluia algoritmului corespunztoare
setului de date exacte G*(D). Altfel, algoritmul se spune c este instabil din
punct de vedere numeric.
Altfel spus, erorile din datele de intrare sunt micorate de un algoritm stabil
numeric, un algoritm instabil numeric amplificndu-le.
Observaii:
(a) Nu se poate atepta ca un algoritm stabil numeric s rezolve o problem
prost condiionat cu o precizie mai mare dect a datelor de intrare.
(b) Un algoritm instabil numeric furnizeaz, de regul, rezultate eronate chiar
pentru probleme bine condiionate.
Definiie:
Un algoritm numeric se spune c este general dac este aplicabil pentru un
domeniu larg de date de intrare.
Definiie:
Un algoritm se spune c este sigur n funcionare, dac are prevzut un
mecanism care s avertizeze atunci cnd erorile au crescut excesiv de mult.
Observaie:
Un algoritm instabil numeric poate fi sigur n funcionare, dac este capabil
s detecteze instabilitatea numeric.
Concluzie:
Rolul calculului numeric (al analizei numerice) este de a analiza natura
problemelor de calcul i de a realiza o proiectare optim a algoritmilor. Dac
problema de calcul este prost condiionat, atunci aceasta se reformuleaz,
echivalent, obinnd o problem bine condiionat. Mai departe, pentru
problema bine condiionat rezultat, se proiecteaz un algoritm care s fie
stabil numeric, general i sigur n funcionare.
Exemplul 1.14:
1.5
Probleme propuse
23
I n = x n e x 1 dx ,
0
I 0.068400 < 0 !
9
dar, pentru I 9 , integrandul x 9 e x 1 este pozitiv pentru x (0,1) . Aadar, s-a
obinut pentru I 9 o valoare eronat. Singura eroare comis a fost cea n
estimarea lui 1 / e , care determin o eroare n evaluarea lui I1 egal cu
e1 = 4.412 10 7 . Pentru evaluarea lui I 2 , eroarea comis este e 2 ( 2) e1 ;
pentru I 3 eroarea comis este e 3 (3) e 2 i aa mai departe pn la I 9 cnd
se obine o eroare e 9 = 9!e1 = 0.1601 . I 9 + e 9 = 0.0916 , ceea ce reprezint
rezultatul exact cu patru cifre zecimale. Aceste rezultate arat c algoritmul
utilizat este instabil numeric.
Stabilizarea algoritmului se poate realiza rescriind relaia de recuren sub
forma:
I n 1 = (1 I n ) / n = 1 / n I n / n , n = , 3, 2 .
Un majorant pentru I n este:
1
I n = x n e x 1 dx x n dx =
1
,
n +1
Pentru diverse valori ale lui n se obin urmtoarele erori comise la calculul
integralei definite, considernd I 20 = 0 :
n = 20
e 20 1 / 21 ;
24
1.
n = 19
n = 15
n =9
1.4
e19 e 20 / 20 ;
e15 < 4 10 8 < 1 t = 10 5 ;
I = 0.091612 - valoare cu ase zecimale exacte.
9
Exerciii propuse
atribuie dif1 1 - x
scrie * test adunare:
scrie x = , x
scrie dif1 = , dif1
atribuie y 10 * h
atribuie dif2 1 - y
1.5
Probleme propuse
25
Observaii:
1. ~= este notaia MATLAB pentru operatorul relaional diferit de.
2. exp este numele funciei MATLAB pentru calculul exponenialei.
3. Programul se va rula pentru urmtoarele date de intrare:
26
1.
1.5
Probleme propuse
27
Observaii:
1. abs este numele funciei MATLAB pentru calculul valorii absolute.
2. fix este numele funciei MATLAB pentru calculul parii ntregi a unui
numr real.
3. exp este numele funciei MATLAB pentru calculul exponenialei.
4. ^ este notaia MATLAB pentru operaia de ridicare la putere.
5. ~= este notaia MATLAB pentru operatorul relaional diferit de.
6. >= este notaia MATLAB pentru operatorul relaional mai mare sau
egal.
7. S se analizeze i explice diferenele dintre algoritmii descrii la
exerciiile E1.3 i E1.4.
8. Programul se va rula pentru datele de intrare precizate la exerciiul
E1.3. S se interpreteze rezultatele obinute, comparnd cu cele
rezultate la exerciiul anterior.
E1.5 Se consider ecuaia algebric de gradul al -II-lea :
a z 2 + b z + c = 0; a , b, c ,
cu soluiile generale:
z1 = z1r + j z1i ;
z 2 = z 2r + j z 2i , j 2 = 1
dac ( a = 0 ) atunci
dac ( b = 0 ) atunci
atribuie z1r 0
28
1.
|
atribuie z1i 0
|
atribuie z2r 0
|
atribuie z2i 0
| altfel
|
atribuie z1r 0
|
atribuie z1i 0
|
atribuie z2r -c/b
|
atribuie z2i 0
| altfel
|
dac ( c = 0 ) atunci
atribuie z1r 0
|
atribuie z1i 0
|
atribuie z2r - b/a
|
atribuie z2i 0
| altfel
|
atribuie bp b/2
|
dac ( abs( bp) >= abs(c) ) atunci
|
atribuie e 1 (a/bp) * (c/bp)
|
| atribuie d sqrt( abs( e)) * abs(bp)
|
| altfel
|
| atribuie e a
|
|
dac ( c < 0 ) atunci
|
| atribuie e -a
|
|
|
| atribuie e bp * ( bp/abs(c) ) - e
|
| atribuie d sqrt( abs( e)) * sqrt( abs(c) )
|
dac ( e >= 0 ) atunci
|
dac ( bp >= 0 ) atunci
|
| atribuie d -d
|
|
|
| atribuie z1r ( - bp + d )/a
|
| atribuie z1i 0
|
| atribuie z2r 0
|
|
dac ( z1r ~= 0 ) atunci
|
| atribuie z2r ( c/z1r )/a
|
|
|
| atribuie z2i 0
|
| altfel
1.5
Probleme propuse
29
|
| atribuie z1r - bp/a
|
| atribuie z1i abs( d/a )
|
| atribuie z2r z1r
|
| atribuie z2i -z1i
b
0.
0.
2.
1.
5.
0.
1.
-1.e+5
5.
c
0.
1.
1.
0.
6.
1.
1.
1.
-4.
30
1.
6.e+30
1.
1.
5.e+30
-4.
-4.
-4.e+30
4.
3.99999999
f (x) =
1
, 1 x 1.
1 + 25 x 2
1.5
Probleme propuse
31
32
1.5
1.
Probleme propuse
1.5
Probleme propuse
33
atribuie k_bit 0
atribuie eps1 eps+1
ct timp [( eps1 > 1 ) i ( eps1 eps = 1 )] execut
atribuie eps eps/2
atribuie k_bit k _ bit + 1
atribuie eps1 eps + 1
atribuie f sum _ n
scrie funcie calculat (x) = , f
n descrierea anterioar, f reprezint valoarea aproximativ a expresiei de
evaluat.
34
1.
+ ... ,
3!
5!
7!
i urmtorul algoritm descris n limbajul pseudocod:
scrie x =
citete x
atribuie sinx 0
atribuie term x
atribuie k 1
ct timp ( sinx + term ~= sinx ) execut
atribuie sinx sinx + term
atribuie term - (x^2) / ( (k+1)*(k+2) ) * term
atribuie k k + 2
atribuie f sinx
scrie funcie calculat sin(x) = , f
S se explice motivul pentru care ciclul cu test iniial (ct timp - execut)
se parcurge de un numr finit de ori.
S se rspund la urmtoarele ntrebri, variabila x lund succesiv
valorile / 2, 11 / 2, 21 / 2, 31 / 2 , implementnd algoritmul ntrun limbaj de programare:
(a) Ct de precis este rezultatul calculat?
(b) Care este numrul de termeni folosii din seria de puteri?
(c) Care este cel mai mare termen folosit din seria de puteri?
1.5
Probleme propuse
35