Signatur
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
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
Ü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;
}
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);
}
// 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.