Start · Sprachen · PHP · Referenz · tanh

tanh

Funktion

Berechnet den hyperbolischen Tangens eines Wertes in Bogenmaß (Radiant).

seit PHP 4.0.0 Kategorie: math

Signatur

tanh(float $num): float

Beschreibung

tanh berechnet den hyperbolischen Tangens des übergebenen Wertes num. Der hyperbolische Tangens ist definiert als tanh(x) = sinh(x) / cosh(x) = (e^x - e^-x) / (e^x + e^-x) und gibt Werte im offenen Intervall (-1, 1) zurück.

Im Gegensatz zum trigonometrischen Tangens ist der hyperbolische Tangens für alle reellen Zahlen definiert und besitzt keine Polstellen. Er wächst monoton von -1 gegen +1 und findet häufig Anwendung in maschinellem Lernen (als Aktivierungsfunktion in neuronalen Netzen), Physik und Ingenieurwissenschaften.

Der Parameter muss in Bogenmaß (Radiant) übergeben werden. Für Eingaben in Grad muss zunächst eine Umrechnung mit deg2rad() erfolgen.

Parameter

Name Typ Default Beschreibung
$num Pflicht float Der Eingabewert in Bogenmaß (Radiant), für den der hyperbolische Tangens berechnet werden soll.

Rückgabewert

Typ
float
Beschreibung
Den hyperbolischen Tangens von num als Gleitkommazahl im offenen Intervall (-1, 1).

Beispiele

Grundlegende Verwendung von tanh

<?php
// Einfache Werte berechnen
echo tanh(0) . "\n";    // 0
echo tanh(1) . "\n";    // ca. 0.7616
echo tanh(-1) . "\n";   // ca. -0.7616
echo tanh(10) . "\n";   // nähert sich 1
echo tanh(-10) . "\n";  // nähert sich -1
0 0.76159415595576 -0.76159415595576 0.9999999958777 -0.9999999958777

tanh als Aktivierungsfunktion in einem einfachen Neuron

<?php
/**
 * Simuliert ein einzelnes Neuron mit tanh-Aktivierungsfunktion.
 * tanh normalisiert den Ausgabewert auf das Intervall (-1, 1).
 */
function neuron(array $inputs, array $weights, float $bias): float {
    $weightedSum = $bias;
    foreach ($inputs as $i => $input) {
        $weightedSum += $input * $weights[$i];
    }
    return tanh($weightedSum);
}

$inputs  = [0.5, 0.8, -0.3];
$weights = [1.2, -0.9, 0.7];
$bias    = 0.1;

$output = neuron($inputs, $weights, $bias);
printf("Neuronenausgabe: %.6f\n", $output);
printf("Liegt im Intervall (-1, 1): %s\n", ($output > -1 && $output < 1) ? 'ja' : 'nein');
Neuronenausgabe: -0.185700 Liegt im Intervall (-1, 1): ja

Umrechnung von Grad in Radiant vor der Berechnung

<?php
// Winkel in Grad → erst in Radiant umrechnen
$gradWerte = [0, 45, 90, 180];

foreach ($gradWerte as $grad) {
    $radiant = deg2rad($grad);
    printf("tanh(%3d°) = tanh(%.4f rad) = %.6f\n", $grad, $radiant, tanh($radiant));
}
tanh( 0°) = tanh(0.0000 rad) = 0.000000 tanh( 45°) = tanh(0.7854 rad) = 0.655794 tanh( 90°) = tanh(1.5708 rad) = 0.917152 tanh(180°) = tanh(3.1416 rad) = 0.996272

// Wichtig · Fallstricke

Wertebereich: Der Rückgabewert liegt stets im offenen Intervall (-1, 1), nähert sich den Grenzen aber asymptotisch an. Bei sehr großen positiven oder negativen Eingabewerten (etwa ±20) gibt PHP Werte zurück, die auf Gleitkomma-Ebene nicht mehr von ±1 zu unterscheiden sind.

Inverse Funktion: Die Umkehrfunktion von tanh ist atanh() (Areahyperbolicus-Tangens).

Verwandte Funktionen: Analog gibt es sinh() für den hyperbolischen Sinus und cosh() für den hyperbolischen Kosinus.

Siehe auch