Die Funktion hat eine Singularität in der Nähe von . Diese Singularität kann jedoch aufgehoben werden: für sollte man , da Und damit Die Form ist jedoch nicht nur bei nicht definiert ist es in der Nähe dieses Punktes auch numerisch instabil; Um für sehr kleine numerisch zu berechnen, könnte man eine Taylor-Expansion verwenden, dh eine Kürzung der oben genannten Potenzreihen.x = 0 x = 1 f ( x ) = 1 e x = Σ k = 0 x k(ex-1)/x=∑k=1x k - 1
F : Hat die Funktion einen Namen? Mit anderen Worten, ist das ein häufiges Problem?
F : Ist jemandem eine C / C ++ - Bibliothek bekannt, die diese Situation gut handhabt, dh die Taylor-Erweiterung in einem angemessenen Grad nahe 0 und die andere Darstellung von Null entfernt verwendet?
Um Ihre erste Frage zu beantworten, nein, die Funktion hat keinen Namen (zumindest keinen, der allgemein bekannt ist).
Wie andere bereits erwähnt haben, besteht die beste Methode zur Berechnung der Funktion darin, mehrere Sonderfälle zu behandeln. So würde jede Bibliothek die Funktion berechnen.
double
2e-8
5e-4
expm1(x)/x
.Mit abgeschnittenen Taylor-Serien kann man anspruchsvoller sein und im Sonderfall mehr Dinge tun, aber es lohnt sich wahrscheinlich nicht. Tatsächlich ist es nicht ganz klar, dass Fall 1 separat behandelt werden muss, da die Löschung sicher ist, wie k20 hervorhob. Wenn ich es jedoch separat handhaben würde, würde ich mich sicherer fühlen.
quelle
Ich erinnere mich, dass diese Frage früher auf dieser Website gestellt wurde, und überraschenderweise müssen Sie nur im Sonderfall eine exakte Gleichheit von Null angeben. Die Fehler heben sich gegen Null auf. Ich habe den Link nicht.Ja, diese Antwort war völlig falsch. Ich bin mir nicht sicher, warum so viel darüber gestimmt wurde, wahrscheinlich, weil es so autoritär formuliert wurde. Ich habe den Link gefunden, den ich mir vorgestellt habe. Es war auf der Mathe Stack hier , nicht auf dem SciComp Stack. Die
expm1
-freie Fehlerannullierungsformel wird in der Antwort von JM angegeben und verwendet eineu = exp(x)
Transformation.quelle
Um die erste Frage zu beantworten und eine (wahrscheinlich numerisch ineffiziente) Methode für die zweite bereitzustellen, ist zu beachten, dass dies die Umkehrung der Erzeugungsfunktion der Bernoulli-Zahlen ist .
quelle