1. Interpolasi Newton
pn (x) = a0 + a1 (x − x0 ) + a2 (x − x0 )(x − x1 ) + …
+an (x − x0 )(x − x1 ) … (x − xn )
y 2 −y 1 y 1 −y 0
− f [x2 , x1 ] − f [x1 , x0 ]
x2 −x1 x1 −x0
a2 = = = f [x2 , x1 , x0 ]
x2 − x0 x2 − x0
y2 f [x3 , x2 ] f [x4 , x3 , x2 ] 0 0
y3 f [x4 , x3 ] 0 0 0
y4 0 0 0 0
1 import numpy as np
2 import matplotlib.pyplot as plt
Misal, interpolasi yang akan dipakai adalah interpolasi orde-3. Bentuk polinomialnya adalah
sebagai berikut.
n = banyak data - 1
p = a3
for k in range(1, n+1):
p = koef[n-k] + (x - x_data[n-k]) * p
Iterasi ke-1
f 1 (x) = a2 + (x − x2 )a3
Iterasi ke-2
f 2 (x) = a1 + (x − x1 )f 1 (x)
f 2 (x) = a1 + a2 (x − x1 ) + a3 (x − x1 )(x − x2 )
Iterasi ke-3
f 3 (x) = a0 + (x − x0 )f 2 (x)
1 # menyederhanakan kode
2 def new_interp(x, y, t, plot=True):
3 """
4 Menghitung nilai interpolasi di titik yang ditentukan
5 menggunakan interpolasi Newton.
6
7 Parameters
8 ----------
9 x : variabel independen / x-axis
10 y : variabel dipenden / y-axis
11 t : titik interpolasi yang diinginkan
12 """
13 # menentukan koefisien polinom
14 n = len(y)
15 koef = np.zeros([n, n])
16 koef[:, 0] = y
17 for j in range(1, n):
18 for i in range(n-j):
19 koef[i][j] = (koef[i+1][j-1] - koef[i][j-1]) / (x[i+j]-x[i])
20 c = koef[0, :]
21
22 # menghitung interpolasi di "t"
23 n = len(x) - 1
24 p = c[n]
25 for k in range(1, n+1):
26 p = c[n-k] + (t - x[n-k]) * p
27
28 # plotting
29 if plot == True:
30 plt.scatter(x, y, color="red", marker="+", s=200)
31 plt.plot(t, p)
32 plt.show()
33 else:
34 return p
35
36 help(new_interp)
Parameters
----------
x : variabel independen / x-axis
y : variabel dipenden / y-axis
t : titik interpolasi yang diinginkan
Referensi
1. Interpolasi Newton Dalam Python. Diunggah oleh Yoyok Adisetio Laksono, 20 April 2021.
https://youtu.be/qZtw1c_ZvKg
4. Munir, Rinaldi. (2021). Metode Numerik (Revisi Kelima). Bandung: Institut Teknologi
Bandung.
5. Kong, Q., Siauw, T., dan Bayen, A. (2020). Newton’s Polynomial Interpolation.
https://pythonnumericalmethods.berkeley.edu/notebooks/chapter17.05-Newtons-
Polynomial-Interpolation.html
2. Interpolasi Lagrange
Bentuk polinomial Lagrange adalah sebagai berikut.
dengan
n
x − xj
Li (x) = ∏
xi − xj
j=1,j≠i
Misal, interpolasi yang akan dipakai adalah inyerpolasi orde-3. Bentuk polinomialnya adalah
sebagai berikut.
n = banyak data
y_pol = 0
for i in range(n):
p = 1
for j in range(n):
if i != j:
p = p * (t - x[j])/(x[i] - x[j])
y_pol = y_pol + p * y[i]
Iterasi ke-1
(x − x1 )
p1 (x) =
(x0 − x1 )
Iterasi ke-2
(x − x2 )
p2 (x) = p1 (x)
(x0 − x2 )
(x − x1 ) (x − x2 )
p2 (x) =
(x0 − x1 ) (x0 − x1 )
Iterasi ke-3
(x − x3 )
p3 (x) = p2 (x)
(x0 − x3 )
(x − x1 ) (x − x2 ) (x − x3 )
p3 (x) =
(x0 − x1 ) (x0 − x2 ) (x0 − x3 )
(x − x0 )
p1 (x) =
(x1 − x0 )
Iterasi ke-2
(x − x0 ) (x − x2 )
p2 (x) =
(x1 − x0 ) (x1 − x1 )
Iterasi ke-3
(x − x0 ) (x − x2 ) (x − x3 )
p3 (x) =
(x1 − x0 ) (x1 − x2 ) (x1 − x3 )
lag_interp(x, y, t, plot=True)
Menghitung nilai interpolasi di titik yang ditentukan
menggunakan interpolasi Lagrange.
Parameters
----------
x : variabel independen / x-axis
y : variabel dipenden / y-axis
t : titik interpolasi yang diinginkan
Referensi
1. Code Sansar. Python Program for Lagrange Interpolation Method (with Output).
https://www.codesansar.com/numerical-methods/python-program-lagrange-interpolation-
method.htm
3. Munir, Rinaldi. (2021). Metode Numerik (Revisi Kelima). Bandung: Institut Teknologi
Bandung.
4. Kong, Q., Siauw, T., dan Bayen, A. (2020). Lagrange Polynomial Interpolation.
https://pythonnumericalmethods.berkeley.edu/notebooks/chapter17.04-Lagrange-
Polynomial-Interpolation.html