Книга: Программирование на языке Ruby
5.24. Вычисление логарифмов по произвольному основанию
5.24. Вычисление логарифмов по произвольному основанию
Чаще всего мы пользуемся натуральными логарифмами (по основанию е, часто натуральный логарифм обозначается как ln), иногда также десятичными (по основанию 10). Эти функции реализованы в методах Math.log
и Math.log10
соответственно.
В информатике, а в особенности в таких ее областях, как кодирование и теория информации, обычно применяются логарифмы по основанию 2. Например, так вычисляется минимальное число битов, необходимых для представления числа. Определим функцию с именем log2
:
def log2(x)
Math.log(x)/Math.log(2)
end
Ясно, что обратной к ней является функция 2**x
(как обращением ln x
служит Math::Е**x
или Math.exp(x)
).
Эта идея обобщается на любое основание. В том маловероятном случае, если вам понадобится логарифм по основанию 7, можно поступить так:
def log7(x)
Math.log(x)/Math.log(7)
end
На практике знаменатель нужно вычислить один раз и сохранить в виде константы.
- 5.1. Представление чисел в языке Ruby
- 5.2. Основные операции над числами
- 5.3. Округление чисел с плавающей точкой
- 5.4. Сравнение чисел с плавающей точкой
- 5.5. Форматирование чисел для вывода
- 5.6. Вставка разделителей при форматировании чисел
- 5.7. Работа с очень большими числами
- 5.8. Использование класса BigDecimal
- 5.9. Работа с рациональными числами
- 5.10. Перемножение матриц
- 5.11. Комплексные числа
- 5.12. Библиотека mathn
- 5.13. Разложение на простые множители, вычисление НОД и НОК
- 5.14. Простые числа
- 5.15. Явные и неявные преобразования чисел
- 5.16. Приведение числовых значений
- 5.17. Поразрядные операции над числами
- 5.18. Преобразование системы счисления
- 5.19. Извлечение кубических корней, корней четвертой степени и т.д.
- 5.20. Определение порядка байтов
- 5.21. Численное вычисление определенного интеграла
- 5.22. Тригонометрия в градусах, радианах и градах
- 5.23. Неэлементарная тригонометрия
- 5.24. Вычисление логарифмов по произвольному основанию
- 5.25. Вычисление среднего, медианы и моды набора данных
- 5.26. Дисперсия и стандартное отклонение
- 5.27. Вычисление коэффициента корреляции
- 5.28. Генерирование случайных чисел
- 5.29. Кэширование функций с помощью метода memoize
- 5.30. Заключение
- 5.21. Численное вычисление определенного интеграла
- Глава 2 Вычисление
- Листинг 4.4. (primes.с) Вычисление простых чисел в потоке
- Вычисление размера кэша
- Вычисление приоритетов и квантов времени
- 4.12. Вычисление выражений
- Вычисление номеров
- 4. Вычисление радиуса Земли
- Вычисление LCS двух строк
- Вычисление LCS двух файлов
- 5.2.1. Вычисление максимума
- 2.3.9. Вычисление размера БД