Cosh: примеры (PHP)
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 существуют другие гиперболические и тригонометрические функции, которые могут быть полезны в зависимости от задачи.
Вычисляет гиперболический синус числа. Определяется как (ex - e-x) / 2.
<?php
echo sinh(1); // 1.1752011936438
?>Возвращает гиперболический тангенс. Определяется как sinh(x) / cosh(x).
<?php
echo tanh(1); // 0.76159415595576
?>acosh(), asinh(), atanh() — вычисляют обратные гиперболические функции (аркфункции). Полезны, когда нужно найти аргумент по значению функции.
<?php
echo acosh(3.7621956910836); // 2
?>Функции cos(), sin(), tan() работают с обычными (круговыми) тригонометрическими функциями. Их используют, когда углы измеряются в радианах.
Выбор между гиперболическими и тригонометрическими функциями зависит от математической модели. Гиперболические функции часто встречаются в вычислениях с гиперболической геометрией.
Альтернативы в других языках
Аналоги функции cosh существуют во многих языках программирования и базах данных. Их синтаксис и поведение могут незначительно отличаться.
В модуле math доступна функция math.cosh(). Принимает число, возвращает float.
import math
print(math.cosh(2))3.7621956910836
В JavaScript функция Math.cosh() является частью объекта Math. Возвращает гиперболический косинус числа.
console.log(Math.cosh(2));3.7621956910836
В SQL-запросах можно использовать функцию COSH(). Она принимает числовой аргумент и возвращает его гиперболический косинус.
SELECT COSH(2);3.7621956910836
В стандартной библиотеке <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
$a = 2.0;
$x = 1.5;
$y = $a * cosh($x / $a);
echo $y;
?>2.5424015717757
Площадь гиперболического треугольника с углами α, β, γ вычисляется по формуле: π - (α + β + γ). Если стороны заданы через гиперболические функции, можно использовать формулу с cosh.
<?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
$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
// Проверка тождества cosh^2(x) - sinh^2(x) = 1
$x = 2.0;
$identity = pow(cosh($x), 2) - pow(sinh($x), 2);
echo $identity;
?>1
Гиперболический косинус встречается в некоторых распределениях, например, в распределении Лапласа.
<?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