Citat:
Ursprungligen postat av
TuppenGusav
Uppgift i MATLAB: I en skrift från 1200-talet av italienaren Fibonacci förekommer en berömd talföljd som börjar; 0,1,1,2,3,5,6,13,21...
Från och med det tredje talet är varje tal summan av sina två föregångare 2
f_k = f_{k-1} + f_{k-2}, f_2=1, f_1=0
Har fått lite hjälp av en polare och skrivit lite själv på ett program som bestämmer det minsta k för vilket f_k > 100 000 men förstår inte riktigt koden på några ställen :/. Kan någon vara snäll och förklara lite vad som verkligen händer i koden så jag förstår.
f1 = 0; f2 = 1;
f3 = f2 + f1;
k = 3;
while f3 <= 100000
f1 = f2;
f2 = f3;
f3 = f2 + f1;
k = k + 1;
disp([f3 k])
end
disp('f_k är'), disp(f3)
disp('k värdet är'), disp(k)
De två första Fibonacci-talen är inkodade (f_1 = 0 respektive f_2 = 1). Därefter beräknas det nuvarande Fibonacci-talet f_3, som är lika med summan av de två föregående talen f_2 och f_1. Variabeln k är en 'räknare' som sätts till 3, ty vi är inne på Fibonacci-tal nummer 3. Sedan loopar vi så länge f_3 (dvs nuvarande Fibonacci-tal) är mindre än eller lika med 100 000. För varje loop uppdateras värdena för f_1 och f_2, och därefter beräknas f_3 enligt de uppdaterade värdena. Dessutom ökar k med 1 för varje loop - så att 'räknaren' håller koll på vilken loop vi befinner oss i.
Loopen avslutas när nuvarande Fibonacci-tal > 100 000, och visar då f_k (nuvarande Fibonacci-tal) och k (vilken ordning i Fibonacci-följden som talet har). f_25 är 75 025, f_26 är 121 393. Således är k = 26 det minsta k för vilket f_k > 100 000.