Polinom Lagrange dan Polinom Newton
Interpolasi polinomial adalah salah satu metode numerik yang berguna untuk memperkirakan nilai fungsi di antara titik data yang diketahui. Pada artikel ini, kita akan membahas dua metode populer: Polinom Lagrange dan Polinom Newton.
1. Polinom Lagrange
Metode ini membentuk polinomial berdasarkan titik-titik data yang diberikan. Bentuk umum Polinom Lagrange adalah:
L(x) = Σ (y[i] * Π ((x - x[j]) / (x[i] - x[j])))
Langkah-langkah:
- Identifikasi titik data (x[i], y[i]).
- Hitung basis polinomial untuk setiap titik.
- Jumlahkan hasil kali basis dengan nilai y untuk setiap titik.
Contoh Kode Python
def lagrange_interpolation(x_data, y_data, x0):
n = len(x_data)
result = 0
for i in range(n):
term = y_data[i]
for j in range(n):
if i != j:
term *= (x0 - x_data[j]) / (x_data[i] - x_data[j])
result += term
return result
# Contoh penggunaan
x = [1, 2, 3]
y = [1, 4, 9]
x0 = 2.5
print(f"Hasil interpolasi: {lagrange_interpolation(x, y, x0)}")
2. Polinom Newton
Polinom Newton menggunakan pendekatan rekursif dengan selisih terbagi (divided differences). Bentuk umum polinomialnya:
P(x) = f[x0] + f[x0, x1](x - x0) + f[x0, x1, x2](x - x0)(x - x1) + ...
Contoh Kode Python
def divided_differences(x_data, y_data):
n = len(x_data)
diff_table = [y_data[:]]
for i in range(1, n):
column = []
for j in range(n - i):
value = (diff_table[i - 1][j + 1] - diff_table[i - 1][j]) / (x_data[j + i] - x_data[j])
column.append(value)
diff_table.append(column)
return [row[0] for row in diff_table]
def newton_interpolation(x_data, y_data, x0):
coeff = divided_differences(x_data, y_data)
result = coeff[0]
product = 1
for i in range(1, len(x_data)):
product *= (x0 - x_data[i - 1])
result += coeff[i] * product
return result
# Contoh penggunaan
x = [1, 2, 3]
y = [1, 4, 9]
x0 = 2.5
print(f"Hasil interpolasi: {newton_interpolation(x, y, x0)}")
Comments
Post a Comment
terima kasih