• Register

Izbor podatkov pri interpolaciji

+1 vote
154 views
Rad bi interpoliral potek temperature z višino, temperatura pa na določenih višinah z višino pada, na nekaterih pa narašča. Interpolacijo sem poizkusil izvesti z InterpolatedUnivariateSpline, vendar dobim error, ki se glasi:

x must be increasing if s>0. Vrednost x je temperatura, za katero ni nujno,da narašča. Ali je interpolacija v takem primeru mogoča, če je, na kakšen način?
asked May 16, 2021 by klemenoblak (160 points)

1 Answer

+1 vote
 
Best answer

Pozdravljen, 

Sprva preveri ali imaš enako število podatkov glede višine za določeno temperaturo. Menim da si uporabil pravilo metodo za določevanje interpolacije. Saj predvidevam da imaš veliko izmerkov in bi s drugimi metodo (Lagrange) dobil polinom visoke stopnje, kar seveda ni zaželjeno  in ti bi prišlo v funkciji do nekih 'skokov'. 

Spodaj ti prilagamo enostavno kodo in ti predlagam da si izmerke urediš po x(neodvisna spremenljivka ) in po y(odvisna spremenljivka) . Vstaviš v funkcijo za interpoliranje  in neglede ali ta temperatura narašča ali pada ti bi moralo interpolirati. Kakor jaz mislim da funkcijo ne zanima ali narašča ali pada, ampak  interpolira po podanih parametrih. 

import matplotlib.pyplot as plt
>>> from scipy.interpolate import InterpolatedUnivariateSpline
>>> x = np.linspace(-3, 3, 50)
>>> y = np.exp(-x**2) + 0.1 * np.random.randn(50)
>>> spl = InterpolatedUnivariateSpline(x, y)
>>> plt.plot(x, y, 'ro', ms=5)
>>> xs = np.linspace(-3, 3, 1000)
>>> plt.plot(xs, spl(xs), 'g', lw=3, alpha=0.7)
>>> plt.show()
PS: kopiraj kodo v jupyter notebook in boš videl graf, v katerem tudi vrednosti padajo in naraščajo. 
Upam da ti je kaj pomagalo.
Lp Rok
answered May 16, 2021 by rokvrankar (530 points)
selected May 16, 2021 by janko.slavic
...