Start · Sprachen · JavaScript · Referenz · Math.acosh()

Math.acosh()

Methode

Gibt den inversen hyperbolischen Kosinus (Areakosinus hyperbolicus) einer Zahl <code>x &gt;= 1</code> zurück.

seit JavaScript ES2015 Kategorie: method-property

Signatur

Math.acosh(x)

Beschreibung

Math.acosh() ist eine statische Methode des Math-Objekts. Sie berechnet den Areakosinus hyperbolicus, also die Umkehrfunktion von Math.cosh(). Mathematisch gilt: acosh(x) = ln(x + √(x² − 1)) für x >= 1. Das Ergebnis ist immer eine Zahl >= 0.

Die Funktion braucht man vor allem in Physik, Geometrie und Numerik, zum Beispiel für Kettenlinien (hängende Seile oder Kabel), hyperbolische Geometrie, die Relativitätstheorie (Rapidität aus dem Lorentz-Faktor) oder beim Umstellen von Formeln, in denen cosh vorkommt.

Weil acosh eine statische Methode ist, ruft man sie immer als Math.acosh() auf. Math ist kein Konstruktor. Das Argument wird vorher in eine Zahl umgewandelt. Werte kleiner als 1 liegen außerhalb des Definitionsbereichs und ergeben NaN.

Parameter

Name Typ Default Beschreibung
$x Pflicht number Eine Zahl größer oder gleich 1. Andere Typen werden vorher in eine Zahl umgewandelt (Typumwandlung).

Rückgabewert

Typ
number
Beschreibung
Der inverse hyperbolische Kosinus von x (>= 0). Für x < 1 oder nicht umwandelbare Werte kommt NaN zurück, für Infinity kommt Infinity zurück.

Beispiele

Grundlegende Werte

console.log(Math.acosh(1));        // Nullstelle
console.log(Math.acosh(2));
console.log(Math.acosh(0.5));      // außerhalb des Definitionsbereichs
console.log(Math.acosh(Infinity));
console.log(Math.acosh('10'));     // String wird in eine Zahl umgewandelt
0 1.3169578969248166 NaN Infinity 2.993222846126381

Umkehrung von Math.cosh() prüfen

const t = 1.5;
const c = Math.cosh(t);
const zurueck = Math.acosh(c);

console.log(c.toFixed(6));
console.log(Math.abs(zurueck - t) < Number.EPSILON * 10);
2.352410 true

Rapidität aus dem Lorentz-Faktor (Physik)

// Rapidität φ = acosh(γ), mit γ = 1 / √(1 − v²/c²)
const rapiditaet = (vAnteilC) => {
  const gamma = 1 / Math.sqrt(1 - vAnteilC ** 2);
  return Math.acosh(gamma);
};

console.log(rapiditaet(0.6).toFixed(4)); // v = 0,6c
console.log(rapiditaet(0.9).toFixed(4)); // v = 0,9c
0.6931 1.4722

Eigene Funktion für ältere Umgebungen (Polyfill)

const acosh = Math.acosh ?? ((x) => Math.log(x + Math.sqrt(x * x - 1)));

console.log(acosh(3).toFixed(6));
1.762747

// Wichtig · Fallstricke

  • Definitionsbereich: Für x < 1 gibt die Methode NaN zurück und wirft keinen Fehler. Deshalb Eingaben selbst prüfen, zum Beispiel mit Number.isNaN().
  • Nur der positive Zweig: cosh ist eine gerade Funktion (cosh(-t) = cosh(t)). Math.acosh() gibt deshalb immer das nicht-negative Ergebnis zurück. Math.acosh(Math.cosh(-2)) ergibt also 2 und nicht -2.
  • Genauigkeit: Die Ergebnisse können sich zwischen Engines in den letzten Nachkommastellen leicht unterscheiden. Die Spezifikation schreibt keine exakte Rundung vor. Die einfache Polyfill-Formel verliert bei Werten nahe 1 und bei sehr großen Werten (Überlauf von x * x) an Genauigkeit.
  • Typumwandlung: Math.acosh(null) ergibt NaN, weil null zu 0 wird. Math.acosh([2]) ergibt 1.3169…. BigInt-Werte lösen einen TypeError aus.
  • Kompatibilität: Seit ES2015 in allen modernen Browsern und in Node.js verfügbar. Der Internet Explorer unterstützt die Methode nicht.