Start · Sprachen · PHP · Referenz · asinh

asinh

Funktion

Berechnet den Areasinus hyperbolikus (inversen hyperbolischen Sinus) des übergebenen Wertes.

seit PHP 4.1.0 Kategorie: math

Signatur

asinh(float $num): float

Beschreibung

asinh() ist die Umkehrfunktion des hyperbolischen Sinus (sinh()). Sie gibt denjenigen Wert zurück, dessen hyperbolischer Sinus dem Argument entspricht, d. h. es gilt: sinh(asinh($x)) === $x.

Im Gegensatz zum Arkussinus (asin()) ist asinh() für alle reellen Zahlen definiert – der Definitionsbereich ist (-∞, +∞) und der Wertebereich ebenfalls (-∞, +∞). Es gibt daher keine ungültigen Eingabewerte, die zu NAN führen würden.

Typische Einsatzgebiete sind wissenschaftliche Berechnungen, Ingenieursmathematik, sowie Koordinatentransformationen, bei denen hyperbolische Funktionen eine Rolle spielen (z. B. Mercator-Projektion in der Kartografie).

Das Ergebnis wird in Bogenmaß (Radiant) ausgedrückt, analog zu den anderen inversen trigonometrischen und hyperbolischen Funktionen in PHP.

Parameter

Name Typ Default Beschreibung
$num Pflicht float Der Eingabewert, für den der Areasinus hyperbolikus berechnet werden soll. Beliebige reelle Zahl.

Rückgabewert

Typ
float
Beschreibung
Den Areasinus hyperbolikus von num als Gleitkommazahl. Das Ergebnis liegt im Bereich (-∞, +∞). Da asinh() für alle reellen Zahlen definiert ist, wird niemals NAN zurückgegeben (außer bei NAN als Eingabe).

Beispiele

Grundlegende Verwendung von asinh()

<?php
// Areasinus hyperbolikus einiger typischer Werte
echo asinh(0);    // 0
echo PHP_EOL;
echo asinh(1);    // 0.88137358701954
echo PHP_EOL;
echo asinh(-1);   // -0.88137358701954
echo PHP_EOL;
echo asinh(10);   // 2.9982229502979
echo PHP_EOL;
echo asinh(-10);  // -2.9982229502979
0 0.88137358701954 -0.88137358701954 2.9982229502979 -2.9982229502979

Überprüfung der Umkehrfunktion: sinh(asinh(x)) = x

<?php
$werte = [0, 0.5, 1, 2, -3, 100];

foreach ($werte as $x) {
    $ergebnis = sinh(asinh($x));
    // Rundungsfehler tolerieren
    $gleich = abs($ergebnis - $x) < 1e-10 ? 'ja' : 'nein';
    echo "sinh(asinh($x)) = $ergebnis  ==  $x? $gleich" . PHP_EOL;
}
sinh(asinh(0)) = 0 == 0? ja sinh(asinh(0.5)) = 0.5 == 0.5? ja sinh(asinh(1)) = 1 == 1? ja sinh(asinh(2)) = 2 == 2? ja sinh(asinh(-3)) = -3 == -3? ja sinh(asinh(100)) = 100 == 100? ja

Mercator-Projektion: Breitengrad in Kartenkoordinate umrechnen

<?php
// Vereinfachte Mercator-Projektion: y = asinh(tan(lat_radians))
function mercatorY(float $breitengradGrad): float {
    $breitengradRad = deg2rad($breitengradGrad);
    return asinh(tan($breitengradRad));
}

$staedte = [
    'Berlin'   => 52.52,
    'Equator'  => 0.0,
    'Sydney'   => -33.87,
];

foreach ($staedte as $name => $lat) {
    $y = mercatorY($lat);
    echo sprintf("%s (%.2f°): y = %.6f\n", $name, $lat, $y);
}
Berlin (52.52°): y = 0.900533 Equator (0.00°): y = 0.000000 Sydney (-33.87°): y = -0.600775

// Wichtig · Fallstricke

Präzision bei sehr großen Werten: Bei extrem großen oder kleinen Eingabewerten (z. B. PHP_FLOAT_MAX) können Gleitkomma-Überläufe auftreten, die INF bzw. -INF zurückgeben.

NAN-Weitergabe: Wird NAN als Argument übergeben, gibt asinh() ebenfalls NAN zurück.

Siehe auch