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

Math.cosh()

Methode

Die statische Methode <code>Math.cosh()</code> gibt den hyperbolischen Kosinus einer Zahl zurück, also <code>(eˣ + e⁻ˣ) / 2</code>.

seit JavaScript ES2015 (Baseline: alle modernen Browser, Node.js 0 Kategorie: method-property

Signatur

Math.cosh(x)

Beschreibung

Math.cosh() berechnet den hyperbolischen Kosinus des Arguments x. Mathematisch gilt cosh(x) = (eˣ + e⁻ˣ) / 2. Die Funktion ist gerade (cosh(-x) === cosh(x)), und ihr kleinster Wert ist 1 bei x = 0. Das Ergebnis ist deshalb immer ≥ 1, es sei denn, das Argument ist NaN.

Weil cosh() eine statische Methode von Math ist, rufst du sie immer als Math.cosh() auf. Math ist kein Konstruktor, eine Instanz brauchst und bekommst du nicht.

Typische Einsatzgebiete sind Physik und Technik, zum Beispiel die Kettenlinie (Form eines durchhängenden Seils oder einer Hochspannungsleitung), die Relativitätstheorie (Rapidität, Lorentz-Faktor), Wärmeleitung und Signalverarbeitung. In der Grafikprogrammierung und bei Animationen kann cosh außerdem Kurven mit weichem Minimum erzeugen.

Das Argument wird vorher mit der üblichen Zahlumwandlung (ToNumber) in eine Zahl umgewandelt. Strings wie "2" funktionieren also. Nicht umwandelbare Werte ergeben NaN.

Parameter

Name Typ Default Beschreibung
$x Pflicht number Die Zahl, deren hyperbolischer Kosinus berechnet werden soll. Andere Typen werden vorher in eine Zahl umgewandelt.

Rückgabewert

Typ
number
Beschreibung
Der hyperbolische Kosinus von x (immer ≥ 1). Bei ±Infinity ist das Ergebnis Infinity, bei NaN oder nicht umwandelbaren Werten NaN.

Beispiele

Grundlegende Werte und Sonderfälle

console.log(Math.cosh(0));         // Minimum
console.log(Math.cosh(1));
console.log(Math.cosh(-1));        // gerade Funktion
console.log(Math.cosh("2"));       // String wird umgewandelt
console.log(Math.cosh(-Infinity));
console.log(Math.cosh("abc"));
1 1.5430806348152437 1.5430806348152437 3.7621956910836314 Infinity NaN

Kettenlinie: Durchhang eines Seils berechnen

// y(x) = a * cosh(x / a) – a ist der Krümmungsparameter
const kettenlinie = (x, a) => a * Math.cosh(x / a);

const a = 2;
const punkte = [-2, -1, 0, 1, 2].map((x) => ({
  x,
  y: Number(kettenlinie(x, a).toFixed(4)),
}));

console.table(punkte);
console.log(kettenlinie(1, a).toFixed(4));
2.2553

Identität cosh² − sinh² = 1 prüfen

const pruefeIdentitaet = (x) => {
  const wert = Math.cosh(x) ** 2 - Math.sinh(x) ** 2;
  // Gleitkomma-Vergleich immer mit Toleranz
  return Math.abs(wert - 1) < 1e-9;
};

console.log([0, 0.5, 3, -4].every(pruefeIdentitaet));
true

Fallback für sehr alte Umgebungen

const cosh = Math.cosh ?? ((x) => {
  const e = Math.exp(x);
  return (e + 1 / e) / 2;
});

console.log(cosh(2));
3.7621956910836314

// Wichtig · Fallstricke

  • Überlauf: cosh wächst exponentiell. Ab etwa |x| > 710 ist das Ergebnis Infinity. Wenn du mit großen Argumenten rechnest, arbeite besser logarithmisch, denn für große x gilt ln(cosh(x)) ≈ |x| − ln 2.
  • Genauigkeit: Die Spezifikation schreibt keine exakte Genauigkeit vor. Die letzten Nachkommastellen können sich zwischen Engines (V8, SpiderMonkey, JavaScriptCore) unterscheiden. Vergleiche Ergebnisse daher mit einer Toleranz statt mit ===.
  • Keine Winkel: Anders als bei Math.cos() ist das Argument kein Winkel im Bogenmaß im üblichen Sinn. Eine Umrechnung von Grad ist hier in der Regel nicht sinnvoll.
  • Umkehrfunktion: Math.acosh() liefert nur den nicht-negativen Zweig. Deshalb ergibt Math.acosh(Math.cosh(-2)) den Wert 2 und nicht -2.
  • BigInt: Wenn du einen BigInt übergibst, wird ein TypeError geworfen.
  • Kompatibilität: Seit ES2015 in allen modernen Browsern und in Node.js verfügbar. Der Internet Explorer unterstützt die Methode nicht, dafür gibt es den Fallback oben.