Gyakorlati alapok

Lóg a ritmus!

 

A hatványozás egyik inverz művelete a gyökvonás, amely során tudjuk a hatványozás végeredményét, csak azt az alapszámot nem, amelyiket önmagával megszorozva kapjuk meg a végeredményt.

 

n * n * n * n = 16

 

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

 

A hatványozás másik inverz művelete a logaritmus, amely során ismerjük az alapszámot és a végeredményt, csak azt nem tudjuk, hogy hányszor kell önmagával megszorozni a helyes végeredményhez.

 

Ekkor tehát valójában a kitevő értéke a kérdéses:

 

3 * 3 * 3 * 3 = 81

 

34 = 81

 

log3 81 = ?

 

log3 81 = 4

 

A logaritmust felhasználó számítások a természettudomány és műszaki tudományok alapját képezik, ezért a Java-nyelv szintén natívan támogatja (java.math.*;).

 

Először nézzük meg a 10-es alapú logaritmusokat 1 és 8 között:

 

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

 

 

 

 

 

 

 

 

import java.math.*;

public class Main {
    public static void main(String[] args) {
    double kitevo = 0;
    double eredmeny = 10;
        for(int i = 1; i <= 8; i++){
        kitevo = Math.log10(eredmeny);
        System.out.println((int)eredmeny + " log10 = " + (int)kitevo);
        eredmeny *= 10;
        }
    }
}

 

Végeredmény:

10 log10 = 1
100 log10 = 2
1000 log10 = 3
10000 log10 = 4
100000 log10 = 5
1000000 log10 = 6
10000000 log10 = 7
100000000 log10 = 8

 

A kiírásnál az eredetileg double típusú értékek pusztán az olvashatóság érdekében kasztolva (típuskényszerítve) lettek int típusra. Azt is észrevehetjük, hogy az érthetőség kedvéért a hatványozás végeredményéből indulunk ki (eredmeny) és "visszafelé" számolunk a kitevő megtalálására (kitevo).

 

Az alábbi Java-kód pedig már n-alapú logaritmust fogja nekünk kiszámolni (a kódban n számot az alap változó képviseli), de szintén "visszafelé" araszolunk, legalábbis az elnevezésekben:

 

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

 

 

 

 

 

 

 

 

import java.math.*;

public class Main {
    public static void main(String[] args) {
    double alap = 3;
    double kitevo = 0;
    double eredmeny = 81;
    kitevo = Math.log(eredmeny) / Math.log(alap);
    System.out.println(kitevo);
    }
}

 

Végeredmény: 4.0