Книга: Программирование на языке Ruby

5.19. Извлечение кубических корней, корней четвертой степени и т.д.

5.19. Извлечение кубических корней, корней четвертой степени и т.д.

В Ruby встроена функция извлечения квадратного корня (Math.sqrt), поскольку именно она применяется чаще всего. А если надо извлечь корень более высокой степени? Если вы еще не забыли математику, то эта задача не вызовет затруднений.

Можно, например, воспользоваться логарифмами. Напомним, что е в степени x — обратная функция к натуральному логарифму x и что умножение чисел эквивалентно сложению их логарифмов.

x = 531441
cuberoot = Math.exp(Math.log(x)/3.0)   # 81.0
fourthroot = Math.exp(Math.log(x)/4.0) # 27.0

Но можно просто использовать дробные показатели степени (оператор возведения в степень принимает в качестве аргумента произвольное целое число или число с плавающей точкой).

include Math
y = 4096
cuberoot = y**(1.0/3.0)     # 16.0
fourthroot = y**(1.0/4.0)   # 8.0
fourthroot = sqrt(sqrt(y))  # 8.0 (то же самое)
twelfthroot = y**(1.0/12.0) # 2.0

Отметим, что во всех примерах мы пользовались при делении числами с плавающей точкой (чтобы избежать отбрасывания дробной части).

Оглавление книги

Оглавление статьи/книги

Генерация: 1.525. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз