Processing
Børre Stenseth
Problemer >Fibonacci

Fibonaccitallene

Hva

Her skal vi se litt på Fibonacci-tallene og noen sammenhenger.

Relevante Skisser
enkelFib, psiFib 

Analyse

Fibonacci-tallene har fått sitt navn fra den italienske matematikeren Leonardo Fibonacci som levde i Pisa i Italia på 1200-tallet. Selv om denne tallrekken var kjent og kommentert tidligere er det hans navn som knyttes til fenomenet. Du kan finne mass materiale på nettet både om mannen og tallene.

Kort sagt er Fibonaccitallen en tallrekke der hvert tall er summen av de to foregående V i begynner med 0 og 1. (Du vi se at noen begynner med 1 og 1) Matematisk kan vi skrive dette slik:

fn=fn-1+fn-2

Vi skal se litt nærmere på utregning av tallene og noen ting vi må passe på når vi arbeider med tall.

Vi kan begynne med å sette opp en enkel skisse som regner ut noen tall i tallrekka:

_enkelFib.pde
/*
De første fibonacci tallene
*/
int[] Fib;
void setup(){
  calculate(25);
  show();
}
void calculate(int antall){
  Fib=new int[antall];
  Fib[0]=0;
  Fib[1]=1; 
  for(int t=2; t<antall; t++)
    Fib[t]=Fib[t-2]+Fib[t-1];
}
void show(){
  for(int ix=0; ix < Fib.length;ix++)
   print(" "+Fib[ix]);
}

Når vi kjører dette får vi følgende tallrekke:

0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368

Så langt alt vel, men vi må passe på tallstørrelsen. Hvis vi lager for mange tall i Fibonacci-rekka risikerer vi å lage et hetall som er større enn det vi kan lagre som et heltall, int. Du kan finne ut hvor grensen går ved å skrive ut println(Integer.MAX_VALUE); Problemet er at du får ingen feilmelding hvis du forsøker å legge inn en større verdi, men verdien blir negativ. Vi kan strekke oss lenger med long, du kan forsøke å skrive ut println(Long.MAX_VALUE);

Det gylne snitt

Fibonacci-tallene har et forhold til Det gylne snitt. Det gylne snitt er et begrep som i hundrevis av år har blitt brukt i kunst, arkitektur, biologi og botanikk. Det gylne snitt er et foholdstall som i matematikken betegnes med den gresk bokstaven ψ , eller psi. Figurer som har en form etter Det gylne snitt oppfattes som estetisk og velproposjonert og i naturen som effektivt ut fra ulike vurderinger.

Du vil finne masse utredninger om Det gylne snitt på nettet. Det enkleste vi kan gjøre for å illustrere det er med en firkant. En firkant som er laget etter det gylne snitt har en side som er L og den andre siden er L* ψ .

Med tre desimaler har ψ denne verdien: 1,618. På samme måte som π (pi) er verdien til ψ egentlig ubestemt. Vi nøyer oss som regel med å angi π som 3.14, men vi vet at det er tilgjengelig langt flere (uendelig mange) desimaler. Vi forfølger ikke π her, men vi kan se hvordan Fibonacci-tallene er en måte å beregne ψ så nøyaktig vi vil (innen rimelige grenser).

Forholdet mellom to Fibonacci-tall som ligger etter hverandre i rekka beskriver ψ. Forholdet konvergerer mot en verdi når vi kommer lenger og lenger ut i tallrekka. At det konvergerer betyr at endringen fra et steg til det neste blir mindre og mindre jo lenger ut i rekka vi kommer. Vi kan lage en skisse som viser hvordan denne konvergeringen fungerer.

_psiFib.pde
/*Enkel psi beregning*/
int[] Fib;
void setup(){
  calculate(20);
  show();
}
void calculate(int antall){
  Fib=new int[antall];
  Fib[0]=0;
  Fib[1]=1; 
  for(int t=2; t<antall; t++)
    Fib[t]=Fib[t-2]+Fib[t-1];
}
void show(){
  float psi=1.0;
  for(int ix=2; ix < Fib.length;ix++){
    // deler float/float for å få float
    psi=float(Fib[ix])/float(Fib[ix-1]);
    println("Fib["+ix+"]/Fib["+(ix-1)+"]="+psi);
  }

}

Utskriften i consolet blir slik:

Fib[2]/Fib[1]=1.0
Fib[3]/Fib[2]=2.0
Fib[4]/Fib[3]=1.5
Fib[5]/Fib[4]=1.6666666
Fib[6]/Fib[5]=1.6
Fib[7]/Fib[6]=1.625
Fib[8]/Fib[7]=1.6153846
Fib[9]/Fib[8]=1.6190476
Fib[10]/Fib[9]=1.617647
Fib[11]/Fib[10]=1.6181818
Fib[12]/Fib[11]=1.6179775
Fib[13]/Fib[12]=1.6180556
Fib[14]/Fib[13]=1.6180258
Fib[15]/Fib[14]=1.6180371
Fib[16]/Fib[15]=1.6180328
Fib[17]/Fib[16]=1.6180345
Fib[18]/Fib[17]=1.6180338
Fib[19]/Fib[18]=1.618034

Dette er en svært kort innføring temaet Fibonacci og Det gylne snitt. Du finner en masse interessante betraktninger og illustrasjoner på nettet.

Oppgaverforslag

Konvergering

Lag en illustrasjon (figur, bilde, kurve) som viser hvordan ψ( psi) endrer seg når vi går fra 0 og utover i Fibonacci-tallrekka

Andre tall

Bygg en tallrekke som starter på noe annet enn 0 og1, f.eks to tilfeldige tall mellom 10 og 100. Tallrekka skal lages på samme måte som Fibonacci-talene: Det neste tallet er summen av de to foregående. Hva skjer med beregningen av det gylne snitt, ψ, i dette tilfellet ?

Figur

Denne figuren dukker ofte opp for å illustrere Det gylne snitt. Kan du tegne dette i eller annen form ?

Problemer >Fibonacci