Sinh: примеры (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.6268604078470186Sinh в Javascript
В JavaScript метод Math.sinh() является частью объекта Math. Возвращает гиперболический синус числа.
console.log(Math.sinh(2));
// Вывод: 3.6268604078470186Sinh в 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
Функция sinh() теперь выбрасывает исключение TypeError, если ей передается аргумент, который не является числом (float/int) или числовой строкой. Ранее такие аргументы могли генерировать предупреждение и возвращать NaN.
В более ранних версиях функция пыталась преобразовать нечисловые строки в числа, что иногда приводило к неожиданным результатам. Текущая строгая типизация повышает надежность кода.
Расширенные примеры использования sinh
Цепная линия описывается гиперболическим косинусом, но ее длина может быть выражена через гиперболический синус. Пример вычисления длины участка цепной линии y = a * cosh(x/a).
<?php
$a = 10; // Параметр
$x1 = -5;
$x2 = 5;
$length = $a * (sinh($x2 / $a) - sinh($x1 / $a));
echo 'Длина участка цепной линии: ' . $length;
?>Длина участка цепной линии: 10.01787492741Пример нахождения корня уравнения sinh(x) = 5 с использованием обратной функции asinh().
<?php
$value = 5;
$x = asinh($value); // asinh - обратная функция к sinh
echo 'x = ' . $x . '\n';
echo 'Проверка: sinh(x) = ' . sinh($x);
?>x = 2.3124383412728
Проверка: sinh(x) = 5Гиперболический синус может использоваться в статистике. Пример преобразования равномерного распределения.
<?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
// Генерация значений для нелинейного градиента
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