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

Гиперболический синус в PHP: применение и практические примеры
Раздел: Математические функции
sinh(float num): float

Функция sinh в PHP

Функция sinh() возвращает гиперболический синус числа. Она является частью математических функций PHP и основана на определении: sinh(x) = (ex - e-x) / 2.

Назначение функции

Гиперболические функции, включая sinh, применяются в различных областях: инженерия, физика (например, при расчетах в специальной теории относительности), архитектура (форма арок), финансовая математика. В программировании функция используется для расчетов с непрерывным ростом или в задачах, связанных с гиперболической геометрией.

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

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

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

Примеры использования функции sinh

Простое вычисление гиперболического синуса для разных значений.

<?php
// Пример 1: Положительное число
echo sinh(2);
?>
3.626860407847
<?php
// Пример 2: Отрицательное число
echo sinh(-1.5);
?>
-2.1292794550948
<?php
// Пример 3: Нуль
echo sinh(0);
?>
0
<?php
// Пример 4: Использование строкового аргумента (работает, но не рекомендуется)
echo sinh("1.2");
?>
1.5094613554122

Похожие функции в PHP

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

Гиперболические функции
  • cosh() – вычисляет гиперболический косинус.
  • tanh() – вычисляет гиперболический тангенс.
  • asinh() – вычисляет гиперболический арксинус (обратная функция к sinh).
  • acosh(), atanh() – другие обратные гиперболические функции.
Тригонометрические функции
  • sin() – вычисляет синус угла (в радианах).

Функция sinh используется именно для гиперболических расчетов, тогда как sin – для круговой тригонометрии. Их нельзя взаимозаменять.

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

Sinh в Python

В языке Python функция math.sinh() доступна в модуле math. Поведение аналогично PHP.

import math
print(math.sinh(2))
# Вывод: 3.6268604078470186

Sinh в Javascript

В JavaScript метод Math.sinh() является частью объекта Math. Возвращает гиперболический синус числа.

console.log(Math.sinh(2));
// Вывод: 3.6268604078470186

Sinh в MySQL

В СУБД MySQL существует математическая функция SINH(), которая используется в SQL-запросах.

SELECT SINH(2);
-- Результат: 3.626860407847
Отличия

Синтаксис и базовое поведение функций очень схожи. Основные отличия связаны с типами данных и контекстом использования (клиентский JavaScript, серверный PHP/Python, СУБД). В PHP, начиная с версии 8.0.0, передача нечисловых строк в функцию вызывает TypeError, в то время как в более ранних версиях и некоторых других языках могло происходить попытка преобразования.

Типичные ошибки при использовании

Передача неподдерживаемого типа данных

В PHP 8 передача массива, объекта или нечисловой строки приведет к TypeError.

<?php
try {
    echo sinh([2]);
} catch (TypeError $e) {
    echo 'Ошибка: ', $e->getMessage();
}
?>
Ошибка: sinh(): Argument #1 ($num) must be of type float, array given
Ошибки округления и большие числа

При очень больших аргументах результат может стремиться к бесконечности (INF).

<?php
$result = sinh(1000);
var_dump($result);
?>
float(INF)
Некорректное понимание области применения

Частая ошибка – путаница с функцией sin(). Гиперболический синус не является тригонометрической функцией и рассчитывается иначе.

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

PHP 8.0.0

Функция sinh() теперь выбрасывает исключение TypeError, если ей передается аргумент, который не является числом (float/int) или числовой строкой. Ранее такие аргументы могли генерировать предупреждение и возвращать NaN.

PHP 7.0.0 и ранее

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

Расширенные примеры использования sinh

Вычисление длины цепной линии

Цепная линия описывается гиперболическим косинусом, но ее длина может быть выражена через гиперболический синус. Пример вычисления длины участка цепной линии y = a * cosh(x/a).

Пример php
<?php
$a = 10; // Параметр
$x1 = -5;
$x2 = 5;
$length = $a * (sinh($x2 / $a) - sinh($x1 / $a));
echo 'Длина участка цепной линии: ' . $length;
?>
Длина участка цепной линии: 10.01787492741
Решение уравнений с гиперболическим синусом

Пример нахождения корня уравнения sinh(x) = 5 с использованием обратной функции asinh().

Пример php
<?php
$value = 5;
$x = asinh($value); // asinh - обратная функция к sinh
echo 'x = ' . $x . '\n';
echo 'Проверка: sinh(x) = ' . sinh($x);
?>
x = 2.3124383412728
Проверка: sinh(x) = 5
Генерация двустороннего экспоненциального распределения

Гиперболический синус может использоваться в статистике. Пример преобразования равномерного распределения.

Пример php
<?php
// Генерация случайного числа с распределением Лапласа (двустороннее экспоненциальное)
// Используется обратный гиперболический синус от равномерно распределенной величины
$u = mt_rand() / mt_getrandmax(); // Равномерное распределение [0,1)
$scale = 2.0;
$laplace = $scale * asinh( ($u - 0.5) / 0.5 );
echo 'Случайная величина: ' . $laplace;
?>
Случайная величина: -0.345... (значение меняется)
Создание анимации или градиента на основе гиперболических функций

Функция sinh может создавать нелинейные прогрессии для визуальных эффектов.

Пример php
<?php
// Генерация значений для нелинейного градиента
for ($i = -3; $i <= 3; $i += 0.5) {
    $intensity = (sinh($i) + 10) / 20; // Нормализация к диапазону ~[0,1]
    echo 'Значение: ' . round($i, 1) . ' -> Интенсивность: ' . round($intensity, 3) . "\n";
}
?>
Значение: -3 -> Интенсивность: 0.003
Значение: -2.5 -> Интенсивность: 0.01
...
Значение: 3 -> Интенсивность: 0.997

PHP sinh function comments

En
Sinh Returns the hyperbolic sine of a number