Signatur
Beschreibung
Math.exp(x) berechnet die natürliche Exponentialfunktion ex, wobei e die Eulersche Zahl (ca. 2,71828, verfügbar als Math.E) ist. Sie ist die Umkehrfunktion von Math.log(): Für positive Zahlen gilt Math.exp(Math.log(y)) ≈ y.
Typische Einsatzgebiete sind stetiges Wachstum und Zerfall (Zinseszins, radioaktiver Zerfall, Abkühlung), Statistik und maschinelles Lernen (Sigmoid-, Softmax- und Normalverteilungsfunktionen) sowie Animationen mit exponentiellem Abklingen (Easing, Dämpfung).
Da exp eine statische Methode von Math ist, wird sie immer als Math.exp() aufgerufen – Math ist kein Konstruktor. Das Argument wird vorher in eine Zahl umgewandelt; nicht umwandelbare Werte ergeben NaN.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $x Pflicht | number | Der Exponent. Andere Typen werden per Number()-Konvertierung in eine Zahl umgewandelt. |
Rückgabewert
Math.exp(-Infinity) ergibt 0, Math.exp(Infinity) ergibt Infinity, NaN ergibt NaN.Beispiele
Grundlegende Werte
console.log(Math.exp(0)); // e^0
console.log(Math.exp(1)); // e^1 = Math.E
console.log(Math.exp(-1)); // 1/e
console.log(Math.exp(2));
console.log(Math.exp(-Infinity));
console.log(Math.exp('abc'));
Stetige Verzinsung berechnen
// K = K0 * e^(r * t)
const endkapital = (startkapital, zinssatz, jahre) =>
startkapital * Math.exp(zinssatz * jahre);
const ergebnis = endkapital(10_000, 0.03, 10);
console.log(ergebnis.toFixed(2));
Sigmoid-Funktion und numerisch stabiles Softmax
const sigmoid = (x) => 1 / (1 + Math.exp(-x));
console.log(sigmoid(0), sigmoid(4).toFixed(4));
// Maximum abziehen verhindert Überlauf bei großen Werten
const softmax = (werte) => {
const max = Math.max(...werte);
const exps = werte.map((v) => Math.exp(v - max));
const summe = exps.reduce((a, b) => a + b, 0);
return exps.map((e) => +(e / summe).toFixed(3));
};
console.log(softmax([1000, 1001, 1002]));
Exponentielles Abklingen in einer Animation
// Dämpfung: Amplitude halbiert sich alle 'halbwertszeit' ms
const amplitude = (t, start = 100, halbwertszeit = 500) =>
start * Math.exp((-Math.LN2 * t) / halbwertszeit);
for (const t of [0, 500, 1000, 1500]) {
console.log(`${t} ms: ${amplitude(t).toFixed(1)}`);
}
// Wichtig · Fallstricke
- Überlauf: Ab etwa
x > 709,78liefertMath.exp(x)Infinity; fürx < -745,13ergibt sich0. Bei Softmax o. Ä. vorher das Maximum abziehen. - Genauigkeit bei kleinen x:
Math.exp(x) - 1verliert für sehr kleinex(z. B.1e-10) stark an Genauigkeit. Verwenden Sie stattdessenMath.expm1(x). - Die Ergebnisse sind implementierungsabhängig und können sich zwischen Engines (V8, SpiderMonkey, JavaScriptCore) in der letzten Nachkommastelle unterscheiden – für exakte Vergleiche nicht auf Bit-Gleichheit verlassen.
Math.exp(x)entspricht mathematischMath.E ** x, ist aber meist präziser und schneller.- BigInt-Werte werden nicht unterstützt:
Math.exp(1n)wirft einenTypeError.