Ho due liste per descrivere la funzione y(x):
x = [0,1,2,3,4,5]
y = [12,14,22,39,58,77]
Vorrei eseguire l'interpolazione spline cubica in modo che dato un valore u nel dominio di x, ad es.
u = 1.25
Posso trovarti.
Ho trovato questo in SciPy ma non sono sicuro di come usarlo .
- user112829
Risposta breve:
from scipy import interpolate
def f(x):
x_points = [ 0, 1, 2, 3, 4, 5]
y_points = [12,14,22,39,58,77]
tck = interpolate.splrep(x_points, y_points)
return interpolate.splev(x, tck)
print(f(1.25))
Risposta lunga:
scipy separa i passaggi coinvolti nell'interpolazione spline in due operazioni, molto probabilmente per l'efficienza computazionale.
I coefficienti che descrivono la curva spline vengono calcolati, usando splrep(). splrep restituisce un array di tuple contenente il coefficienti.
Questi coefficienti vengono passati a splev() in realtà
valutare la spline nel punto desiderato x
(in questo esempio 1.25).
x
può anche essere un array. La chiamata a f([1.0, 1.25, 1.5])
restituisce il
punti interpolati rispettivamente a 1
, 1.25
e 1,5
.
Questo approccio è certamente scomodo per singole valutazioni, ma poiché il caso d'uso più comune è iniziare con una manciata di punti di valutazione della funzione, quindi utilizzare ripetutamente la spline per trovare valori interpolati, di solito è abbastanza utile nella pratica.< /p>