160 likes | 324 Views
Real programmers don't work from 9 to 5. If any real programmers are around at 9am it's because they were up all night. Welcome. Mascasan Anca Muresan Vlad Pop Daiana Sandor Alexandru. Informatica este arta iar informaticianul creatorul !. Relatii de recurenta Siruri de recurenta.
E N D
Real programmers don't work from 9 to 5. If any real programmers are around at 9am it's because they were up all night Welcome
Mascasan Anca Muresan Vlad Pop Daiana Sandor Alexandru Informatica este arta iar informaticianul creatorul!
Un sir a1,a2,…,an,… este o succesiune de valori numite elementele sirului, aranjate intr-o oridine definita.Fiecare element ocupa in cadrul sirului o pozitie fixata, care se numeste rangul elemntului. Definitie: Unele siruri pot fi definite cu ajutorul unor formule care exprima orice termen al sirului, incepand cu un anumit rang,in fuctie termenul precendent sau recurenta. Pentru a putea defini recurent un sir, mai trebuie sa indicam primul termen sau primii termeni.
Sirul lui Fibonacci • Sirul lui Fibonacci este un sir de numere intregi (F1,F2,…,Fn,…),definit recurent astfel: primii doi termeni sunt egali cu 1, apoi fiecare termen incepand cu al treilea,este egal cu suma dintre precedentul si anteprecedentul sau.
Exemplu: -pentru un termen oarecare Fk (termenul de rang k),precedentul sau este Fk-1 (de rang k-1),iar anteprecedentul sau este Fk-2 (de rang k-2).Astfel, F1=1, F2=1 si Fk=Fk-1+Fk-2;k>3.
Pentru o descriere completa scriem o relatie de recurenta care inglobeaza atat formula de calcul,cat si valorile termenilor definiti separat: Fk = - 1, pentru k = 1 si 2 - Fk-1 + Fk-2, pentru k >= 3
Function F(x:integer):integer; Begin if x=1 or x=2 then Fx=1; if k>=3 then Fx=Fx-1 + Fx-2;end; Caracterulrecursiv al algoritmuluipentrudeterminareatermenilorsiruluilui Fibonacci esteevident.Pentru a calcula un termenoarecareFk, avemnevoie de termeniiprecedenti Fk-1si Fk-2 Dar aflarea termenilor Fk-1 si Fk-2 se poate face cu acelasi algoritm, doar ca in loc de k avem K-1 respectiv k-2.Prin urmare, algoritmu care calculeaza termenul Fk trebuie sa se auto- apeleze de doua ori , in scopul determinarii termenilor Fk-1 si Fk-2.
Factorialulunuinumar natural Factorialul unui numar natural k este k!= 1*2*3*…*(k-1)*k (produsul numerelor nat. pana la k), care se mai poate scrie : k!= k*(k-1)*…*3*2*1. Dar (k-1)*…*3*2*1 este tocmai (k-1)! De aici se deduce o asa numita relatie de recurenta: k!=K*(k-1)!.
Function F(x:integer):integer; Begin if x=0 then F(x):=1; if x > 0 then F(x):=x*(x-1);end; Folosind faptul ca 0!= 1 ,obtinem relatia de recurenta completa: Caracterul recursiv consta in faptul ca din corpul algoritmului care calculeaza k! se auto apeleaza algoritmul pentru a calcula (k-1)!
Sume cu n termeni Suma primelor n numere naturale impare Pe caz general, sirul primelor n numere naturale impare este (1,3,5,…,2n-1).Notand termenii sirului cu a1, a2,…,an. Observam ca un termen oarecare ak (de rang k) are valoarea 2*k-1.Vom spune ca sirul de mai sus este definit prin formula termenului general ak=2*k-1. Suma primelor n numere nat. este: Sn=a1+a2+…+an=1+3+5+…+2n-1.
Daca al n-lea termen, cel de rang n , este 2*n-1, atunci al (n-1)-ulea termen este 2(n-1)-1, adica 2*n-3 .Astfel, Sn=1+3+5+…+(2*n-3)+(s*n-1).Dar 1+3+5+…+(2*n-3) reprezinta suma primelor n-1 numere naturale impare notata Sn-1, deci Sn=(2*n-1)+Sn-1.Pentru n=0, avem cazul particular S0=0.
Obtinem astfel relatia de recurenta completa: Sn= 0 npentru n=0 (sn-1)+Sn-1 ,pentru n>0 Function S(x:integer):integer; begin if n=0 then S:=0; if n>0 then S:=(2n-1) + Sn-1; end;
Exemplu de probleme cu siruri de recurenta: var a,b:real; n:integer; function bn(n:integer):real; forward; function an(n:integer):real; begin if n=0 then an:=a else an:=(an(n-1+bn(n-1))/2 end; function bn(n:integer):real; begin if n=0 then bn:=b else bn:=sqrt(an(n-1)*bn(n-1)); end; begin write(‘a=‘); readln(a); write(‘b=‘); readln(b); write(‘n=‘); readln(n); writeln(an(n):5:10,’ ‘,bn(n):5:10); end. Se considera sirurile definite recurent astfel:a0=a; b0=b, a,b>0: an=(a (n-1)+b(n-1))/2 , bn=√a(n-1)*b(n-1). Sa se scrie un program care sa citeasca a, b si n si sa se calculeze an si bn.
Sfarsit Windows is shuting down