Log: примеры (PHP)
log(float $num, float $base = M_E): floatБазовая информация о функции log
Функция log в PHP вычисляет логарифм числа. Она является частью математического расширения и используется для решения задач, связанных с экспоненциальным ростом, шкалированием данных, сложными вычислениями в науке и финансах.
Функция принимает до двух параметров:
- $num (float) - обязательный аргумент. Число, для которого вычисляется логарифм. Должно быть положительным.
- $base (float) - необязательный аргумент. Основание логарифма. Если аргумент не указан, функция возвращает натуральный логарифм (с основанием e, число Эйлера).
Базовые примеры использования
Когда указан только один аргумент:
<?php
$result = log(10);
echo $result;
?>2.302585092994<?php
// Логарифм 100 по основанию 10
$result = log(100, 10);
echo $result;
?>2<?php
$result = log(8, 2);
echo $result;
?>3Похожие функции в PHP
Специализированная функция для вычисления десятичного логарифма (по основанию 10). Часто используется в технических расчетах и более читаема, чем log(100, 10).
<?php
echo log10(100); // 2
?>Вычисляет log(1 + $num) с высокой точностью для малых значений $num. Полезен при работе с числами, близкими к нулю, где прямая операция может привести к потере точности.
<?php
echo log1p(0.000001);
?>Аналоги в других языках программирования
В модуле math есть функции log(), log10(), log2() и log1p(). math.log(x[, base]) аналогична PHP.
import math
print(math.log(10)) # 2.302585092994046
print(math.log(100, 10)) # 2.0
print(math.log10(100)) # 2.0Объект Math содержит методы для натурального (Math.log()) и десятичного (Math.log10()) логарифма. Для логарифма с произвольным основанием используется формула.
console.log(Math.log(10)); // 2.302585092994046
console.log(Math.log(100) / Math.log(10)); // 2Функции LOG() и LOG10(). LOG(X) возвращает натуральный логарифм, LOG(B, X) - логарифм X по основанию B.
SELECT LOG(10); -- 2.302585092994046
SELECT LOG(10, 100); -- 2Типичные ошибки
Логарифм от неположительного числа не определен в действительных числах.
<?php
$result = log(-5);
?>PHP Warning: log(): Argument must be greater than 0<?php
$result = log(10, 1);
?>PHP Warning: log(): Base must be greater than 0 and not equal to 1PHP попытается преобразовать строки в числа, что может привести к неожиданным результатам или ошибкам.
<?php
echo log('10abc'); // 2.302585092994 (с предупреждением)
?>История изменений
В PHP 8.0 поведение функции стало более строгим в отношении типов. Передача аргументов нечисловых типов теперь чаще вызывает исключение TypeError, в отличие от более ранних версий, где происходило неявное преобразование. Сигнатура функции была формализована.
Расширенные примеры
Определение времени для достижения цели при известной процентной ставке.
<?php
$start = 1000;
$target = 2000;
$rate = 0.05; // 5% годовых
// Формула: years = log(target/start) / log(1+rate)
$years = log($target / $start) / log(1 + $rate);
echo round($years, 2); // Лет до удвоения
?>14.21Перевод из линейной шкалы в логарифмическую.
<?php
$power_ratio = 1000; // Отношение мощностей
$dB = 10 * log10($power_ratio);
echo $dB; // Децибелы
?>30Сжатие динамического диапазона значений для визуализации.
<?php
$values = [1, 10, 100, 1000, 10000];
$normalized = array_map(fn($v) => log($v + 1), $values); // +1 чтобы избежать log(0)
print_r($normalized);
?>Array
(
[0] => 0.69314718055995
[1] => 2.3978952727984
[2] => 4.6151205168413
[3] => 6.9087547793152
[4] => 9.2104403669765
)Нахождение показателя степени.
<?php
// Решение 2^x = 1024
$x = log(1024, 2);
echo $x;
?>10