Gyakorlati alapok

Fibonacci rejtett ékszere: az aranyarány

 

Az előző fejezetben felfedeztük a Fibonacci-sorozat belső matematikai szépségét és sikeresen implementáltuk Java-nyelven. A számsor azonban...

 

0 - 1 - 1 - 2 - 3 - 5 - 8 - 13 - 21 - 34...

 

...további kincset rejteget magában aranyarány néven, mert az egyenletes belső arányosság miatt az aranyarány nagyjából 1.618 körül, "kváziállandó" érték, jele a nagy görög FI (Φ). Kiszámítása:

 

 Φ = a / b

 

...ahol a a nagyobbik arány, b a kisebbik.

 

Mivel a FI irracionális szám, nem írható fel 2 egész szám hányadosaként, ezért az osztások csak közelítő értéket adhatnak.

 

www.informatika-programozas.hu - Ezt most meg kell tanulni!

 

A FI értéke 1.618 körül mozog.

 

Bevezetésképpen melegítsünk be a Fibonacci-sorozat egyik, már publikált Java-implementációjával:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

public class Main {
    public static void main(String[] args) {
    int [] tomb = new int[20];
    tomb[0] = 0;
    tomb[1] = 1;
    for (int i = 0; i < tomb.length-2; i++){
        tomb[i+2] = tomb[i] + tomb[i+1];
        System.out.print (tomb[i] + " ");
        }
    }
}

 

Végeredmény:

0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181

 

Bizonyítsuk be az állításokat a fenti Java-kód kis módosításával. Legelsősorban az inicializálás értékeit kell megváltoztatni...

 

tomb[0] = 2.0;

tomb[1] = 3.0;

 

...hogy az osztásokba ne keveredjen 0. Másodsorban pedig -szintén az osztás miatt-, a tömb és minden változó típusát double típusra kellett változtatni.

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

public class Main {
    public static void main(String[] args) {
    double [] tomb = new double[12];
    tomb[0] = 2.0;
    tomb[1] = 3.0;
    for (int i = 0; i < tomb.length-2; i++){
        tomb[i+2] = tomb[i] + tomb[i+1];
        double aranyarany = tomb[i+1] / tomb[i];
        System.out.println (aranyarany);
        }
    }
}

 

Végeredmény:

1.5
1.6666666666666667
1.6
1.625
1.6153846153846154
1.619047619047619
1.6176470588235294
1.6181818181818182
1.6179775280898876
1.6180555555555556

 

Az aranyarány viszonylag állandó értéke tehát bizonyítást nyert. Most nézzük meg a kiszámítás kódját nem tömbös, hanem egyszerű változós megoldásban is. Ennek már szintén publikált előzménye a következő:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

public class Main {
public static void main(String[] args) {
    int felsoHatar = 12;
    double elsoSzam = 2;
    double masodikSzam = 3;
    double eredmeny = 0;
    double aranyarany = 0;
    for (int i = 0; i < felsoHatar; i++){
        eredmeny = elsoSzam + masodikSzam;
        aranyarany = masodikSzam / elsoSzam;
        elsoSzam = masodikSzam;
        masodikSzam = eredmeny;
        System.out.println(aranyarany);
        }
    }
}

 

Végeredmény:

1.5
1.6666666666666667
1.6
1.625
1.6153846153846154
1.619047619047619
1.6176470588235294
1.6181818181818182
1.6179775280898876
1.6180555555555556
1.6180257510729614
1.6180371352785146

 

www.informatika-programozas.hu - Ezt most meg kell tanulni!

 

Láthatjuk, hogy FI értéke a 3 és 5 számpárosnál áll be 1.6 körüli értékre, hiszen 3 / 2 még 1.5.