tanh() 函数返回一个数的双曲正切值。双曲正切定义为:tanh(x) = sinh(x) / cosh(x) = (e^x - e^(-x)) / (e^x + e^(-x))。
tanh(float $num): float
| 参数 | 描述 |
|---|---|
num |
必需。规定一个要计算双曲正切的数。 |
返回 num 的双曲正切值,范围为 -1 到 1 之间(当参数趋近于 ±∞ 时,返回值趋近于 ±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
<?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
<?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 始终有界)。