La función tiene singularidad cerca de . Sin embargo, esa singularidad se puede levantar: para , uno debería tener , ya que y por lo tanto Sin embargo, la formano es solo no definido en, también es numéricamente inestable en la vecindad de ese punto; con el fin de evaluarpara muy pequeñanuméricamente, se podría utilizar una expansión de Taylor, es decir, un truncamiento de la serie de potencias antes mencionado.
P : ¿La función tiene un nombre? En otras palabras, ¿es este un problema común?
P : ¿Alguien sabe de una biblioteca C / C ++ que maneje bien esta situación, es decir, utiliza la expansión Taylor de un grado apropiado cerca de 0 y la otra representación lejos de cero?
Para responder a su primera pregunta, no, la función no tiene un nombre (al menos no uno que sea ampliamente conocido).
Como otros han mencionado, la mejor manera de calcular la función es tratar varios casos especiales. Así es como cualquier biblioteca calcularía la función.
double
2e-8
5e-4
expm1(x)/x
.Puede ser más sofisticado y especial, más cosas con la serie Taylor truncada, pero probablemente no valga la pena. De hecho, no está del todo claro que el caso 1 deba manejarse por separado, ya que, como señaló k20, la cancelación es segura. Sin embargo, manejarlo por separado me haría sentir más seguro al respecto.
fuente
Recuerdo que esta pregunta se había hecho anteriormente en este sitio, y sorprendentemente la respuesta es que solo necesita un caso especial de igualdad exacta a cero. Los errores se cancelan cerca de cero. No tengo el enlaceSí, esta respuesta fue completamente incorrecta. No estoy seguro de por qué se votó tanto, probablemente porque se declaró con autoridad. Encontré el enlace que tenía en mente. Estaba en el intercambio de pila matemática aquí , no en el intercambio de pila scicomp. La
expm1
fórmula de cancelación de error libre se da en la respuesta de JM y utiliza unau = exp(x)
transformación.fuente
Para responder la primera pregunta y proporcionar un método (probablemente numéricamente ineficiente) para la segunda, tenga en cuenta que esta es la inversa de la función generadora de los números de Bernoulli .
fuente