2012-06-21 13 views
7

Czy istnieje sposób na interpolację funkcji wektorowej przy użyciu NumPy/SciPy?Interpolacja funkcji z wartościami wektorowymi za pomocą NumPy/SciPy

Istnieje wiele ofert, które działają na funkcje o wartościach skalarnych i myślę, że mogę użyć jednego z nich do oddzielnego oszacowania każdego składnika wektora, ale czy istnieje sposób, aby zrobić to bardziej efektywnie?

Aby opracować, mam funkcję f(x) = V, gdzie x jest skalarem, a V jest wektorem. Mam również kolekcję xs i odpowiadającą jej Vs. Chciałbym go użyć do interpolacji i oszacowania V dla arbitralnego x.

Odpowiedz

5

Funkcja interpolacji scipy.interpolate.interp1d działa również na dane z wartościami wektorowymi dla interpolanta (ale nie dla danych argumentów o wartości wektorowej). Tak więc, dopóki x jest skalarem, możesz go użyć bezpośrednio.

Poniższy kod jest nieznaczne rozszerzenie przykładzie podanym w the scipy documentation:

>>> from scipy.interpolate import interp1d 
>>> x = np.linspace(0, 10, 10) 
>>> y = np.array([np.exp(-x/3.0), 2*x]) 
>>> f = interp1d(x, y) 
>>> f(2) 
array([ 0.51950421, 4.  ]) 
>>> np.array([np.exp(-2/3.0), 2*2]) 
array([ 0.51341712, 4.  ]) 

Należy pamiętać, że 2 nie jest w wektorze argumentu x, stąd błąd interpolacji dla pierwszego komponentu w y w tym przykładzie.

+0

Działa jak urok, dzięki! – ktdrv

Powiązane problemy