A minimal Python interface for computing inverse Laplace transforms using Talbot’s method — designed as a clean and practical wrapper around sympy & mpmath
Project description
iLaplace: A Simple Interface for Powerful Math
iLaplace is a lightweight Python wrapper around advanced symbolic and numerical math tools (sympy, numpy & mpmath) that provides a clean and intuitive interface for computing inverse Laplace transforms using Talbot's method.
I created this library to simplify the process of using the inverse Laplace transform, aiming to provide a MATLAB-like experience within Python. This means the output of my code in Python will be compared against a sample calculation in MathWorks MATLAB.
Why This Library?
mpmathis powerful but raw and low-level.sympygives symbolic transforms, but not numerical answers.- Combining them can be verbose and repetitive.
In short: You focus on the math, we handle the machinery.
This library contains two main functions for performing inverse Laplace transform calculations:
inverse_laplace(F, t)inverse_laplace_fu(F)
Examples for each function and their corresponding MATLAB outputs are provided below.
MATLAB vs. Python Comparison
Here is a sample calculation in MATLAB and its equivalent in Python using this library.
1st Example
MATLAB Example
syms s t
X = (s+3)/((s+1)^2 + (s^2+9));
V = vpa(ilaplace(X, s, t));
t0 = 5.2643;
Volt = double(subs(V, t, t0));
disp(Volt)
The output in MATLAB is -0.020100091042301.
Python Equivalent with iLaplace
import iLaplace as il
import sympy as sp
t, s = sp.symbols('t s')
X = (s+3)/((s+1)**2 + (s**2+9))
t0 = 5.2643
Answer = il.inverse_laplace(X, t0)
print(Answer)
And the output is -0.020100091042300372.
2nd Example
MATLAB Example
syms s t
format long
X = 3 / (s^2 + 3^2);
V = vpa(ilaplace(X, s, t));
t0 = 5.2643;
Volt = double(subs(V, t, t0));
disp(Volt)
And the output in MATLAB is -0.084834643101466.
Python Equivalent
import iLaplace as il
import sympy as sp
import numpy as np
s, t = sp.symbols('s t')
t0 = 5.2643
X = (3) / ((s**2) + (3**2))
Answer = il.inverse_laplace(X, t0)
print(Answer)
The output is -0.08483425637752962.
3rd Example
MATLAB Example
syms s t
X = (s + 3) / ((s + 3)^2 + 25) ...
+ 1 / (s + 2)^3 ...
+ log((s + 10) / s);
V = vpa(ilaplace(X, s, t));
t0 = 5.2643;
Volt = double(subs(V, t, t0));
disp(Volt)
And the output in MATLAB is 0.190329629407706.
Python Equivalent
import iLaplace as il
import sympy as sp
t, s = sp.symbols('t s')
t0 = 5.2643
X = ((s + 3) / ((s + 3)**2 + 25)
+ 1 / (s + 2)**3
+ sp.log((s + 10) / s))
Answer = il.inverse_laplace(X, t0)
print(Answer)
The output is 0.19032962256026703.
4th Example
MATLAB Example
syms s t
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
X1 = (s + 3) / ((s + 3)^2 + 25) ...
+ 1 / (s + 2)^3 ...
+ log((s + 10) / s);
X2 = (s+3)/((s+1)^2 + (s^2+9));
X3 = 3 / (s^2 + 3^2);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
X = X1 + X2 + X3;
V = vpa(ilaplace(X, s, t));
t0 = 5.2643;
Volt = double(subs(V, t, t0));
disp(Volt)
And the output in MATLAB is 0.085394895263940.
Python Equivalent
import iLaplace as il
import sympy as sp
t, s = sp.symbols('t s')
t0 = 5.2643
#######################################
X1 = ((s + 3) / ((s + 3)**2 + 25)
+ 1 / (s + 2)**3
+ sp.log((s + 10) / s))
X2 = (s+3)/((s+1)**2 + (s**2+9))
X3 = (3) / ((s**2) + (3**2))
#######################################
X = X1 + X2 + X3
Answer = il.inverse_laplace(X, t0)
print(Answer)
The output is 0.08539527514043704.
Usage of inverse_laplace_fu
Here is an example of using the inverse_laplace_fu function in iLaplace:
Python Example
import iLaplace as il
import sympy as sp
import math
t, s = sp.symbols('t s')
X = (s+3)/((s+1)**2 + (s**2+9))
Answer = il.inverse_laplace_fu(X)
print(Answer)
def f(t):
return (5*math.sqrt(19)*math.exp(-t/2)*math.sin(math.sqrt(19)*t/2)/38 + math.exp(-t/2)*math.cos(math.sqrt(19)*t/2)/2)*sp.Heaviside(t)
def g(t):
return 0.5*math.exp(-0.5*t)*(math.cos(2.1794494717703367761184909919298*t) + 1.1470786693528088295360478904894*math.sin(2.1794494717703367761184909919298*t))
number = 1
d = f(number) - g(number)
print(d)
Output will be:
-0.020100091042300372
(5*sqrt(19)*exp(-t/2)*sin(sqrt(19)*t/2)/38 + exp(-t/2)*cos(sqrt(19)*t/2)/2)*Heaviside(t)
2.77555756156289e-17
License and Attributions
This project is licensed under the MIT License.
It internally utilizes components from the following libraries:
mpmathsympy
All third-party libraries retain their original licenses and attributions.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ilaplace-4.2.1.tar.gz.
File metadata
- Download URL: ilaplace-4.2.1.tar.gz
- Upload date:
- Size: 4.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1d15e3d511bf338dbc185e6b8d49bf3c9b1d7953f54ed8e9550df15e8a9f7c3d
|
|
| MD5 |
56f783d80dad18a12443bb0d2b5225d9
|
|
| BLAKE2b-256 |
54fb18c7b4ba79750a906da9139c3c013a70b4f89dfc720eb2dba67edf9b8d98
|
File details
Details for the file iLaplace-4.2.1-py3-none-any.whl.
File metadata
- Download URL: iLaplace-4.2.1-py3-none-any.whl
- Upload date:
- Size: 4.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
99a3bcf6412286315bd7f6aa7e3169baa11e8698d9c37e98460ab6a886abd0fe
|
|
| MD5 |
aaa548e1aa694dc7d941b52d808d20e8
|
|
| BLAKE2b-256 |
a54c784a3e9b91c41c30e9d9dc38576fc59848eb80645c37db6a7748785758df
|