This is a Python reproduction of the Mathematica package that provides the GWR
function, NumericalLaplaceInversion.m
.
https://library.wolfram.com/infocenter/MathSource/4738/
This package provides only one function: gwr
. The function calculates the
value of the inverse of a Laplace transform at a specified time value,
Sequence
of time values, or numpy array of time values.
The Laplace transform should be provided as a function that uses the mpmath
library for a scalar value of the Laplace parameter. The math
library and
numpy
functions do not support multiprecision math and will return invalid
results if they are used.
Installation if done through pip
:
>>> pip install gwr_inversion
>>> import math
>>> from gwr_inversion import gwr
>>> from mpmath import mp
>>> def lap_log_fn(s: float):
... # log function
... return -mp.log(s) / s - 0.577216 / s
>>> gwr(lap_log_fn, time=5.0, M=32)
mpf('1.6094375773356333')
>>> math.log(5.0)
1.6094379124341003
See the notebooks in test\
for other use examples.
The method is described in: Valkó, P.P., and Abate J. 2002. Comparison of Sequence Accelerators for the Gaver Method of Numerical Laplace Transform Inversion. Computers and Mathematics with Application 48 (3): 629–636. https://doi.org/10.1016/j.camwa.2002.10.017.
More information on multi-precision inversion can be found in: Valkó, P.P.and Vajda, S. 2002. Inversion of Noise-Free Laplace Transforms: Towards a Standardized Set of Test Problems. Inverse Problems in Engineering 10 (5): 467-483. https://doi.org/10.1080/10682760290004294.