Ostatnio chcę stworzyć kod do odwrotnej transformacji Laplace'a.

Używam funkcji mpmath.invertlaplace.

Działa całkiem dobrze, ale chcę usunąć pętlę for, aby uzyskać ten wynik.

Oto przykład.

import mpmath as mp
def func = lambda s: 1 / (s + k)

Time = mp.linspace(1,10,100)

result = []

for i in Time:

     value = mp.invertlaplace(func, i, method = 'stehfest', degree = 32)

     result.append(value)

return Time, result

Niestety nie mogę użyć tablicy dla funkcji mpmath.invertlaplace.

Czy jest inna biblioteka lub funkcja, z której korzystam?

0
Thereexist 19 grudzień 2019, 17:30

1 odpowiedź

Nie jestem pewien, czy rozumiem, czego naprawdę chcesz, ale kod, który podałeś powyżej, zawiera kilka błędów, które uniemożliwiają jego działanie. Po pierwsze, func nie ma „def” i dlatego powinno być:

func = lambda s: 1.0/(s + 1.0)

Ponadto k w lambda nie zostało zdefiniowane, więc ustawiłem je na równe jeden (1.0) tylko po to, aby uruchomić kod.

Poniższy kod działa dobrze. Zaczynając od tego, możesz (miejmy nadzieję) to zmienić, aby osiągnąć swoje cele.

import mpmath as mp

func = lambda s: 1.0/(s + 1.0)

Time = mp.linspace(1,10,100)

result = []

for i in Time:

    value = mp.invertlaplace(func, i, method = 'stehfest', degree = 32)

    result.append(value)

    print (i, value)

Mam nadzieję, że to pomoże. Powodzenia!

0
Fausto Arinos Barbuto 20 grudzień 2019, 00:27
Oh. Dziękuję Ci bardzo. To było moje pierwsze pytanie dotyczące przepełnienia stosu, więc popełniam błąd. tak. Popełniam błąd. Muszę zdefiniować k = 1.0 jak ty. Właściwie moje prawdziwe pytanie to „usuwanie pętli for”. Bo chcę to przyspieszyć.
 – 
Thereexist
20 grudzień 2019, 05:49