Artikel top billede

(Foto: Computerworld)

Sådan forstår du Fibonacci-rækken

Særlige tal er fascinerende, og derfor dykker vi ned i Fibonaccis ejendommelige talrække.

Af Redaktionen, Alt om Data

Denne artikel er oprindeligt bragt på Alt om Data. Computerworld overtog i november 2022 Alt om Data. Du kan læse mere om overtagelsen her.

Når vi ser på fænomener som Mandelbrotmængden, cellulære automata og 3D-fraktaler, erfarer vi, at matematikkens love kan afføde betagende visuelle billeder.

Vi går ud fra, at mange af dem, der ser skævt til matematikken, er blevet beroliget af den grund. I denne artikel vil vi vise, at selve tallene – ikke kun deres visuelle repræsentation – kan være lige så fascinerende.

De tal, vi har valgt til denne afskrækkende opgave, er opkaldt efter den italienske matematiker Leonardo Pisano Bogollo, der levede i det 13. århundrede. Han er bedre kendt som Leonardo Fibonacci.

Kaninavl

Gnaveres forplantning kan lyde som et underligt sted at begynde, men denne talrække fremkom først, da Fibonacci udtænkte en model for en kaninbestands vækst.

Han gik ud fra, at der var et par kaniner til at begynde med og definerede disse regler for deres vækst: I en alder af en måned bliver et par kaniner kønsmodne, og de forplanter sig hver måned for evigt, idet de aldrig uddør.

Drægtighedsperioden er en måned, og hver drægtighed fører til, at der bliver født endnu et par kaniner. Det er tydeligvis ikke den mest nøjagtige model for en bestands vækst, men den afslører en interessant talrække. Lad os prøve at oprette et dokument i Excel, OpenOffice eller Google Docs.

Begynd med tre kolonner, der hedder Måned, Samlede antal kaniner og Voksne kaniner i cellerne A3, B3 og C3 og med de indledende værdier 1, 1 og 0 i cellerne A4, B4 og C4. Skriv =A4+1 i A5 for at få den månedlige tilvækst.

Skriv så =B4+C4 i B5 for at afspejle det faktum, at den nye samlede bestand er bestanden i forrige måned plus et nyt par for hvert voksent par kaniner i forrige måned.

Skriv også =B4 i C5 for at afspejle den omstændighed, at antallet af voksne kaniner er det samlede antal kaniner i forrige måned. Til sidst skal du kopiere cellerne A5, B5 og C5 så mange rækker ned, som du synes.

Hvis du ser ned ad kolonne B, vil du se, at bestanden vokser hurtigt. Men ved første øjekast synes tallene ikke at følge nogen fast række, og de er bestemt ikke beslægtede med en kendt binær række som 2, 4, 8, 16, 32, 64 og så videre, som vi ville forvente det ved ren eksponentiel vækst.

Men selv om man ikke har set dem før, står det hurtigt klart, hvad mønstret er. Vi begynder med 1 og 1 som de to første to tal. Hvert efterfølgende tal er summen af dets to forgængere, og det er definitionen på Fibonaccis talrække.

Forbløffende quincunx

Nu skal vi se på noget, der hedder en quincunx. Ordet lyder måske ejendommeligt, men det dækker over en indretning, der blev opfundet af den britiske matematiker sir Francis Galton i det 19. århundrede. Formålet var at bidrage til undersøgelser inden for statistik og sandsynlighedsberegning. Opfindelsen bruges somme tider som spilmaskine.

Den består af en skrånende plade med nåle, der er arrangeret i en trekant, og med en række beholdere i bunden. Man hælder kugler ind foroven, så de ruller ned ad den skrånende plade. Når en kugle rammer den enkelte nål øverst på pladen, er sandsynligheden for, at den falder til venstre eller højre 50/50.

Under alle omstændigheder falder den til endnu en nål, og igen er sandsynligheden 50/50. Kuglen fortsætter ned i en zigzagbevægelse, indtil den til sidst falder ned i en af beholderne forneden. Når den bliver brugt som spilmaskine, er der tildelt odds til de enkelte beholdere. Som matematisk kuriositet er den interessant i forbindelse med sandsynligheden for, at kuglen lander i en bestemt beholder.

Vi opgiver at bygge en rigtig quincunx og går i stedet til en fiks JavaScript-simulering, som du kan finde på www.mathsisfun.com/data/quincunx.html.

Brug lidt tid på at kigge på den for at få en fornemmelse for kuglernes bevægelse i en quincunx. Du vil bemærke, at kuglerne ruller ned ad pladen fra nål til nål og ender i en af beholderne i bunden, hvor et tal viser, hvor mange der er landet i hver beholder. Denne oplysning bliver også vist som et histogram (eller søjlediagram) nedenunder.

Når du har set, hvad der sker, skal du klikke på knappen Fast Forward for at øge simulationens fart. Lad den køre, indtil der er kastet mindst 1.000 kugler. Nu begynder resultaterne at blive statistisk signifikante.

Du vil se, at de fleste af kuglerne ender i de midterste beholdere, og tallet bliver mindre ud mod kanterne. Årsagen er, at der er flere mulige zigzagruter til de midterste beholdere end til dem i yderkanterne.

Du kan tælle antallet af mulige ruter i hånden, men vi vil foreslå, at du holder dig til en lille quincunx, for eksempel en med fire rækker nåle og fem beholdere. I dette tilfælde bør du ende med 1, 4, 6, 4 og 1 som antallet af mulige ruter til hver beholder.

Hvis du er matematisk indstillet, genkender du måske disse tal som den fjerde række i Pascals trekant. Du kan beregne en hvilken som helst anden række ved at vælge en quincunx med en passende størrelse.

Hvis du ikke er fortrolig med Pascals trekant, kan vi nævne, at den er en matematisk enhed, der består af rækker af tal. Hver række indeholder et tal mere end den foregående række, og den er forskudt i forhold til rækken ovenover.

Det enkelte tal i den første række er 1, og man udregner tallene i de efterfølgende rækker ved at addere tallene til venstre og højre i den foregående række. Uden at gå for meget i detaljer vil vi nøjes med at sige, at tallene og rækkerne i Pascals trekant er vigtige i matematikken, fordi de er binomialkoefficienter.

Hvad har alt det med Fibonaccitallene at gøre? Svaret er, at Fibonaccirækken er en af de mange, der dukker op i Pascals trekant. Hvis du adderer tallene i på hinanden følgende diagonale rækker, sådan som det er vist med farve i diagrammet, vil du se, at tallene, der begynder med 1 og 1, er Fibonaccital. Det er endnu et tegn på, hvor forbundne begreber kan være, men det er navnlig et eksempel på, at Fibonaccitallene dukker op med påfaldende hyppighed.

Det er måske endnu mere overraskende, at vi også finder rækken i naturen: Prøv at tælle kronblade på en blomst, og du vil vældig ofte se, at deres antal stemmer med tallene fra Fibonaccis række.

Nu skal vi vende blikket mod et nært beslægtet og forbløffende tal, der ofte bliver karakteriseret ved det græske bogstav fi (φ).

Det gyldne snit

Først opretter vi endnu et Excelregneark, der beregner en kolonne med Fibonaccital, men denne gang skal vi generere hvert af dem ved simpelthen at addere tallene i de to foregående kolonner. Du kan for eksempel få 1/1, 2/1, 3/2, 5/3, 8/5 og så videre som forholdene mellem fortløbende Fibonaccital.

Hvis vi viser dem som decimaltal, fremstår de som 1, 2, 1,5, 1,666..., 0,6, og de kommer endnu tættere på hinanden. Fra cirka den 15. række ser de ud til at have faldet til ro som et enkelt tal. Men det skyldes kun, at der bliver vist utilstrækkelige decimalpunkter. Det vil du hurtigt opdage, hvis du gør kolonnen bredere.

Du kan også vise disse forhold som en graf. Hvis du gør det, vil du se, hvordan de begynder at springe vildt omkring, og inden længe samler de sig om et tal, der omtrent svarer til 1,618034.

Du kender måske ikke dette tal, men det er endnu en konstant i matematikken ligesom pi og e (grundlaget for naturlige logaritmer). Ligesom disse konstanter er det irrationelt, hvilket betyder, at det fortsætter uendeligt, når man viser det som en decimalbrøk. Denne konstant var kendt i antikken, og den er elsket af malere, fotografer og arkitekter.

Den kaldes det gyldne snit. Dens symbol er det græske bogstav lille fi (φ), og den definerer en metode til at opdele en distance i to forskellige dele. Opdelingen indebærer, at forholdet mellem den største del og den mindste del svarer til forholdet mellem hele distancen og den største del, og denne opdeling bliver ofte betragtet som den æstetisk mest tilfredsstillende.

I landskabsbilleder ser man ofte, at horisonten opdeler billedet i overensstemmelse med det gyldne snit, og fotografer bruger ofte (om end ubevidst) et lignende princip i deres beskæring.

Hvis du laver digital kunst eller beskærer fotografier, kan du overveje at bruge de teknikker, vi har nævnt. Med lidt matematisk justering kan man nå langt, når det gælder om at forstå æstetik.

Lav et gyldent snit

Ligesom Fibonaccitallene dukker det gyldne snit op i naturen igen og igen. Her bruger vi en grafikpakke til at finde sådan en form. Tegn et rektangel med de to sider i det gyldne snit, således at den længste side er cirka 1,62 gange længere end den korteste. Det kalder man et gyldent rektangel.

Del nu rektanglet op på langs i overensstemmelse med det gyldne snit, så du ender med et kvadrat og endnu et rektangel. Du vil se, at rektanglet som det forrige er et gyldent rektangel, og det betyder, at du kan gøre nøjagtig det samme igen. Gør det adskillige gange.

Tegn nu en kvart cirkel i hvert af kvadraterne, som det fremgår af diagrammet, så der opstår en spiral. Denne form kaldes den gyldne spiral, og den ligger meget tæt på adskillige skaldyr som for eksempel blæksprutten nautilus.

Du kan også prøve noget specialiseret software, hvis du laver kunst på baggrund af dette forhold. Programmet Golden Section (www.markuswelz.de/software2/index.html) lægger et gennemskinneligt vindue over det vindue, du bruger. På den måde kan du bruge din foretrukne grafikpakke, samtidig med at du nemt lever op til det gyldne snit.

Beregn det gyldne snit

Vi har set en metode til beregning af det gyldne snit. Eller mere nøjagtigt: Til at komme tættere på det. Men som med meget andet i matematikken er det kun en af flere måder. Her ser vi nogle af de andre muligheder, du kan dykke ned i med Excel.

Det gyldne snit er defineret af det følgende udsagn, der bliver ved uendeligt. Ligesom når man dividerer på hinanden følgende Fibonaccital, får man kun en tilnærmelse, men man kan komme ret tæt på ved at blive ved mange gange.
Og hvis du vil prøve endnu en, løber den her også sammen i det gyldne snit.

Fibonaccirækken er faktisk ret nyttig. Hvis man bruger de teknikker, man genererer den med, på forskellige grundtal, kan den bruges til at danne randomiserede tal. Det var netop det, programmørerne David Braben og Ian Bell gjorde, da de skabte solsystemerne i det klassiske spil Elite.

Ved at vælge et udvalg af passende grundtal, kunne kodefolkene vride hele otte galakser – hver med detaljerede stjernesystemer med planeter, der havde individuelle egenskaber – ind på blot 22kB. »Der findes bedre teknikker end Fibonaccirækken, men princippet er det samme,« siger David Braben i Elites FAQ, der tidligere lå på www.frontier.co.uk.

»En sådan række kan man bruge til at give planeterne navne, koordinater, størrelser, økonomiske systemer og så videre. Softwaren er udviklet til at udelukke fjollede muligheder.

Følgelig består lagerpladsen kun af grundtallet – der for Elite var seks bytes for hver galakse. Men for at spare hukommelse (jo, seks bytes var meget dengang) brugte hver galakse det samme grundtal drejet en gang (det svarer til at dividere med to og kopiere menten ind i det øverste binære ciffer).«

Systemet til at generere randomiserede tal var dog ikke fejlfrit. Hvis man vovede sig ud på bestemte steder, kunne man møde nogle ret besynderlige skabninger.

For eksempel Spiselige Kunststuderende eller Dræberdigtere. Nogle systemer blev genereret for langt fra deres naboer, til at man kunne udforske dem, og Braben og Bell blev nødt til at fjerne en hel galakse efter at have fundet en planet, der var blevet tildelt det bedårende navn Arse (røv).

Du kan læse mere om Elite randomiserede talgenerator på http://wiki.alioth.net/index.php/Random_number_generator eller lovligt downloade NES-udgaven af spillet fra http://ome.clara.net/iancgbell/elite/nes/index.htm.

[themepacific_accordion]
[themepacific_accordion_section title="Fakta"]

Det skal du bruge…

[/themepacific_accordion_section]
[themepacific_accordion_section title="Fakta"]

Stort Fi

[/themepacific_accordion_section]
[themepacific_accordion_section title="Fakta"]

Solsikkefrø

[/themepacific_accordion_section]
[/themepacific_accordion]