Lineaire interpolatie uitvoeren in python (met voorbeeld)


Lineaire interpolatie is het proces waarbij een onbekende waarde van een functie wordt geschat tussen twee bekende waarden.

Gegeven twee bekende waarden (x 1 , y 1 ) en (x 2 , y 2 ), kunnen we de y-waarde voor een punt x schatten met behulp van de volgende formule:

y = y 1 + (xx 1 )(y 2 -y 1 )/(x 2 -x 1 )

We kunnen de volgende basissyntaxis gebruiken om lineaire interpolatie in Python uit te voeren:

 import scipy. interpolate

y_interp = scipy. interpolate . interp1d (x,y)

#find y-value associated with x-value of 13
print (y_interp( 13 ))

Het volgende voorbeeld laat zien hoe u deze syntaxis in de praktijk kunt gebruiken.

Voorbeeld: lineaire interpolatie in Python

Stel dat we in Python de volgende twee lijsten met waarden hebben:

 x = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
y = [4, 7, 11, 16, 22, 29, 38, 49, 63, 80]

We kunnen een snelle x versus y-plot maken:

 import matplotlib. pyplot as plt

#create plot of x vs. y
plt. plot (x, y, ' -ob ')

Stel nu dat we de y-waarde willen vinden die geassocieerd is met een nieuwe x-waarde van 13 .

Hiervoor kunnen we de volgende code gebruiken:

 import scipy. interpolate
y_interp = scipy. interpolate . interp1d (x,y)

#find y-value associated with x-value of 13
print (y_interp( 13 ))

33.5

De geschatte y-waarde blijkt 33,5 te zijn.

Als we het punt (13, 33.5) aan onze grafiek toevoegen, lijkt het vrij goed overeen te komen met de functie:

 import matplotlib. pyplot as plt

#create plot of x vs. y
plt. plot (x, y, ' -ob ')

#add estimated y-value to plot
plt. plot (13, 33.5, ' ro ')

We kunnen deze exacte formule gebruiken om lineaire interpolatie uit te voeren voor elke nieuwe x-waarde.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende fouten in Python kunt oplossen:

Hoe KeyError in Panda’s te repareren
Oplossing: ValueError: Kan float NaN niet naar int converteren
Oplossing: ValueError: Operanden konden niet worden uitgezonden met vormen

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert