Sunteți pe pagina 1din 3

Tema nr.

1
1. Sa se gaseasca cel mai mic numar pozitiv u > 0, de forma u = 10
m
,
astfel ca:
1.0 u 6= 1.0
unde prin am notat operat ia de adunare efectuata de calculator.
Numarul u poarta numele de precizia masina.
2. Fie numerele a = 1.0, b = u, c = u, unde u este precizia masina
calculata anterior. Sa se verice ca operat ia de adunare efectuata de
calculator nu este asociativa, i.e.:
(a b) c 6= a (b c)
3. Aproximarea funct iei tan folosind fract iile continue.
O fract ie continua are urmatoarea forma:
f(x) = b
0
+
a
1
b
1
+
a
2
b
2
+
a
3
b
3
+
a
4
b
4
+
a
5
b
5
+
sau, pentru economie de spat iu, se prefera notat ia:
f(x) = b
0
+
a
1
b
1
+
a
2
b
2
+
a
3
b
3
+
a
4
b
4
+
a
5
b
5
+

In formulele de mai sus sirurile a


n
si b
n
pot funct ii de x.
Funct ia tan poate reprezentata ca fract ie contiuna astfel:
tan x =
x
1
x
2
3
x
2
5
x
2
7

Cum se aproximeaza o fract ie continua?
f(x) f
n
=
A
n
B
n
1
unde A
n
si B
n
se calculeaza dupa recurent ele:
A
1
= 1 , A
0
= b
0
A
j
= b
j
A
j1
+a
j
A
j2
, j = 1, 2, . . . , n
B
1
= 0 , B
0
= 1
B
j
= b
j
B
j1
+a
j
B
j2
, j = 1, 2, . . . , n
Cea mai buna metoda de a evalua fract ii continue pare sa e metoda
lui Lentz modicata. Fie:
C
j
=
A
j
A
j1
, D
j
=
B
j1
B
j
vom calcula f
j
folosind formula:
f
j
= C
j
D
j
f
j1
.
Pentru C
j
si D
j
avem urmatoarele recurent e:
C
j
= b
j
+
a
j
C
j1
,
D
j
=
1
b
j
+a
j
D
j1
.
Valorile init iale de la care pornesc recurent ele de mai sus sunt:
C
0
= b
0
, D
0
= 0 , f
0
= b
0
.
Pentru a evita mpart irile cu 0 n calculele de mai sus, numaratorii
care sunt 0 vor nlocuit i cu o valoare foarte mica (mic = 10
30
).
Vom calcula f
j
at ata timp c at diferent a ntre doi termeni consecutivi
ai sirului f este, n valoare absoluta, mai mare decat un = 10
p
dat.
Constanta reprezinta precizia cu care vrem sa aproximam funct ia tan
si este un numar citit de la tastatura si/sau este parametru de intarare
al funct iei tan :
double tan(double x, double ).
2
Cu aceste precizari, algoritmul lui Lentz modicat are urmatoarea struc-
tura:
f
0
= b
0
;
if (f
0
= 0) then f
0
= mic ;
C
0
= f
0
;
D
0
= 0 ;
j = 1 ;
do
D
j
= b
j
+a
j
D
j1
;
if (D
j
= 0) then D
j
= mic ;
C
j
= b
j
+
a
j
C
j1
;
if (C
j
= 0) then C
j
= mic ;
D
j
=
1
D
j
;

j
= C
j
D
j
;
f
j
=
j
f
j1
;
j = j + 1 ;
while (|
j
1| ) ;

In algoritmul de mai sus, pentru calculul recurent elor pentru C


j
, D
j

j
si f
j
nu este necesara alocarea unor vectori ci doar a unei singure
variabile pentru ecare sir n parte (C, D, , f), variabila care este
actualizata la ecare pas.
Sa se aplice algoritmul lui Lentz modicat pentru aproximarea funct iei
tan, pentru argumente x (

2
,

2
). Pentru valori ale lui x care nu sunt
n intervalul (

2
,

2
) se foloseste periodicitatea funct iei tangenta (se
face o mpart ire cu rest) si antisimetria, tan(x) = tan(x). Valorile
lui x multiplu de

2
trebuie tratate separat.
Sa se compare valoarea funct iei tangenta obt inuta prin procedura de
mai sus cu valoarea furnizata de tangenta implementata n biblioteca
matematica a limbajului de programare pe care l folosit i.
4. Proceduri de citire a vectorilor si a matricilor de la tastatura, din sier
si automat (folosind funct ia rand) si proceduri de asare a vectorilor si
a matricilor.
3

S-ar putea să vă placă și