Exp: примеры (PHP)
exp(float $num): floatФункция exp в PHP
Функция exp() вычисляет экспоненту числа. Она возвращает значение числа e (приблизительно 2.718281828), возведенного в степень, равную переданному аргументу.
exp(float $num): float
Эта функция принимает один обязательный аргумент $num типа float (число с плавающей запятой), который представляет степень, в которую возводится число e. Функция возвращает результат типа float.
Функция используется в математических расчетах, статистике, финансовом анализе и других областях, где требуется применение натурального логарифма и экспоненты. Она часто применяется для моделирования экспоненциального роста или затухания.
Примеры базового использования
echo exp(1); // e^12.718281828459
echo exp(-1); // e^{-1}0.36787944117144
echo exp(0); // e^01
echo exp(0.5); // e^{0.5}1.6487212707001
Похожие функции в PHP
Функция pow() позволяет возводить в степень любое число, а не только константу e. Она принимает два аргумента: основание и показатель степени. Предпочтительнее использовать для общего возведения в степень.
echo pow(M_E, 2); // Аналогично exp(2)7.3890560989307
Функция log() является обратной к exp() и вычисляет натуральный логарифм числа. Используется, когда требуется найти показатель степени.
$val = exp(5);
echo log($val); // Вернет 55
log10() вычисляет десятичный логарифм. log1p() возвращает log(1 + число), что обеспечивает высокую точность для малых значений. Выбор зависит от требуемого основания логарифма.
Эквиваленты в других языках
В Python функция math.exp() работает аналогично. Также есть константа math.e.
import math
print(math.exp(2))7.38905609893065
Exp в Javascript
В JavaScript используется метод Math.exp() глобального объекта Math.
console.log(Math.exp(2));7.38905609893065
Exp в MySQL
В MySQL есть одноименная функция EXP(), которую можно применять в SQL-запросах.
SELECT EXP(2);7.38905609893065
Отличия от PHP минимальны и касаются в основном деталей реализации типов данных и точности вычислений. Семантика и результат идентичны.
Распространенные ошибки
При передаче очень большого аргумента может произойти переполнение, и функция вернет значение INF (бесконечность).
echo exp(1000);INF
PHP попытается преобразовать нечисловой аргумент к типу float, что может привести к неожиданным результатам или предупреждению.
echo exp("строка");Warning: exp() expects parameter 1 to be float, string given
При работе с очень малыми или большими числами возможна потеря точности из-за ограничений типа float.
echo exp(-100); // Очень малое число3.7200759760208E-44
Изменения в новых версиях PHP
Сигнатура и поведение функции exp() остаются стабильными в течение многих версий, включая PHP 8.x. В PHP 8.0 была усилена строгость типов, поэтому передача нескалярных типов без явного приведения может вызывать TypeError. Функция продолжает возвращать результат типа float.
Расширенные примеры
Модель непрерывного начисления процентов: A = P * e^{rt}.
$principal = 1000; // Начальная сумма
$rate = 0.05; // Годовая ставка
$time = 3; // Время в годах
$amount = $principal * exp($rate * $time);
echo round($amount, 2);1161.83
Функция Softmax преобразует вектор в распределение вероятностей.
$scores = [3.0, 1.0, 0.2];
$expScores = array_map('exp', $scores);
$sumExp = array_sum($expScores);
$softmax = array_map(fn($val) => $val / $sumExp, $expScores);
print_r($softmax);Array
(
[0] => 0.83601880278144
[1] => 0.11314284146556
[2] => 0.050838355752999
)Нахождение времени затухания сигнала до половины мощности: t = ln(0.5) / k = log(0.5) / k.
$k = -0.1;
$halfLife = log(0.5) / $k; // ln(0.5) через log()
echo $halfLife;6.9314718055995
Применение формулы рекурсивного сглаживания.
$data = [10, 12, 15, 11, 14];
$alpha = 0.3;
$smoothed = [];
$prev = $data[0];
foreach ($data as $value) {
$prev = $alpha * $value + (1 - $alpha) * $prev;
$smoothed[] = round($prev, 2);
}
print_r($smoothed);Array
(
[0] => 10
[1] => 10.6
[2] => 11.92
[3] => 11.64
[4] => 12.35
)