Signatur
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
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"));
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));
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));
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));
// Wichtig · Fallstricke
- Überlauf:
coshwächst exponentiell. Ab etwa|x| > 710ist das ErgebnisInfinity. Wenn du mit großen Argumenten rechnest, arbeite besser logarithmisch, denn für großexgiltln(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 ergibtMath.acosh(Math.cosh(-2))den Wert2und nicht-2. - BigInt: Wenn du einen
BigIntübergibst, wird einTypeErrorgeworfen. - 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.