Gyakorlati alapok
...és ne vonakodjunk gyökét vonni!
A gyökvonás tulajdonképpen a hatványozás fordítottja (inverz művelete). Ekkor ismerjük a végeredményt, csak azt nem tudjuk, hogy melyik az a szám, amelyiket önmagával megszorozva a végeredményt adja. Fontos megjegyeznünk, hogy ilyen szám nem mindig létezik.
√4 = 2 (mert 2 * 2 = 4)
√9 = 3 (mert 3 * 3 = 9)
A Java-nyelvben a négyzetgyökvonásért a Math.sqrt(eredmeny) függvény felel (sqrt = square root):
import java.math.*;
public class Main {
public static void main(String[] args) {
double alap = 0;
double eredmeny = 9;
alap = Math.sqrt(eredmeny);
System.out.println(alap);
}
}
Végeredmény: 3.0
A helyes számításhoz mindkét változó értékét double típusúvá kellett alakítani.
Az is észrevehető, hogy szokatlan módon az eredményből indulok ki (9) és az alapba kerül a végeredmény. Ezt azért tettem így, hogy lássuk: a gyökvonás valóban a négyzetre emelés fordítottja (inverz művelete).
A gyökvonás természetesen nem állhat meg a négyzetgyökig, hiszen további mélységekbe is hatolhatunk az alapok keresése végett, ám ekkor már for ciklust kell bevetnünk. Például melyik szám 81 4. gyöke?
4√81 = ?
Így is kérdezhetnénk:
81 = n * n * n * n
import java.math.*;
public class Main {
public static void main(String[] args) {
double alap = 0;
double eredmeny = 81;
double seged = eredmeny;
for(int i = 0; i < 2; i++){
alap = Math.sqrt(seged);
seged = alap;
}
System.out.println(alap);
}
}
Végeredmény: 3.0
A kódban észrevehető, hogy a for ciklus csak kétszer fut le, ennek matematikai oka van:
√81 = 9
√9 = 3
Ez 2 db négyzetgyökvonás. Ez a kód azért nem elegáns megoldás, mert nem tudunk vagy csak nagyon mesterkélten tudunk például köbgyököt vonni (általánosságban: a páratlan számú gyökkitevők nem működnek). Ebből következően a gyökvonást érdemes inkább máshogyan kiszámítanunk. Például melyik szám 3125 5. gyöke?
5√3125 = ?
Így is kérdezhetnénk:
3125 = n * n * n * n * n
import java.math.*;
public class Main {
public static void main(String[] args) {
double gyokkitevo = 5;
double szam = 3125;
System.out.println(Math.pow(szam, 1/gyokkitevo));
}
}
Végeredmény: 5.0
A kódban kis trükközés történik, mert valójában a hatványozó függvénnyel és a gyökkitevő reciprokával számolunk (Math.pow(szam, 1/gyokkitevo)).