Voor een reƫle functie in 1 veranderlijke $$f(t)$$ wordt de Laplace-getransformeerde functie $$F(s)$$ gedefinieerd als

$$ F(s) = \int_0^\infty e^{-st} f(t) dt $$

We benaderen deze functie door het integratie-interval te beperken tot $$[0, R]$$ met $$R$$ voldoende groot. Om de integraaluitdrukking uit te rekenen, maken we gebruik van de trapeziumregel. Deze benadering met $$n+1$$ punten houdt in dat

$$ \int_a^b g(t) dt \approx h \big( \frac{1}{2} g(a) + \sum_{i=1}^{n-1} g(a+ih) + \frac{1}{2} g(b) \big) $$

waarbij $$h = \frac{b - a}{n}$$.
Deze benadering wordt in onderstaande code gebruikt.

def trapezium(g, a, b, n):    
	h = (b - a)/n    
	I = 0.5 * g(a)    
	for i in range(1, n):        
		I+= g(a + i*h)    
		I += 0.5*g(b)    
	I *= h    
	return I
Gebruik de NumPy-bibliotheek om de exponentiƫle functie uit te rekenen (zo kan je ook het Laplace-beeld vrij eenvoudig afbeelden).

Schrijf een klasse LaplaceTransformatie die callable is, en waarvan je de constructor oproept met de volgende argumenten:
  1. de te integreren functie $$f$$;
  2. de parameter $$R$$ zoals gedefinieerd hierboven;
  3. het aantal punten $$n$$ in de trapeziumregel.
Tip: je kan een closure gebruiken om het geparametriseerde integrandum te genereren.

Voorbeeld

f = lambda x:x**3 + 1
Lf = LaplaceTransformatie(f, 10, 10000)
print(Lf(3.0)) # 0.40740765784111843