Tanh: примеры (JAVASCRIPT)

Использование гиперболического тангенса в JavaScript на практике
Раздел: Математика, Гиперболические
tanh(number): number

Функция Math.tanh() в JavaScript вычисляет гиперболический тангенс числа. Она возвращает значение, равное (ex - e-x) / (ex + e-x), где x — переданный аргумент.

Основные сведения

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

Функция принимает один обязательный аргумент:

  • x: число, для которого вычисляется гиперболический тангенс. Если аргумент не является числом, он будет автоматически преобразован.

Возвращаемые значения:

  • Гиперболический тангенс числа в диапазоне от -1 до 1.
  • Для бесконечности возвращает ±1.
  • Для нечисловых значений, которые не преобразуются в число, возвращает NaN.

Простые примеры

Пример с положительным числом:

console.log(Math.tanh(0.5));
0.46211715726000974

Пример с отрицательным числом:

console.log(Math.tanh(-2));
-0.9640275800758169

Пример с нулём:

console.log(Math.tanh(0));
0

Пример с бесконечностью:

console.log(Math.tanh(Infinity));
1

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

console.log(Math.tanh('text'));
NaN

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

  • Math.sinh(): вычисляет гиперболический синус. Используется для аналогичных математических операций, но возвращает значения в более широком диапазоне.
  • Math.cosh(): вычисляет гиперболический косинус. Возвращает значения ≥1, подходит для расчёта длин кривых.
  • Math.atanh(): обратная функция к tanh, возвращает область значений от -1 до 1. Применяется для обратных преобразований.
  • сигмоидная функция: реализуется вручную как 1 / (1 + Math.exp(-x)). В машинном обучении иногда предпочтительнее из-за интерпретируемости выходных значений как вероятностей.

Math.tanh() часто выбирают в нейронных сетях из-за симметричности выходов относительно нуля, что ускоряет обучение.

Аналоги в других языках

Python: функция math.tanh() из стандартной библиотеки. Работает аналогично, но принимает также комплексные числа.

import math
print(math.tanh(0.5))
0.46211715726000974

PHP: функция tanh(). Возвращает те же значения, но при ошибках может выводить предупреждения.

echo tanh(0.5);
0.46211715726001

MySQL: функция TANH() в математических выражениях. Используется в запросах SQL.

SELECT TANH(0.5);
0.46211715726000974

C/C++: функция tanh() из библиотеки math.h. Требует линковки с математической библиотекой.

#include 
printf('%f', tanh(0.5));
0.462117

Различия обычно минимальны, но в Python и C поддерживается работа с комплексными числами.

Типичные ошибки

Передача нечисловых строк, которые не преобразуются:

console.log(Math.tanh('abc'));
NaN

Ошибки округления при больших по модулю аргументах:

console.log(Math.tanh(100) === 1);
true

Неявное преобразование булевых значений:

console.log(Math.tanh(true)); // true → 1
0.7615941559557649

Использование с null и undefined:

console.log(Math.tanh(null)); // null → 0
0
console.log(Math.tanh(undefined));
NaN

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

Функция Math.tanh() была добавлена в стандарте ECMAScript 2015 (ES6). В более ранних версиях JavaScript она отсутствовала. Спецификация не претерпела значимых изменений, но улучшилась точность реализации в современных движках.

Расширенные примеры

Аппроксимация функции активации в нейронной сети:

Пример javascript
function activateNeuron(inputs, weights, bias) {
  let sum = inputs.reduce((acc, val, idx) => acc + val * weights[idx], bias);
  return Math.tanh(sum);
}
console.log(activateNeuron([0.5, -0.2], [0.7, 0.3], 0.1));
0.3368846207904961

Нормализация данных в диапазон (-1, 1):

Пример javascript
function normalizeTanh(data) {
  const max = Math.max(...data);
  return data.map(x => Math.tanh(x / max));
}
console.log(normalizeTanh([5, 10, 15]));
[0.46211715726000974, 0.7615941559557649, 0.9051482536448664]

Вычисление производной tanh (используется при обратном распространении ошибки):

Пример javascript
function tanhDerivative(x) {
  const tanhX = Math.tanh(x);
  return 1 - tanhX * tanhX;
}
console.log(tanhDerivative(0.5));
0.7864477329659274

Сравнение с сигмоидой:

Пример javascript
function sigmoid(x) { return 1 / (1 + Math.exp(-x)); }
const x = 2;
console.log(`tanh: ${Math.tanh(x)}, sigmoid: ${sigmoid(x)}`);
tanh: 0.9640275800758169, sigmoid: 0.8807970779778823

Использование в физике для моделирования затухания:

Пример javascript
function dampingModel(time, maxAmplitude, dampingFactor) {
  return maxAmplitude * Math.tanh(dampingFactor * time);
}
console.log(dampingModel(3, 10, 0.5));
9.051482536448664

JS tanh function comments

En
Tanh Returns the hyperbolic tangent of a number