Tanh: примеры (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 → 10.7615941559557649
Использование с null и undefined:
console.log(Math.tanh(null)); // null → 00
console.log(Math.tanh(undefined));NaN
Изменения в последних версиях
Функция Math.tanh() была добавлена в стандарте ECMAScript 2015 (ES6). В более ранних версиях 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):
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 (используется при обратном распространении ошибки):
function tanhDerivative(x) {
const tanhX = Math.tanh(x);
return 1 - tanhX * tanhX;
}
console.log(tanhDerivative(0.5));0.7864477329659274
Сравнение с сигмоидой:
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
Использование в физике для моделирования затухания:
function dampingModel(time, maxAmplitude, dampingFactor) {
return maxAmplitude * Math.tanh(dampingFactor * time);
}
console.log(dampingModel(3, 10, 0.5));9.051482536448664