Scipy Interpolato

Scipy Interpolato

L'interpolazione è ciò di cui discuteremo oggi. Il concetto di interpolazione può essere definito come un metodo per calcolare un valore o un numero tra due punti su una linea o persino una curva. Questo concetto può utilizzare i dati in 1, 2 o anche dimensioni più elevate poiché ci sono diverse capacità generali disponibili in Scipy per l'interpolazione e la fluidità. Se i dati sono non strutturati, monodimensionali o forniti su una griglia strutturata, determina quale metodo di interpolazione viene utilizzato. La morbidezza richiesta dell'interpolatore è un'altra considerazione. I metodi suggeriti per l'interpolazione sono disponibili in una varietà di forme. Con una spiegazione ed esempi adeguati, discuteremo dell'interpolazione di Scipy in questo articolo.

Interpolazione in Scipy

Scipy offre un modulo chiamato Scipy.interpolare che presenta una vasta gamma di funzioni correlate all'interpolazione. Un metodo per creare i punti dati tra i punti dati esistenti è chiamato interpolazione. Ci sono classi, funzioni spline e classi di interpolazione univariate e multivariate nel modulo Scipy, Scipy.interpolare.

Tipi di interpolazione

Esistono numerosi modi per interpolare, alcuni dei quali includono:

    • Interpolazione 1-d
    • Interpolazione delle spline
    • Interpolazione spline univariata
    • Interpolazione RBF

Discutiamo tutti questi tipi in dettaglio e con esempi di programmazione per vedere i risultati.

Interpolazione 1-d

Una distribuzione con una sola variabile può essere interpolata usando la funzione interp1d (). Richiede l'input di due punti, xey e emette una funzione richiamabile che, quando viene chiamata con una nuova x, restituisce la y appropriata.

Ecco la sua sintassi completa:


Spieghiamo il concetto di interpolazione 1-D con il seguente esempio:

Esempio:

Supponiamo che tu voglia utilizzare i valori X_range e y_range per creare una funzione lineare con la formula Y_range = f (x_range).

Questo esempio mostra come creare una funzione che utilizza già due note variabili X_RANGE e Y_RANGE per stimare i punti dati di una riga usando il Scipy.interpolare.Metodo interp1d (). Il termine "interp1d" si riferisce all'interpolazione su una singola dimensione, come una linea, usando solo gli assi X_range e Y_range. L'intero codice è fornito qui.

La prima sezione del codice mostra che importiamo i moduli richiesti. Questi sono matplotlib.Pyplot, Numpy, Scipy e Interp1D. La sezione successiva mostra la generazione dei punti casuali per x_range e y_range e l'uso di questi due valori, x_range e y_range. Include anche l'esecuzione del Scipy.interpolare.Metodo interp1d () in cui i valori X_range e y_range vengono passati come parametri. Successivamente, vengono generati nuovi punti casuali per x_range e y_range. Le quattro istruzioni di stampa che vengono utilizzate qui visualizzano i punti generati dalla funzione lineare.

L'ultima sezione del codice è dove viene tracciato un grafico usando i valori X_Range, Y_Range e i valori X_RES e Y_RES risultanti.

Importa matplotlib.Pyplot come Plt
importa numpy
Import Scipy
da Scipy.interpolare l'importazione interp1D
x_range = numpy.Arange (12,20)
print ('x:', x_range)
y_range = numpy.exp (-x_range/10)
print ('y:', y_range)
func_linear = Scipy.interpolare.interp1d (x_range, y_range)
x_res = numpy.Arange (12,19,0.1)
y_res = func_linear (x_res)
print ('new_x:', x_res)
print ('new_y:', y_res)
Plt.SPIREST (x_range, y_range, color = 'rosso')
Plt.Plot (x_res, y_res, color = 'arange')
Plt.xlabel ("x")
Plt.ylabel ("y")
Plt.Titolo ("Interpolazione 1-D")
Plt.spettacolo()
Plt.SaveFig ('Risultato/Grafico.png ')


Questa è la schermata risultante in cui è possibile vedere l'implementazione dell'interpolazione 1-D sullo schermo:

Interpolazione delle spline

Questo esempio riguarda l'interpolazione spline.

Nei campi di ingegneria informatica della modellazione e della grafica informatica assistita da computer, una curvatura polinomiale (parametrica) a tratti è più frequentemente definita spline. Grazie alla loro semplicità nella costruzione, alla semplicità e all'accuratezza della valutazione e alla capacità di prevedere forme complesse attraverso il raccordo della curva e la progettazione della curva altamente interattiva, le spline sono spesso utilizzate in una varietà di campi.

L'interpolazione delle spline utilizza le spline a termine polinomi per costruire una funzione a tratti, al contrario dell'interpolazione 1D, in cui i punti sono montati per una singola curva.

Il metodo univariatespline () accetta due parametri, xs e ys e genera una funzione richiamabile che può essere invocata con un nuovo valore per XS. Vedere il seguente codice allegato:

Il codice è molto simile all'esempio precedente, tranne per il fatto che utilizziamo i diversi valori di input qui. Quindi, l'interpolato.La funzione Splev () viene utilizzata su quei valori. Vari diversi vengono generati per x, y e t. Questi valori sono tracciati sullo schermo con una riga di codice nell'ultima sezione dell'immagine allegata:

importa numpy
Importa matplotlib.Pyplot come Plt
Dall'interpolato di importazione Scipy
X = Numpy.Arange (0, 12)
y = numpy.cos (x ** 3)
t = interpolato.SPLREP (X, Y, S = 0)
X = Numpy.Arange (0, numpy.pi ** 2, numpy.PI/100)
y = interpolato.Splev (x, t, der = 0)
Plt.figura()
Plt.trama (x, y, '*', x, y, x, numpy.cos (x),
x, y, 'b', color = "rosso")
Plt.leggenda (['lineare', 'spline cubica', 'vero'])
Plt.asse ([-0.2, 5.6, -1.3, 1.2])
Plt.Titolo ("Esempio di interpolazione cubica-spina")
Plt.spettacolo()


Quello che segue è il grafico generato che spiega il concetto di interpolazione cubica-spina:

Interpolazione spline univariata

Parleremo della spline univariata qui. Si adatta a un set specifico di punti dati ed è una spline di livellamento 1-D. I dati di input X Val e Y Val sono montati su una spline di grado K usando il Scipy.interpolare.Univariatespline. Il Scipy.interpolare.Il metodo univariatespline ha un altro argomento, che imposta il numero di nodi specificando una condizione di livellamento. La spline.Impostare la funzione di lisciatura () calcola la spline utilizzando il fattore di levigatura specificato e i nodi identificati dalla chiamata precedente.

importa numpy
Importa matplotlib.Pyplot come Plt
da Scipy.interpolare l'importazione univariaspline
x_val = numpy.Linspace (-3, 3, 40)
y_val = numpy.exp (-x_val ** 2) + 0.1 * Numpy.casuale.Randn (40)
Plt.Titolo ("spline univariata")
Plt.trama (x_val, y_val, 'g.', ms = 8)
spline_shape = univariatespline (x_val, y_val)
xs_shape = numpy.Linspace (-3, 3, 2000)
Plt.Plot (xs_shape, spline_shape (xs_shape), 'giallo', lw = 3)
spline_shape.set_smoothing_factor (0.5)
Plt.Plot (xs_shape, spline_shape (xs_shape), color = 'arancion', lw = 3)
Plt.spettacolo()


Quanto segue è il grafico generato del codice precedente:

Interpolazione della funzione di base radiale (RBF)

In quest'ultimo esempio, ci concentreremo sulla funzione di base radiale (RBF) per l'interpolazione. L'interpolato Scipy.RBF è impiegato per l'interpolazione n-dimensionale dei dati sparsi. Secondo la sua definizione, la funzione di base radiale corrisponde a un punto dati di riferimento costante. Il Scipy.interpolare.La classe RBF viene utilizzata per interpolare le funzioni direttamente dai dati sparsi N-D a un dominio M-D con l'uso delle funzioni di base radiale.

Il seguente screenshot allegato mostra il codice completo. Qui, importiamo i moduli RBF e Numpy. Successivamente, i valori vengono generati per XS_VAL e YS_VAL usando l'Arange () e Numpy.Metodi sin (). Un'istruzione di stampa viene utilizzata per mostrare il messaggio "qui puoi vedere il risultato". Viene creata una variabile "Res" in cui viene utilizzato il metodo RBF e gli XS_VAL e YS_VAL generati vengono passati come parametri. Successivamente, si può vedere ZZ in cui viene generato un elenco di numeri per l'intervallo specificato. Infine, il risultato viene visualizzato.

da Scipy.interpolare l'importazione RBF
importa numpy
xs_val = numpy.Arange (8)
ys_val = xs_val ** 3 + numpy.sin (xs_val) + 2
Stampa ("Qui puoi vedere il risultato:")
Res = RBF (XS_VAL, YS_VAL)
zz = res (numpy.Arange (2.1, 3, 0.1))
Stampa (ZZ)


Di seguito è riportato l'output in cui una serie di numeri viene generata dal codice precedente in cui viene utilizzato il metodo RBF.

Conclusione

In questo articolo, abbiamo discusso di cosa sia il concetto di interpolato Scipy. I suoi tipi di base e i dettagli complessivi sono coperti qui. Puoi facilmente trovare tutti i requisiti relativi al suddetto argomento in dettaglio con esempi di programmazione. Abbiamo discusso separatamente tutti i suoi tipi (interpolazione 1-D, interpolazione spline, interpolazione spline univariata e interpolazione RBF) con spiegazioni ed esempi adeguati in modo da poter capire meglio l'intero concetto.