2023(e)ko otsailaren 24(a), ostirala

6. astea | Fibonacciren zenbakiak azpiprogramaz









Leonardo Pisano (Pisa, Italia, 1170-1250), Leonardo Bonacci, Leonardo Fibonacci edo Fibonacci moduan ezaguna, Italiar matematikaria izan zen, Erdi Aroko ezagunetarikoa. Ezaguna da batez ere bi aurkikuntzengatik:




  • Hindu-arabiar zenbaki sistema Europan sartu zuen eta berau erabiltzeko bideak jarri zituen XIII. mendeko "Liber Abaci" liburuaren bitartez

  • Fibonacciren zenbakiak deskribatu zituen liburu berean, nahiz eta berak ez zituen aurkitu baizik eta adibide moduan jarri


Leonardo Pisano, Fibonacci, ezagutzeko hemen duzu artikulu bat Fibonacci, el matemático que se puso a contar conejos y descubrió la secuencia divina.





Fibonacciren sekuentziako lehen zenbakia 0 da, Fibonacci-ren bigarren zenbakia 1 da, eta hirugarren zenbakia lortzeko aurreko biak batuko dira, horregatik Fibonacciren hirugarren zenbakia 1 da, laugarren zenbakia 2 izango da, bosgarrena 3, ... 


Beraz, Fibonacciren sekuentzia honako hau da:



0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, ...





Ondorengoa da Fibonacciren segidaren adierazpen orokorra:

{\displaystyle F_{n}={\begin{cases}0&n=0{\mbox{ bada}}\\1&n=1{\mbox{ bada}}\\F_{n-1}+F_{n-2}&n>1{\mbox{ bada}}\\\end{cases}}}




Fibonacciren zenbakiak grafikoki adieraztean honako blokeen sorta eta espirala lortzen dira:














Fibonacciren sekuentziako bi zenbaki hartuz eta zatiketa eginez, urrezko zenbakia edo jainkozko proportzioa edo urrezko proportzioa edo zerutiar zenbakia lortzen da:







Fibonacciren sekuentzia sarritan agertzen da naturan. Izan ere, naturan hazkundea gertatzen denean Fibonacciren sekuentziaren arabera ematen da:











  

  






  

  





  

  





  

 






















Eskatzen den programa (prozedura bat eta funtzio bat)



Programa bakarra izan arren programak bi zati izango ditu. Lehen zatian prozedura bati dei egingo zaio eta programaren bigarren zatian funtzio bati dei egingo zaio.


Programaren prozedura eta programaren funtzioa jarraian deskribatzen dira eta bakoitzaren kode gehiena ematen da. Ikaslearen lana da kodeak bukatzea eta programaren emaitzak ulertzea.







Lehen zatia. Fibonacciren sekuentzia osatuko duten zenbakien iZenbat kopurua teklatuz irakurri programa nagusian eta prozedura batek ondoko taularen pantailaraketa egin dezala FOR-DO egitura bat erabiliz, FibonaccirenSekuentziaPantailaratu izeneko prozeduraren barruan errepikatzen den prozesua hau delarik:


   procedure FibonaccirenSekuentziaPantailaratu(iZenbat: integer) ;

...

begin { prozeduraren kodea hemen hasten da }

...

for k:=3 to iZenbat do
begin
iFibo3 := iFibo1 + iFibo2 ;
iIndizea := iIndizea + 1 ;
writeln(iIndizea:15, iFibo3:15, 1.0*iFibo3/iFibo2:25:7) ;

iFibo1 := iFibo2 ;
iFibo2 := iFibo3 ;
end ;

...

end ; { prozeduraren kodea hemen amaitzen da }




Programaren lehen zatiko irteera bat hau izan daiteke:














Bigarren zatia. Prozesu errepikakor bat izango da eta bertatik irteteko b edo B erantzun beharko da, bestela programa nagusian iMuga teklatuz irakurriko da eta funtzio batek kalkulatuko du 0-tik hasita zenbat Fibonacciren zenbaki dauden. Horretarako, WHILE-DO egitura bat erabiliko da, funtzio barruko prozesu errepikakorra hauxe da, non funtzioak itzuli behar duen emaitza iFiboKopuru den eta arrazoi horregatik balio hori kanporatu behar du fniFibonacciZenbakienKopuruaKalkulatu izeneko funtzioak:

   function fniFibonacciZenbakienKopuruaKalkulatu(iMuga: integer): integer ;

...

begin { funtzioaren kodea hemen hasten da }

...

iFibo1 := 0 ;
iFibo2 := 1 ;
iFibo3 := iFibo1 + iFibo2 ;

while iFibo3 <= iMuga do
begin
iFibo1 := iFibo2 ;
iFibo2 := iFibo3 ;
iFibo3 := iFibo1 + iFibo2 ;
iFiboKopuru := iFiboKopuru + 1 ;
end ;

fniFibonacciZenbakienKopuruaKalkulatu := iFiboKopuru ;
end ; { funtzioaren kodea hemen amaitzen da }




Programaren bigarren zatiko irteera bat hau izan daiteke:









Balizko emaitzaren iturburu-programa hau izan daiteke...   laster argitaratuko da  




 













iruzkinik ez:

Argitaratu iruzkina