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

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

Описание функции cosh

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

Функция определена как:

cosh(x) = (ex + e-x) / 2

В PHP функция доступна в стандартной математической библиотеке и требует передачи одного аргумента. Единственный параметр — это число с плавающей запятой (тип float). Если передается нечисловое значение, PHP пытается преобразовать его в число.

Аргументы функции
  • $num — единственный обязательный аргумент. Число, для которого вычисляется гиперболический косинус. Может быть целым или дробным, положительным или отрицательным.
Возвращаемое значение

Функция возвращает значение типа float — гиперболический косинус аргумента $num. Для больших по модулю значений может вернуться INF (бесконечность).

Примеры использования cosh

Ниже представлены базовые примеры вызова функции с различными входными значениями.

Положительные числа
<?php
$value = 2.0;
$result = cosh($value);
echo $result;
?>
3.7621956910836
Отрицательные числа

Гиперболический косинус является четной функцией, поэтому cosh(-x) == cosh(x).

<?php
$value = -1.5;
$result = cosh($value);
echo $result;
?>
2.3524096152432
Нулевой аргумент
<?php
echo cosh(0);
?>
1
Большие значения
<?php
echo cosh(710);
?>
INF

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

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

sinh — гиперболический синус

Вычисляет гиперболический синус числа. Определяется как (ex - e-x) / 2.

<?php
echo sinh(1); // 1.1752011936438
?>
tanh — гиперболический тангенс

Возвращает гиперболический тангенс. Определяется как sinh(x) / cosh(x).

<?php
echo tanh(1); // 0.76159415595576
?>
Обратные гиперболические функции

acosh(), asinh(), atanh() — вычисляют обратные гиперболические функции (аркфункции). Полезны, когда нужно найти аргумент по значению функции.

<?php
echo acosh(3.7621956910836); // 2
?>
Тригонометрические аналоги

Функции cos(), sin(), tan() работают с обычными (круговыми) тригонометрическими функциями. Их используют, когда углы измеряются в радианах.

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

Альтернативы в других языках

Аналоги функции cosh существуют во многих языках программирования и базах данных. Их синтаксис и поведение могут незначительно отличаться.

Python

В модуле math доступна функция math.cosh(). Принимает число, возвращает float.

import math
print(math.cosh(2))
3.7621956910836
JavaScript

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

console.log(Math.cosh(2));
3.7621956910836
MySQL

В SQL-запросах можно использовать функцию COSH(). Она принимает числовой аргумент и возвращает его гиперболический косинус.

SELECT COSH(2);
3.7621956910836
C++

В стандартной библиотеке <cmath> доступна функция std::cosh(). Работает с типами double, float, long double.

#include <iostream>
#include <cmath>
int main() {
    std::cout << std::cosh(2) << std::endl;
    return 0;
}
3.7622

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

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

При работе с функцией cosh() возможны некоторые распространенные ошибки.

Передача нечислового аргумента

В PHP 8 при передаче нескалярного типа (например, массива) выбрасывается исключение TypeError. В более ранних версиях могло выдаваться предупреждение и происходить преобразование.

<?php
// PHP 8 и выше
try {
    cosh([1]);
} catch (TypeError $e) {
    echo $e->getMessage();
}
?>
cosh(): Argument #1 ($num) must be of type float, array given
Большие значения аргумента

При очень больших значениях аргумента функция возвращает INF (бесконечность). Это может привести к ошибкам в последующих вычислениях.

<?php
$large = cosh(1000);
var_dump($large);
?>
float(INF)
Потеря точности при операциях

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

<?php
// Сравнение двух выражений
$value = 1e-10;
$result1 = cosh($value) - 1;
$result2 = 0.5 * $value * $value; // Приближение для малых x
var_dump($result1, $result2);
?>
float(5.0000000000139E-21)
float(5.0E-21)

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

В PHP 8 функция cosh() претерпела изменения, связанные с системой типов.

Строгая типизация

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

<?php
// PHP 7
var_dump(cosh('abc'));
// PHP 8
try {
    var_dump(cosh('abc'));
} catch (TypeError $e) {
    echo 'Ошибка типа';
}
?>
// PHP 7: float(1)
// PHP 8: Ошибка типа
Именованные аргументы

Начиная с PHP 8.0, функцию можно вызывать с именованными аргументами, хотя это не имеет особого смысла, так как у функции только один параметр.

<?php
echo cosh(num: 2);
?>
3.7621956910836

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

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

Моделирование цепной линии

Форма провисающей цепи или кабеля под действием силы тяжести описывается уравнением цепной линии: y = a * cosh(x / a).

Пример php
<?php
$a = 2.0;
$x = 1.5;
$y = $a * cosh($x / $a);
echo $y;
?>
2.5424015717757
Вычисление площади гиперболического треугольника

Площадь гиперболического треугольника с углами α, β, γ вычисляется по формуле: π - (α + β + γ). Если стороны заданы через гиперболические функции, можно использовать формулу с cosh.

Пример php
<?php
// Пример: сторона a известна, угол A равен 1 радиану
$sideA = 0.5;
$coshA = cosh($sideA);
$angleA = 1.0;
// Используем гиперболический закон косинусов для нахождения стороны b
$angleB = 0.8;
$coshB = cosh($sideA) * cos($angleA) + sinh($sideA) * sin($angleA) * cos($angleB);
echo $coshB;
?>
1.3907948179444
Обработка массивов значений

Функцию можно применять к массиву чисел с помощью цикла или array_map.

Пример php
<?php
$values = [0, 0.5, 1.0, 1.5];
$hyperbolicCosines = array_map('cosh', $values);
print_r($hyperbolicCosines);
?>
Array
(
    [0] => 1
    [1] => 1.1276259652064
    [2] => 1.5430806348152
    [3] => 2.3524096152432
)
Комбинирование с другими математическими функциями

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

Пример php
<?php
// Проверка тождества cosh^2(x) - sinh^2(x) = 1
$x = 2.0;
$identity = pow(cosh($x), 2) - pow(sinh($x), 2);
echo $identity;
?>
1
Использование в статистике

Гиперболический косинус встречается в некоторых распределениях, например, в распределении Лапласа.

Пример php
<?php
// Плотность распределения Лапласа с параметром b = 1
$b = 1.0;
$x = 0.7;
$pdf = exp(-abs($x)/$b) / (2*$b);
// Альтернативная запись через гиперболический косинус для x > 0
if ($x > 0) {
    $pdf2 = 1 / (2 * $b * cosh($x/$b));
}
echo $pdf, ' ', $pdf2;
?>
0.246597 0.246597

PHP cosh function comments

En
Cosh Hyperbolic cosine