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
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:
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:
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