Learn R Programming

pracma (version 1.9.3)

invlap: Inverse Laplacian

Description

Numerical inversion of Laplace transforms.

Usage

invlap(Fs, t1, t2, nnt, a = 6, ns = 20, nd = 19)

Arguments

Fs
function representing the function to be inverse-transformed.
t1, t2
end points of the interval.
nnt
number of grid points between t1 and t2.
a
shift parameter; it is recommended to preserve value 6.
ns, nd
further parameters, increasing them leads to lower error.

Value

Returns a list with components x the x-coordinates and y the y-coordinates representing the original function in the interval [t1,t2].

Details

The transform Fs may be any reasonable function of a variable s^a, where a is a real exponent. Thus, the function invlap can solve fractional problems and invert functions Fs containing (ir)rational or transcendental expressions.

References

J. Valsa and L. Brancik (1998). Approximate Formulae for Numerical Inversion of Laplace Transforms. Intern. Journal of Numerical Modelling: Electronic Networks, Devices and Fields, Vol. 11, (1998), pp. 153-166.

L.N.Trefethen, J.A.C.Weideman, and T.Schmelzer (2006). Talbot quadratures and rational approximations. BIT. Numerical Mathematics, 46(3):653--670.

Examples

Run this code
Fs <- function(s) 1/(s^2 + 1)           # sine function
Li <- invlap(Fs, 0, 2*pi, 100)

## Not run: 
# plot(Li[[1]], Li[[2]], type = "l", col = "blue"); grid()
# 
# Fs <- function(s) tanh(s)/s             # step function
# L1 <- invlap(Fs, 0.01, 20, 1000)
# plot(L1[[1]], L1[[2]], type = "l", col = "blue")
# L2 <- invlap(Fs, 0.01, 20, 2000, 6, 280, 59)
# lines(L2[[1]], L2[[2]], col="darkred"); grid()
# 
# Fs <- function(s) 1/(sqrt(s)*s)
# L1 <- invlap(Fs, 0.01, 5, 200, 6, 40, 20)
# plot(L1[[1]], L1[[2]], type = "l", col = "blue"); grid()
# 
# Fs <- function(s) 1/(s^2 - 1)           # hyperbolic sine function
# Li <- invlap(Fs, 0, 2*pi, 100)
# plot(Li[[1]], Li[[2]], type = "l", col = "blue"); grid()
# 
# Fs <- function(s) 1/s/(s + 1)           # exponential approach
# Li <- invlap(Fs, 0, 2*pi, 100)
# plot(Li[[1]], Li[[2]], type = "l", col = "blue"); grid()
# 
# gamma <- 0.577215664901532              # Euler-Mascheroni constant
# Fs <- function(s) -1/s * (log(s)+gamma) # natural logarithm
# Li <- invlap(Fs, 0, 2*pi, 100)
# plot(Li[[1]], Li[[2]], type = "l", col = "blue"); grid()
# 
# Fs <- function(s) (20.5+3.7343*s^1.15)/(21.5+3.7343*s^1.15+0.8*s^2.2+0.5*s^0.9)/s
# L1 <- invlap(Fs, 0.01, 5, 200, 6, 40, 20)
# plot(L1[[1]], L1[[2]], type = "l", col = "blue")
# grid()## End(Not run)

Run the code above in your browser using DataLab