Log: примеры (PHP)

Математический логарифм в PHP: работа с функцией log
Раздел: Математические функции
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);
?>

Аналоги в других языках программирования

Python

В модуле 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
JavaScript

Объект Math содержит методы для натурального (Math.log()) и десятичного (Math.log10()) логарифма. Для логарифма с произвольным основанием используется формула.

console.log(Math.log(10));          // 2.302585092994046
console.log(Math.log(100) / Math.log(10)); // 2
MySQL

Функции 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
Основание логарифма меньше или равно 0, либо равное 1
<?php
$result = log(10, 1);
?>
PHP Warning:  log(): Base must be greater than 0 and not equal to 1
Неявное преобразование типов

PHP попытается преобразовать строки в числа, что может привести к неожиданным результатам или ошибкам.

<?php
echo log('10abc'); // 2.302585092994 (с предупреждением)
?>

История изменений

В PHP 8.0 поведение функции стало более строгим в отношении типов. Передача аргументов нечисловых типов теперь чаще вызывает исключение TypeError, в отличие от более ранних версий, где происходило неявное преобразование. Сигнатура функции была формализована.

Расширенные примеры

Вычисление сложного процента

Определение времени для достижения цели при известной процентной ставке.

Пример php
<?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
<?php
$power_ratio = 1000; // Отношение мощностей
$dB = 10 * log10($power_ratio);
echo $dB; // Децибелы
?>
30
Обработка данных с широким диапазоном

Сжатие динамического диапазона значений для визуализации.

Пример php
<?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
<?php
// Решение 2^x = 1024
$x = log(1024, 2);
echo $x;
?>
10

PHP log function comments

En
Log Natural logarithm