PHP tanh() 函数

定义和用法

tanh() 函数返回一个数的双曲正切值。双曲正切定义为:tanh(x) = sinh(x) / cosh(x) = (e^x - e^(-x)) / (e^x + e^(-x))

提示:如需计算反双曲正切,请使用 atanh() 函数。双曲正切函数在神经网络中常被用作激活函数。

语法

tanh(float $num): float
参数 描述
num 必需。规定一个要计算双曲正切的数。

返回值

返回 num 的双曲正切值,范围为 -1 到 1 之间(当参数趋近于 ±∞ 时,返回值趋近于 ±1)。

PHP 版本

  • PHP 4+
  • PHP 5+
  • PHP 7+
  • PHP 8+

示例

示例 1:基本用法

<?php
echo tanh(0) . "<br>";      // 0
echo tanh(1) . "<br>";      // 约 0.76159415595576
echo tanh(-1) . "<br>";     // 约 -0.76159415595576 (奇函数)
echo tanh(2) . "<br>";      // 约 0.96402758007582
?>

输出:

0
0.76159415595576
-0.76159415595576
0.96402758007582

示例 2:趋近于极限

<?php
echo tanh(10) . "<br>";   // 约 0.99999999587769 (非常接近1)
echo tanh(-10) . "<br>";  // 约 -0.99999999587769
echo tanh(100) . "<br>";  // 1 (实际可能因精度返回 1)
?>

输出:

0.99999999587769
-0.99999999587769
1

示例 3:实际应用 - 神经网络激活函数

<?php
// 模拟神经元的激活函数(双曲正切)
function neuronActivation($input) {
    return tanh($input);
}

$inputs = [-2.5, -1.0, 0, 0.5, 1.5, 3.0];
foreach ($inputs as $x) {
    echo "tanh($x) = " . neuronActivation($x) . "<br>";
}
?>

输出:

tanh(-2.5) = -0.98661429815143
tanh(-1.0) = -0.76159415595576
tanh(0) = 0
tanh(0.5) = 0.46211715726001
tanh(1.5) = 0.90514825364487
tanh(3.0) = 0.99505475368673

相关函数

注意事项

重要:
  • tanh() 对于非常大的输入值会非常接近 ±1,但不会溢出(即使参数很大,结果也不会返回 INF,因为 tanh 始终有界)。
  • 由于浮点数的限制,当参数绝对值很大时(如 > 20),结果可能会因精度限制而直接返回 1 或 -1。
  • 传入非数值类型参数会导致警告(PHP 7+)或 TypeError(PHP 8+)。