METODA NUMERIK PRAKTIKUM 4 : INTERPOLASI POLINOMIAL Pokok Bahasan: Metoda Lagrange
Tujuan Kompetensi Dasar
Mengimplementasikan metoda interpolasi polinomial pada komputer dengan menggunakan MATLAB
Mendefinisikan fungsi Lagrange pada MATLAB. Menggambarkan polinomial Lagrange pada MATLAB. Memahami sifat interpolasi melalui grafik. Mendefinisikan kombinasi linear polinomial Lagrange. Memahami fakta-fakta yang terjadi melalui grafik. Menyusun m-file untuk menentukan polinomial interpolasi dengan metoda Lagrange. Menyusun m-file untuk mendefinisikan matriks selisih terbagi. Mendefinisikan polinomial interpolasi dengan formula Newton Mengimplementasikan interpolasi Hermite Memahami fungsi polyval dan ployfit pada MATLAB
Bila diberikan 𝑛 + 1 pasangan titik 𝑥𝑘 , 𝑦𝑘 , 𝑖 = 0,1,2, ⋯ , 𝑛 di mana 𝑥𝑘 ≠ 𝑥𝑗 maka kita senantiasa dapat membangun 𝑃𝑛 polinomial berderajat 𝑛 dengan sifat 𝑃𝑛 𝑥𝑘 = 𝑦𝑘 , 𝑘 = 0,1,2, ⋯ , 𝑛. Konstruksi polinomial ini adalah sebagai berikut 𝑛
𝑃𝑛 𝑥 : =
𝑦𝑘 𝐿𝑛,𝑘 𝑥 𝑘=0
di mana 𝐿𝑛 ,𝑘 adalah polinomial Lagrange yang didefinisikan oleh 𝑛
𝐿𝑛,𝑘 𝑥 ≔ 𝑖=0,𝑖≠𝑘
(𝑥 − 𝑥𝑖 ) . (𝑥𝑘 − 𝑥𝑖 )
Diperhatikan berlaku sifat interpolasi 𝐿𝑛,𝑘 𝑥𝑖 = 𝛿𝑘,𝑖 =
1, 𝑘 = 𝑖 . 0, 𝑘 ≠ 𝑖
Proyek 1: Mendefinisikan polinomial Lagrange dan menyajikannya secara grafis Misalkan kita mempunyai node 𝑥0 = 0.5, 𝑥1 = 2.25 dan 𝑥3 = 3. Berdasarkan definisi, kita dapat membangun tiga polinomial Lagrange untuk node ini, yaitu 𝐿2,0 𝑥 ≔
𝑥 − 2.25 𝑥 − 3 𝑥 − 0.5 (𝑥 − 3) , 𝐿2,1 𝑥 ≔ , 0.5 − 2.25 0.5 − 3 2.25 − 0.5 (2.25 − 3) 𝑥 − 0.5 (𝑥 − 2.25) 𝐿2,2 𝑥 = 3 − 0.5 (3 − 2.25)
1|P r ep are d b y Jul an H ER NADI
Kita definisikan dan gambarkan para polinomial ini langsung pada command window. Kita ambil domain [0, 4] untuk menggambarkan grafik ketiga polinomial Lagrange tersebut. >>node = [0.5 2.25 3]; >>x0 = node(1);x1=node(2);x2=node(3); >>x = linspace(0,4,100);%menetapkan 100 bilangan tersebar rata pada interval [0,4]. >>L0 = (x-x1).*(x-x2)./((x0-x1)*(x0-x2));%Langrange pertama >>L1 = (x-x0).*(x-x2)./((x1-x0)*(x1-x2));%Lagrange kedua >>L2 = (x-x0).*(x-x1)./((x2-x0)*(x2-x1));%Lagrange ketiga
Selanjutnya kita gambarkan grafik ketiga polinomial ini pada satu bidang koordinat sebagai berikut: >> plot(x,L0,x,L1,xL2); Bila pekerjaan Anda benar maka akan diperoleh Gambar sebagai berikut.
4
3
2
1
0
-1
-2
-3 0
0.5
1
1.5
2
2.5
3
3.5
4
Coba amati apakah hasil ini sesuai dengan teori khususnya sifat interpolasi 𝑳𝒌 𝒙𝒊 = 𝜹𝒊,𝒌 . Identifikasilah melalui grafik ini polinomial Lagrange 𝐿2,0 , 𝐿2,1 dan 𝐿2,2 . Berilah noktah pada grafik nilai dari 𝐿𝑘 (𝑥𝑖 ) untuk 𝑘, 𝑖 = 0,1,2 dengan cara sebagai berikut: >> >> >> >> >>
L0_node = (node-x1).*(node-x2)./((x0-x1)*(x0-x2)); L1_node = (node-x0).*(node-x2)./((x1-x0)*(x1-x2)); L2_node = (node-x0).*(node-x1)./((x2-x0)*(x2-x1)); hold on plot(node,L0_node,'s',node,L1_node,'o',node,L2_node,'d');
Hasilnya seperti disajikan pada Gambar berikut.
2|P r ep are d b y Jul an H ER NADI
4
3
2
1
0
-1
-2
-3 0
0.5
1
1.5
2
2.5
3
3.5
4
Berilah legend (keterangan) untuk masing-masing grafik tersebut. Gunakan “Insert Legend”, kemudian tulis keterangan yang sesuai. Proyek 2: Mendefinisikan kombinasi linear polinomial Lagrange dan menyajikannya secara grafis Kombinasi linear dari ketiga polinomial Lagrange ini berbentuk: 𝑦 = 𝑦0 𝐿2,0 𝑥 + 𝑦1 𝐿2,1 𝑥 + 𝑦2 𝐿2,2 𝑥 di mana 𝑦0 , 𝑦1 dan 𝑦2 adalah koefisien. Jadi hasilnya merupakan sebuah fungsi yang baru. Misalkan kita mempunyai koefisien 𝑦0 = 2, 𝑦1 = 3 dan 𝑦2 = 1 maka pendefinisian pada command window dapat dilakukan sebagai berikut. >>koef = [2 3 1]; >>y0 = koef(1); y1 = koef(2); y2 = koef(3) >>y = y0*L0+y1*L1+y2*L2; >>plot(x,y);grid
Bila pekerjaan Anda benar maka akan diperoleh Gambar berikut
3|P r ep are d b y Jul an H ER NADI
4 3 2 1 0 -1 -2 -3 -4
0
0.5
1
1.5
2
2.5
3
3.5
4
Coba amati informasi apa yang dapat diperoleh dari grafik ini khususnya bagaimana nilai 𝒚 di titik node dihubungkan dengan nilai koefisien yang kita berikan. Untuk jelasnya coba beri noktah pada masing-masing node versus nilai 𝑦 pada noktah tsb. Bila benar seharusnya Anda mendapatkan bahwa sifat 𝑦 𝑥0 = 𝑦0 , 𝑦 𝑥1 = 𝑦1 dan 𝑦 𝑥2 = 𝑦2 . Inilah fakta dasar interpolasi polinomial. Proyek 3: Menyusun m-file untuk menentukan polinomial interpolasi dengan metoda Lagrange Dengan cara manual seperti diberikan sebelumnya tentu saja tidak efektif karena kita harus mendefinisikan ulang banyak persamaan setiap diberikan data yang berbeda. Oleh karena itu kita perlu mendefinisikan m-file untuk mendapatkan polinomial interpolasi bagi pasaangan data yang diberikan. Dua tahap pendefinisian sebaiknya dipisahkan, yaitu 1. Mendefinisikan 𝑛 + 1 polinomial Lagrange untuk node 𝑥0 , 𝑥1 , ⋯ , 𝑥𝑛 yang diberikan.
Berikut m-file yang bersesuaian (lihat buku hal 136-137). function y = lagr1(x,datax,k) %mendefinsikan fungsi Lagrange. %INPUT: x anggota domain di mana fungsi akan didefinisikan. % datax adalah kumpulan node x_0,x_1,. . ., x_n. % k = 1,2,3, . . . , n+1 urutan polinomial Lagrange n=length(datax); %cek indeks if k>n error('indeks k melebih banyak data') end xx=datax;xx(k)=[];%membuang komponen ke k datax d=prod(datax(k)-xx); %penyebut pada definisi polinomial Lagrange 4|P r ep are d b y Jul an H ER NADI
y = 1; for k=1:n-1; ya=(x-xx(k)); y=y.*ya;% untuk memperoleh perkalian (x-x0)(x-x1). . . end y=y/d;
Setelah m-file ini disimpan dengan nama lagr1.m maka selanjutnya kita dapat menjalankannya melalui command window. Misalkan kita mempunyai node -1, 2 dan 4 berarti kita dapat mendefinisikan 3 polinomial langrange. Misalkan kita ambil domain [-1, 4], maka berikut cara menggunakan m-file tersebut. >>datax = [-1 2 4];%node yang diberikan. >>x = -1:0.01:4; %range domain polinomial Lagrange ini. >>y1 = lagr1(x,datax,1);%Lagrange pertama. >>y2 = lagr1(x,datax,2);%Lagrange kedua. >>y3 = lagr1(x,datax,3);%Lagrange ketiga.
Sampai di sini kita telah mendefinisikan tiga polinomial Langrange untuk nodes yang telah diberikan tersebut. Untuk verifikasi, sebaiknya Anda gambarkan grafik ketiga polinomial tersebut kemudian periksa apakah sifat interpolasinya dipenuhi. >> plot(x,y1,x,y2,x,y3); >>hold on >>plot([-1 -1 2 2 4 4],[0 1 0 1 0 1],’m*’);%cek sifat interpolasi >>grid; 1.2 1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -1
-0.5
0
0.5
1
1.5
2
2.5
3
3.5
4
2. Mendefinisikan polinomial interpoalsi dengan menggunakan polinomial Lagrange function y = poli_inter1(x,datax,datay) %INPUT: datax adalah node yang diberikan % datay adalah pasangan bagi datax %OUTPUT: y nilai polinomial interpolasi untuk pasangan datax,datay 5|P r ep are d b y Jul an H ER NADI
if length(datax)~=length(datay) error('panjang datax dan datay harus sama') %cek input data end n = length(datax); y = 0; for k = 1:n; yp = datay(k)*lagr1(x,datax,k);%suku kombinasi linear y = y + yp;%mendefefinisikan kombinasi linear. end
Coba lakukan perintah berikut pada command window. >> >> >> >> >> >> >> >> >>
x = -1:0.01:4; datax=[-1 2 4]; datay1=[1 0 2]; datay2=[0 1 0]; y1 = poli_inter1(x,datax,datay1); y2 = poli_inter1(x,datax,datay2); plot(x,y1,datax,datay1,'*');grid figure plot(x,y2,datax,datay2,'*');grid
Hasil keluaran grafik MATLAB diberikan pada halaman berikutnya. Pertanyaan untuk responsi A. Data berikut menyajikan hasil pengukuran temperatur (dalam derajat celcius) pada waktu-waktu tertentu. Pukul
06.00
07.00
10.00
12.00
14.00
15.00
17.00
18.30
21.00
23.00
00.00
02.00
02.45
Temp
27
28
29
31
34
32
30
28
28
25
24
20
19
1. Gunakan polinomial interpolasi derajat 3 untuk menentukan perkiraan temperatur pada pukul 04.00 fajar. 2. Gambarkan grafik polinomial derajat 3 yang dimaksud. Seharusnya Anda mendapatkan dua polinomial derajat 3 yang dimaksud. 3. Tentukan nilai perkiraan suhu pada waktu yang dimaksud. 4. Gambarkan polinomial derajat 11 untuk pasangan data di atas beserta pasangan datanya. Apakah polinomial melewati pasangan data yang diberikan. 5. Setiap 3 pasang data 𝑥𝑖 , 𝑦𝑖 , 𝑥𝑖+1 , 𝑦𝑖+1 , (𝑥𝑖+2 , 𝑦𝑖+2 ), kita dapat membangun polinomial interpolasi derajat dua. Gambarkanlah 6 potongan-potongan polinomial derajat dua untuk pasangan data di atas. Kemudian tentukan perkiraan temperatur pada midpoint masing-masing subinterval dengan polinomial interpolasi derajat dua yang telah anda temukan. B. Aproksimasi fungsi dengan polinomial interpolasi. Anda diberikan fungsi 𝑥 𝑦 = 𝑓 𝑥 = 1+ + sin 𝑥. 1 + 𝑥2 1. Gunakan polinomial derajat 3 untuk mengaproksimasi fungsi ini. Anda dibebaskan untuk memilih node dalam rentang [0, 8]. 2. Gambarkan grafik fungsi tersebut dan grafik polinomial yang Anda peroleh. 6|P r ep are d b y Jul an H ER NADI
3. Hitung kesalahan aproksimasi di setiap titik tengah subinterval [𝑘, 𝑘 + 1], 𝑘 = 0,1, ⋯ ,7 dengan formula 𝐸 𝑥𝑘 ≔ |𝑓 𝑥𝑘 − 𝑃3 𝑥𝑘 | Susunlah hasil Anda ke dalam sebuah Tabel. 4. Hitunglah 𝐸2 digunakan formula kesalahan 𝐸2 ≔
7 𝑘 =0
𝑓 𝑥𝑘 − 𝑃3 𝑥𝑘
2
1.5
1
0.5
0
-0.5 -1
-0.5
0
0.5
1
1.5
2
2.5
3
3.5
4
1.4
1.2
1
0.8
0.6
0.4
0.2
0 -1
-0.5
0
0.5
1
7|P r ep are d b y Jul an H ER NADI
1.5
2
2.5
3
3.5
4
1
2 2
,