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

Использование функции tanh для работы с гиперболическим тангенсом
Раздел: Математические функции
tanh(float num): float

Функция tanh() в PHP вычисляет гиперболический тангенс числа. Эта математическая функция часто применяется в областях, связанных с нейронными сетями, машинным обучением, статистикой и обработкой сигналов, где требуется нормализация данных в диапазон от -1 до 1.

Аргументы функции

Функция принимает один обязательный аргумент:

  • $num (число типа float) - значение, для которого вычисляется гиперболический тангенс. Аргумент может быть положительным или отрицательным числом.

Функция всегда возвращает значение типа float в диапазоне от -1 до 1.

Примеры использования
Вычисление для положительного числа
echo tanh(2.5);
0.98661429815143
Вычисление для отрицательного числа
echo tanh(-1.8);
-0.94680601284627
Вычисление для нуля
echo tanh(0);
0
Применение с целым числом
var_dump(tanh(5));
float(0.9999092042626)
Похожие функции в PHP

В PHP есть несколько математических функций для вычисления гиперболических величин:

  • sinh() - вычисляет гиперболический синус.
  • cosh() - вычисляет гиперболический косинус.
  • atanh() - вычисляет обратный гиперболический тангенс (артангенс).

Функции sinh() и cosh() применяются в аналогичных математических расчетах. atanh() выполняет обратное преобразование для tanh(). Выбор функции зависит от конкретной математической задачи.

Аналоги функции в других языках
Python
import math
print(math.tanh(2.5))
0.98661429815143
JavaScript
console.log(Math.tanh(2.5));
0.98661429815143
MySQL
SELECT TANH(2.5);
0.98661429815143
C++
#include <iostream>
#include <cmath>
int main() {
    std::cout << tanh(2.5);
}
0.98661429815143

Во всех перечисленных языках функция работает аналогично PHP, принимая один числовой аргумент.

Типичные ошибки
Передача нечислового аргумента
echo tanh('текст');
Warning: tanh() expects parameter 1 to be float, string given
Ожидание целочисленного результата
$result = tanh(10);
// Неправильно
if ($result == 1) {
    echo 'Максимум';
}
// Лучше использовать сравнение с учетом погрешности
if (abs($result - 1) < 0.00001) {
    echo 'Максимум';
}
Максимум

Также важно помнить, что функция возвращает приближенное значение, поэтому прямое сравнение чисел с плавающей точкой может давать неожиданные результаты.

Изменения в последних версиях PHP

Функция tanh() не претерпела значительных изменений в последних основных версиях PHP. В PHP 8.0 улучшена согласованность типов для математических функций, но сигнатура и поведение tanh() остались прежними.

Расширенные примеры
Нормализация данных
Пример php
function normalize($value, $min, $max) {
    $scaled = 2 * (($value - $min) / ($max - $min)) - 1;
    return tanh($scaled);
}
$data = [10, 20, 30, 40, 50];
$normalized = array_map(fn($val) => normalize($val, 10, 50), $data);
print_r($normalized);
Array
(
    [0] => -0.99932929973907
    [1] => -0.96402758007582
    [2] => 0
    [3] => 0.96402758007582
    [4] => 0.99932929973907
)
Применение в функции активации нейронной сети
Пример php
class Neuron {
    private $weights;
    private $bias;
    public function __construct($weights, $bias) {
        $this->weights = $weights;
        $this->bias = $bias;
    }
    public function activate($inputs) {
        $sum = $this->bias;
        foreach ($inputs as $i => $value) {
            $sum += $value * $this->weights[$i];
        }
        return tanh($sum);
    }
}
$neuron = new Neuron([0.5, -0.3, 0.8], 0.1);
$output = $neuron->activate([1.0, 0.5, -0.7]);
echo $output;
0.32063719831209
Вычисление производной
Пример php
function tanh_derivative($x) {
    $tanh_x = tanh($x);
    return 1 - pow($tanh_x, 2);
}
echo tanh_derivative(0.5);
0.78644773296593
Построение графика функции
Пример php
for ($x = -3; $x <= 3; $x += 0.5) {
    $y = tanh($x);
    echo sprintf("x=%.1f, y=%.4f", $x, $y) . "\n";
}
x=-3.0, y=-0.9951
x=-2.5, y=-0.9866
x=-2.0, y=-0.9640
x=-1.5, y=-0.9051
x=-1.0, y=-0.7616
x=-0.5, y=-0.4621
x=0.0, y=0.0000
x=0.5, y=0.4621
x=1.0, y=0.7616
x=1.5, y=0.9051
x=2.0, y=0.9640
x=2.5, y=0.9866
x=3.0, y=0.9951

PHP tanh function comments

En
Tanh Returns the hyperbolic tangent of a number