The n
- th root of x
to numer r
taki, że r
do potęgi 1/n
to x
.
W liczb rzeczywistych, istnieją pewne subcases:
- Istnieją dwa rozwiązania (sama wartość z przeciwnym znakiem) jest dodatnia, gdy
x
i r
jest parzysta.
- Istnieje jedno pozytywne rozwiązanie, gdy
x
jest dodatnie i r
jest dziwne.
- Istnieje jedno negatywne rozwiązanie, gdy
x
ma wartość ujemną, a r
jest nieparzyste.
- Nie ma rozwiązania, gdy
x
jest ujemna, a r
jest równa.
Od Math.pow
nie lubi ujemną bazę z wykładnikiem nie całkowitą, można użyć
function nthRoot(x, n) {
if(x < 0 && n%2 != 1) return NaN; // Not well defined
return (x < 0 ? -1 : 1) * Math.pow(Math.abs(x), 1/n);
}
Przykłady:
nthRoot(+4, 2); // 2 (the positive is chosen, but -2 is a solution too)
nthRoot(+8, 3); // 2 (this is the only solution)
nthRoot(-8, 3); // -2 (this is the only solution)
nthRoot(-4, 2); // NaN (there is no solution)
Ile z tych korzeni chcesz? Tylko ten najbardziej oczywisty, czy wszystkie? –