Error di Interpolasi Polynomial
Contents
6. Error di Interpolasi Polynomial#
Kita telah mempelajari interpolasi polynomial, interpolasi Lagrange, dan interpolasi Newton untuk mencari suatu fungsi yang menginterpolasi titik-titik data. Sekarang kita akan membahas tentang error di interpolasi polynomial.
Diberikan suatu fungsi \(f(x)\) dan \(x \in [a, b]\). Suatu himpunan titik \(x_i \in X\), \(i = 0, 1, \cdots, n\) dan \(x_i \in [a, b]\). Misalkan \(P_n(x)\) adalah polynomial berderajat \(n\) yang menginterpolasi \(f(x)\) pada \(x_i\)
Definisikan error
Teorema: Error di Interpolasi Polynomial
Terdapat suatu titik \(\xi \in [a,b]\) sedemikian sehingga
Bukti
Jika \(f \in \mathcal{P}_n\) maka \(f(x) = P_n(x)\), trivial. Sekarang asumsikan \(f \notin \mathcal{P}_n\). Untuk \(x = x_i\), kita punya \(e(x_i) = f(x_i) - P_n(x_i) = 0\), OK. Sekarang kita asumsikan terdapat \(a\) sedemikian sehingga \(a \neq x_i\). Kita definisikan
dan konstanta
dan fungsi lain
Kita ingin mencari semua bernilai nol untuk fungsi \(\varphi\):
dan
Jadi, \(\varphi\) memiliki paling sedikit \((n+2)\) bernilai nol. Berdasarkan bahwa terdapat suatu bilangan \(\xi \in (a,b)\) sehingga kita dapatkan
Sehingga kita dapatkan
Kita ubah \(a\) menjadi \(x\), maka didapatkan
6.1. Contoh 1#
dengan \(x_0 = 0, x_1 = 0.6, x_2 = 0.9.\)
Cari turunan
Polynomial Lagrange orde 2:
Nilai maksimum dari \(\sin(\xi)\) pada selang tersebut adalah \(\sin(0.9)=0.7833\). Nilai maksimum dari \(g(x) = (x-0)(x-0.6)(x-0.9) = (x^3 - 1.5x^2 + 0.54x)\) dapat dicari dengan mencari turunan pertama
Sehingga didapat titik kritisnya yaitu: \(g'(0.2092)=2(0.2092)^2 - 3(0.2092) + 0.54 = -0.0438\) dan \(g'(1.291)=2(1.291)^2 - 3(1.291) + 0.54 = -1.6663.\)
Jadi, error maksimumnya adalah:
Polynomial Lagrange orde 1:
6.2. Contoh 2#
Diberikan \(x_0 = a, x_1 = b, b > a\) dan \(n = 1\). Kita punya batas atas errornya berdasarkan untuk \(x \in [a,b]\) yaitu
Catatan: \(\lVert f(\xi) \rVert_{\infty} = \max_{\xi \in (a,b)} (f(\xi))\) biasanya ini dipakai untuk menyatakan norm pada suatu vektor, tapi disini kita pakai untuk mencari nilai maksimum dari suatu fungsi pada suatu interval.
6.3. Titik yang seragam#
Misalkan teradapat suatu selang \([a,b]\) dan kita ingin menyebar \((n+1)\) titik secara seragamd dengan
dimana \(h = \frac{b-a}{n}\). Kita dapat mengukur error interpolasi di setiap titiknya jika diberikan \(n\) dan berdasarkan
Maka errornya dapat diestimasi dengan
dimana
6.4. Contoh 3#
Misalkan kita ingin menginterpolasi \(f(x) = \sin(\pi x)\) dengan suatu polynomial pada interval \([-1,1]\) dengan titik yang seragam. Tentukan batas atas dari error yang dihasilkan polynomial tersebut.
Ingin: mencari batas atas dari \(|e(x)|\)
batas atas errornya
6.5. Kasus 1: Equally spaced#
using Plots
using Polynomials
N = 20
x = range(0, 5, length=N)
y = sin.(π*x);
scatter(x, y, label="titik data",
xlabel="x",
ylabel="y"
)
6.5.1. Interpolasi Polynomial#
V = [x[i]^j for i=1:length(x), j=0:length(x)-1]
a = V \ y
p = Polynomial(a)
xx = range(0, 5, length=100)
yy = p.(xx)
scatter(x, y, label="titik data",
xlabel="x",
ylabel="y"
)
plot!(xx, yy, label="interpolasi polynomial", linewidth=2)
6.5.2. Interpolasi Lagrange#
function Lagrange_basis(x_data)
n = length(x_data)
L = zeros(n, n)
for i in 1:n
for j in 1:n
if i == j
L[i, j] = 1.0
else
L[i, j] = 0.0
end
end
end
return L
end
Lagrange_basis (generic function with 1 method)
function poly_Lagrange(x, x_data, koef)
n = length(x_data)
hasil = 0.0
for i in 1:n
term = koef[i]
for j in 1:n
if i != j
term *= (x - x_data[j]) / (x_data[i] - x_data[j])
end
end
hasil += term
end
return hasil
end
poly_Lagrange (generic function with 1 method)
V = Lagrange_basis(x)
a = V \ y
p = poly_Lagrange
poly_Lagrange (generic function with 1 method)
xx = range(0, 5, length=100)
yy = [poly_Lagrange(xx[i], x, a) for i in 1:length(xx)]
scatter(x, y, label="titik data",
xlabel="x",
ylabel="y"
)
plot!(xx, yy, label="Interpolasi Lagrange", linewidth=2)
6.6. Contoh: Fungsi Runge#
N = 20
x = [2*i/N - 1 for i=1:N]
y = 1 ./(1 .+ 25 .* x .^ 2);
scatter(x, y, label="titik data",
xlabel="x",
ylabel="y"
)
6.6.1. Interpolasi polynomial#
V = [x[i]^j for i=1:length(x), j=0:length(x)-1]
a = V \ y
p = Polynomial(a)
xx = range(-1, 1, length=1000)
yy = p.(xx)
scatter(x, y, label="titik data",
xlabel="x",
ylabel="y"
)
plot!(xx, yy, label="interpolasi polynomial", linewidth=2, ylimits=(-0.2,1.5))
6.6.2. Interpolasi Lagrange#
V = Lagrange_basis(x)
a = V \ y
p = poly_Lagrange
poly_Lagrange (generic function with 1 method)
xx = range(-1, 1, length=1000)
yy = [poly_Lagrange(xx[i], x, a) for i in 1:length(xx)]
scatter(x, y, label="titik data",
xlabel="x",
ylabel="y"
)
plot!(xx, yy, label="Interpolasi Lagrange", linewidth=2, ylimits=(-0.2,1.5))
Gejala ini disebut juga dengan Runge phenomenon.
6.7. Kasus 2: Non equally spaced#
x = [0.9, 1.3, 1.9, 2.1, 2.6, 3.0, 3.9, 4.4, 4.7, 5.0, 6.0, 7.0, 8.0, 9.2, 10.5, 11.3, 11.6, 12.0, 12.6, 13.0, 13.3]
y = [1.3, 1.5, 1.85, 2.12, 2.6, 2.7, 2.4, 2.15, 2.05, 2.11, 2.25, 2.3, 2.26, 1.95, 1.4, 0.9, 0.7, 0.6, 0.5, 0.4, 0.25];
scatter(x, y, label="titik data",
xlabel="x",
ylabel="y"
)
6.7.1. Interpolasi polynomial#
V = [x[i]^j for i=1:length(x), j=0:length(x)-1]
a = V \ y
p = Polynomial(a)
xx = range(0, 14, length=1000)
yy = p.(xx)
scatter(x, y, label="titik data",
xlabel="x",
ylabel="y"
)
plot!(xx, yy, label="interpolasi polynomial", linewidth=2, ylimits=(-2,4))
6.7.2. Interpolasi Lagrange#
V = Lagrange_basis(x)
a = V \ y
p = poly_Lagrange
poly_Lagrange (generic function with 1 method)
xx = range(0, 14, length=1000)
yy = [poly_Lagrange(xx[i], x, a) for i in 1:length(xx)]
scatter(x, y, label="titik data",
xlabel="x",
ylabel="y"
)
plot!(xx, yy, label="Interpolasi Lagrange", linewidth=2, ylimits=(-2,4))
6.8. Lampiran#
6.8.1. Teorema nilai rataan#
6.8.2. Teorema Rolle#
6.8.3. Teorema Rolle diperumum#
Teorema Rolle Diperumum
Misalkan \(f\) kontinu di selang \([a,b]\) dan \(f\) terdiferensialkan \(n\) kali pada \((a,b)\). Jika \(f(x) = 0\) pada \((n+1)\) nilai berbeda \(a \leq x_0 < x_1 < \cdots < x_n \leq b\) maka terdapat bilangan \(c\) di selang \((x_0,x_n)\) dan juga di \((a,b)\) dengan \(f^{(n)}(c) = 0\).