Cara melakukan interpolasi linier dengan python (dengan contoh)


Interpolasi linier adalah proses memperkirakan nilai fungsi yang tidak diketahui antara dua nilai yang diketahui.

Diberikan dua nilai yang diketahui (x 1 , y 1 ) dan (x 2 , y 2 ), kita dapat memperkirakan nilai y untuk suatu titik x menggunakan rumus berikut:

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

Kita dapat menggunakan sintaks dasar berikut untuk melakukan interpolasi linier dengan Python:

 import scipy. interpolate

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

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

Contoh berikut menunjukkan cara menggunakan sintaksis ini dalam praktiknya.

Contoh: interpolasi linier dengan Python

Misalkan kita memiliki dua daftar nilai berikut dengan Python:

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

Kita dapat membuat plot x versus y dengan cepat:

 import matplotlib. pyplot as plt

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

Sekarang misalkan kita ingin mencari nilai y yang terkait dengan nilai x baru sebesar 13 .

Kita dapat menggunakan kode berikut untuk melakukan ini:

 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

Estimasi nilai y ternyata 33,5 .

Jika kita menambahkan titik (13, 33.5) ke plot kita, sepertinya fungsinya cukup cocok:

 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 ')

Kita dapat menggunakan rumus yang tepat ini untuk melakukan interpolasi linier untuk setiap nilai x baru.

Sumber daya tambahan

Tutorial berikut menjelaskan cara memperbaiki kesalahan umum lainnya dengan Python:

Cara Memperbaiki KeyError di Pandas
Cara Memperbaiki: ValueError: Tidak dapat mengubah float NaN menjadi int
Cara Memperbaiki: ValueError: Operan tidak dapat disiarkan dengan bentuk

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *