Ho lavorato su Python, ma sono nuovo su scipy
. Sto cercando di utilizzare i metodi della libreria interpolate
per ottenere una funzione che si approssimi a un insieme di dati.Ottieni la formula di una funzione di interpolazione creata da scipy
Ho guardato alcuni esempi per iniziare, e potrebbe ottenere il codice di esempio lavorando in Python(x,y):
import numpy as np
from scipy.interpolate import interp1d, Rbf
import pylab as P
# show the plot (empty for now)
P.clf()
P.show()
# generate random input data
original_data = np.linspace(0, 1, 10)
# random noise to be added to the data
noise = (np.random.random(10)*2 - 1) * 1e-1
# calculate f(x)=sin(2*PI*x)+noise
f_original_data = np.sin(2 * np.pi * original_data) + noise
# create interpolator
rbf_interp = Rbf(original_data, f_original_data, function='gaussian')
# Create new sample data (for input), calculate f(x)
#using different interpolation methods
new_sample_data = np.linspace(0, 1, 50)
rbf_new_sample_data = rbf_interp(new_sample_data)
# draw all results to compare
P.plot(original_data, f_original_data, 'o', ms=6, label='f_original_data')
P.plot(new_sample_data, rbf_new_sample_data, label='Rbf interp')
P.legend()
La trama viene visualizzato come segue:
Ora , esiste un modo per ottenere un'espressione polinomiale che rappresenta la funzione interpolata creata da Rbf
(ovvero il metodo creato come rbf_interp
)?
Oppure, se questo non è possibile con Rbf
, qualsiasi suggerimento che utilizza un metodo di interpolazione diverso, un'altra libreria o anche uno strumento diverso sono i benvenuti.
Guardando i documenti per 'scipy.interpolate.Rbf' e per il modulo' scipy.interpolate' non riesco a vedere nulla di ciò che si desidera. L'unico modo in cui riesco a pensare è leggere il codice sorgente e capire come viene creata la funzione in base ai parametri e quindi scrivere la propria funzione che è in grado di restituire una rappresentazione leggibile. Ma questo dipenderebbe dai dettagli di implementazione. Anche se non riesco a vedere come potresti farcela. – Bakuriu
Considera due passaggi: dati -> una curva (di Rbf o quant'altro), quindi curva -> polinomiale a tratti: una spline. È facile salvare i parametri della spline, (npiece + 1) * 4 - chiedi ulteriori informazioni se è quello che vuoi fare. – denis