Anda di halaman 1dari 16

Analisis Numerik 2008 / 2009

Tugas 4
Interpolasi dan Integrasi Numerik

Kelas C
Kelompok :
Anita Rahmawat
Deswat
Enrico Budianto
Irene Ully Havsa
Toni Dermawan Y.

Fakultas Ilmu Komputer Universitas Indonesia


Mei 2009
BAB I
PENDAHULUAN

1.1 Penyelesaian Suatu Fungsi Cubic Spline


1.2 Fungsi Runge
1.3 Fungsi Sinc
1.4 Natural Spline
BAB II
ISI

1. Cubic Splines
Sepert yang tertera pada soal, kami akan mengkonstruksikan, memplot, dan mengukur error
10
fungsi cubic spline yang menginterpolasi dua fungsi, yaitu fungsi Runge : f ( x) =
1 + 25 x 2
sin(2 x)
dan fungsi Sinc : f ( x ) = 5 pada interval [-4,4]. Untuk melakukan hal di atas, kami
x
membuat sebuah program yang mengambil panjang sub interval h = [ xi , xi +1 ] sebagai salah
satu input, dan selanjutnya menentukan ttk interpolasi xi , mencari harga fungsi
yi = f ( xi ) tersebut pada ttk-ttk interpolasi dan mengkonstruksikan Spline Cubic dengan
memakai data {( xi , yi ), i = 0,..., n} . Setelah berhasil mengkonstruksikan, kami akan
melakukan perhitungan dan analisis terhadap error di interval [a,b] yang didefiniskan
sebagai berikut :
f ( x ) - si ( x ) x +x
e = max{ , x = i +1 i , dimana i = 1,...n}
f (x) 2
Kami akan melakukan variasi terhadap panjang sub interval yang digunakan, yaitu h 1 = 2,
h2=1.6, h3= 1, h4 = 0.5, h5 = 0.25, h6 = 0.125.
function [ipx,ipy,abcd,me,erro,rosiv,siv,ei,tcoci] =
cusfun(flag1,flag2,flag3,flag4,hox)

Fungsi yang saya gunakan untuk melakukan konstruksi, plotting, serta penentuan nilai error
terhadap fungsi dan spline cubic nya adalah fungsi cusfun(), terdapat 5 parameter yang
digunakan dalam fungsi di atas, yaitu :
1. Parameter flag1 dan flag2 dapat kita abaikan
2. Parameter flag3 adalah parameter yang menentukan fungsi yang digunakan, apakan
fungsi Runge ataupun fungsi Sinc. Apabila kita ingin menggunakan fungsi Runge, maka
kita gunakan ‘r’ dan apabila kita menggunakan fungsi Sinc, maka kita gunakan ‘s’
3. Parameter flag4 adalah parameter yang menentukan jenis cubic spline yang akan kita
gunakan, pada pembahasan ini, jenis penyelesaian spline yang kami gunakan adalah
natural spline.
4. Parameter hox adalah panjang sub interval yang kita inginkan pada selang [-4,4]. Panjang
sub interval yang kami gunakan adalah 2, 1.6, 1, 0.5, 0.25, 0.125
function ipy = rosflagging(flg3,ipx)
ipy = [];
if(flg3 == 'r')
for ii=1:length(ipx)
ipy = [ipy 10/(1+25*ipx(ii)^2)];
end
elseif(flg3 == 's')
for ii=1:length(ipx)
if(ipx(ii)==0)
ipy = [ipy 9.99864]
else
ipy = [ipy (5*sin(2*ipx(ii)))/ipx(ii)];
end
end
end
end

Fungsi rosflagging() diatas berfungsi untuk memilih fungsi yang ingin kita hitung,
apakah menggunakan fungsi Runge atau fungsi Sinc. Apabila flg3 bernilai ‘r’ maka
fungsi yang kita pilih adalah fungsi Runge, dan apabila flg3 bernilai ‘s’, maka fungsi
yang kita pilih adalah fungsi Sinc. Nilai ipx adalah ttk-ttk x yang merupakan ttk-
ttk interpolasi. Dengan menggunakan fungsi Sinc ataupun Runge, maka kita akan
mendapatkan matriks ipy yang merupakan hasil dari vektor ipx yang dimasukkan
kedalam fungsi. Vektor ipx dan ipy merupakan ttk-ttk interpolan.

for ii=1:length(ipx)-1
inth = [inth ipx(2)-ipx(1)];
end

Untuk menghitung jarak antara ttk-ttk interpolasi, kita gunakan sebuah matriks
yang dapat menyimpan jarak antara ttk-ttk interpolasi.

for ii=1:tp-2
f2 = [f2 (6/((inth(ii))^2))*(ipy(ii)-2*ipy(ii+1)+ipy(ii+2))];
%menentukan nilai f2 untuk persamaan L*y = f2.
end;

Sepert yang kita ketahui, persamaan cubic spline pada setap ttk-ttk interpolasi
mengikut bentuk umum :
Untuk mendapatkan nilai ai, bi, ci, dan di diatas, kita membutuhkan turunan pertama
dan turunan kedua untuk setap spline tersebut. Oleh karena itu, fungsi diatas
dibutuhkan untuk mendapatkan nilai turunan pertama dan turunan keduanya.

f2 = elim('f',f2,L,U); %forward solution untuk


mendapatkan nilai y pada persamaan L*y = f2.
f2 = elim('b',f2,L,U); %backward solution untuk
mendapatkan nilai x pada persamaan U*w = f2.
f2 = deripro(f2,tp,flag4); %finalisasi untuk melengkapi
vector turunan kedua berdasarkan aturan tipe cubic spline.

Karena nilai f2 yang sudah kita dapatkan sebelumnya, belum merupakan nilai
turunan sebenarnya di masing-masing ttk, maka kita harus mendapatkan nilai
turunan sebenarnya. Sepert yang sudah dijelaskan di bagian pendahuluan,
penyelesaian matriks diatas dapat berbentuk Mx = f2. dimana M adalah M matriks
koefisien. Karena kita menggunakan natural splines, maka bentuk umum matriks
akan berbentuk:

Untuk mendapatkan nilai dari M1, M2,...Mn maka kami menggunakan faktorisasi LU,
sehingga berbentuk LU x = f2. Dengan menggunakan forward dan backward
substtuton, maka kita akan mendapatkan nilai vektor x yang berisi M 1, M2,...Mn
tersebut.
for ii=1:th
%mendapatkan nilai-nilai untuk matriks koefisien abcd.
abcd(ii,4)= ipy(ii);
%nilai untuk x^0,
abcd(ii,3)= ((ipy(ii+1)-ipy(ii))/inth(ii))-
((inth(ii)*(f2(ii+1)+2*f2(ii)))/6); %nilai untuk x^1,
abcd(ii,2)= f2(ii)/2;
%nilai untuk x^2,
abcd(ii,1)= (f2(ii+1)-f2(ii))/(6*inth(ii));
%nilai untuk x^3.
end
Dalam bentuk umum persamaan cubic spline pada nomor (2), tentunya persamaan
cubic spline pada setap spline akan berbeda. Oleh karena itu, nilai a i, bi, ci, dan di
akan berbeda. Untuk mengatasi masalah tersebut, kami membuat suatu matriks
bernama matriks abcd yang berfungsi menyimpan nilai a i, bi, ci, dan di pada setap
spline dalam sebuah matriks. Matriks pada kolom pertama berisi nilai a i untuk setap
i=1 sampai dengan Jumlah Spline. Matriks pada kolom kedua berisi nilai b i untuk
setap i=1:th. Matriks pada kolom ketga berisi nilai c i untuk setap i=1:th. Matriks
pada kolom keempat berisi nilai di untuk setap i=1:th.
Dengan adanya matriks abcd yang berisi fungsi spline di setap bagian spline, maka
kita dapat mulai menghitung nilai error antara fungsi yang sebenarnya (Runge atau
Sinc) dengan fungsi yang menginterpolasi ttk-ttk interpolannya. Sebelumnya error
yang ada didefinisikan dengan :

f ( x ) - si ( x ) x +x
e = max{ , x = i +1 i , dimana i = 1,...n}
f (x ) 2

Dari definisi diatas, nilai error yang kita ingin dapatkan didapatkan dari ttk-ttk tengah dari
ttk-ttk interpolannya dalam sebuah vector midx, kemudian kita akan mendapatkan sebuah
vektor midy dan smidv. Vektor midy berisi nilai midx yang dimasukkan kedalam fungsi yang
sebenarnya (Runge atau Sinc), dan smidv merupakan nilai-nilai dari vector midx yang
dimasukkan kedalam fungsi spline yang sudah terdapat dalam matriks abcd. Setelah
didapatkan nilai midy dan smidv, maka kita mendapatkan nilai error relatve dari kedua
vector tersebut sepert yang sudah didefinisikan di atas. Implementasi penghitungan error
terdapat pada potongan kode di bawah:
function [me,erro] = ec(ipx,tp,abcd,flg3)
midx = []; midy = []; erro = []; dot = 0; smidv = []; erro =
[]; me=0;
for ii=1:tp-1
midx = [midx 0.5*(ipx(ii)+ipx(ii+1))];
end
display(midx);
midy = rosflagging(flg3,midx);
display(midy);

for ii=1:tp-1
smidv = [smidv; abcd(ii,4)+abcd(ii,3)*(midx(ii)-ipx(ii))
+abcd(ii,2)*(midx(ii)-ipx(ii))^2+abcd(ii,1)*(midx(ii)-
ipx(ii))^3];
erro = [erro abs((midy(ii)-smidv(ii))/midy(ii))];
end
me = max(erro);
end

Setelah mendapatkan nilai-nilai error disetap nilai midx, maka kita akan mendapatkan nilai
terbesar dari kumpulan-kumpulan error tersebut.
2. Numerical Integration
Berdasarkan fungsi-fungsi spline yang sudah didapatkan dari bagian pertama, kami
melakukan perhitungan integral atas kedua fungsi (fungsi Runge/Sinc dan fungsi
Cubic Spline) pada interval yang sama, yaitu [-4,4] . Cara yang kami lakukan atas
melakukan integrasi atas setap polinomial spline dan kemudian menjumlahkan
seluruh spline, dan dibandingkan dengan integrasi atas fungsi yang sebenarnya
(Runge dan Sinc). Dari kedua hasil integrasi yang didapatkan, kita lakukan
penghitungan atas error yang dihasilkan. Kemudian kami akan menyelidiki trend
penurunan error pada masing-masing sub-interval jika panjang sub-interval
diperkecil sebagai fungsi dari h, dan menganalisa bagaimana sebaran error yang
terjadi dan kaitannya dengan tngkah-laku fungsi. Kami juga akan berusaha
menjawab pertanyaan bonus, yaitu dengan analisi perbandingan akurasi dan ongkos
antara integrasi fungsi spline dan metoda simpson pada masing-masing sub interval.
function [rosiv,siv,e,tcoci] = funcint(flag3,abcd,th,inth,ipx)

Fungsi yang kami gunakan untuk menghitung nilai integrasi adalah fungsi funcint().
Untuk mendapatkan integrasi dari fungsi Runge dan fungsi Sinc, kita dapat
menggunakan fungsi int() yang disediakan oleh MATLAB. Apabila kita ketkkan
perintah berikut di MATLAB : int('10/(1+25*x^2)'), maka kita akan dapatkan fungsi
integrasinya yaitu : 2*atan(5*x) untuk fungsi Runge, dan apabila kita ketkkan
int('5*sin(2*x)/x'), maka kita akan mendapatkan fungsi 5*sinint(2*x) sebagai
integrasi dari fungsi Sinc.
if(flag3=='r')
rosiv = 2*atan(5*0)-2*atan(5*-4) + 2*atan(5*4)-
2*atan(5*0)
elseif(flag3=='s')
rosiv = 5*sinint(2*0)-5*sinint(2*-4)+5*sinint(2*4)-
5*sinint(2*0)
end

Pada potongan kode diatas, dilakukan integrasi sebenarnya atas fungsi Runge dan
Sinc, dengan batas antara [-4,4]. Hasil pengintegralan tersebut kemudian disimpan di
sebuah variabel rosiv.
for ii=1:th
si = [si (inth(ii)/4)*abcd(ii,4)*(inth(ii)^4)+
(inth(ii)/3)*abcd(ii,3)*(inth(ii)^3)+
(inth(ii)/2)*abcd(ii,2)*(inth(ii)^2)+abcd(ii,4)*(inth(ii))];
end
Setelah menghitung hasil integral dari kedua fungsi diatas secara eksak, kemudian kita
akan melakukan integrasi dari fungsi spline yang sudah terbentuk. Karena fungsi
spline merupakan sebuah polinomial berpangkat 3, maka integrasi dari fungsi
tersebut akan lebih mudah didapatkan dan dapat diintegrasikan secara manual.
Setelah menemukan bentuk umum dari integrasi tersebut, kemudian kita masukkan
nilai-nilai integrasi dari setap spline dan kemudian melakukan penjumlahan dari
seluruh integrasi spline nya.
siv = sum(si);
e = abs(rosiv-siv);

Setelah seluruh nilai integrasi dihitung, kemudian kami menghitung selisih dari
kedua nilai tersebut, sehingga menghasilkan nilai error mutlak.
BAB III
HASIL PERCOBAAN

1. Cubic Splines
1.1 Fungsi Runge
a. h=2

Dari hasil perhitungan pada MATLAB, didapatkan data-data sebagai berikut :


midx midy smidv Error Relatve
-3 0.0442 -1.5213 35.3818
-1 0.3846 6.114 14.8972
1 0.3846 6.1143 14.8972
3 0.0442 -1.5213 35.3818

• midx adalah nilai x tengah diantara 2 ttk interpolasi


• midy adalah nilai y tengah yang dimasukkan ke fungsi Runge
• smidv adalah nilai y yang dimasukkan kedalam fungsi Spline
• Error relatve adalah selisih error dibandingkan dengan nilai fungsi
sebenarnya.
Dari tabel diatas, kita mendapatkan nilai error maksimal yaitu, 35.3818
b. h=1.6

Dari hasil perhitungan pada MATLAB, didapatkan data-data sebagai berikut :


midx midy smidv Error Relatve
-3.2000 0.0389 -0.0102 1.2620
-1.6000 0.1538 0.3218 1.0919
0.0000 10.0000 0.6890 0.9311
1.6000 0.1538 0.3218 1.0919
3.2000 0.0389 -0.0102 1.2620

• midx adalah nilai x tengah diantara 2 ttk interpolasi


• midy adalah nilai y tengah yang dimasukkan ke fungsi Runge
• smidv adalah nilai y yang dimasukkan kedalam fungsi Spline
• Error relatve adalah selisih error dibandingkan dengan nilai fungsi
sebenarnya.
Dari tabel diatas, kita mendapatkan nilai error maksimal yaitu, 1.2620
c. h=1

Dari hasil perhitungan pada MATLAB, didapatkan data-data sebagai berikut :


midx midy smidv Error Relatve
-3.5000 0.0325 -0.0720 3.2132
-2.5000 0.0636 0.3782 4.9474
-1.5000 0.1747 -0.9778 6.5977
-0.5000 1.3793 6.1788 3.4796
0.5000 1.3793 6.1788 3.4796
1.5000 0.1747 -0.9778 6.5977
2.5000 0.0636 0.3782 4.9474
3.5000 0.0325 -0.0720 3.2132

• midx adalah nilai x tengah diantara 2 ttk interpolasi


• midy adalah nilai y tengah yang dimasukkan ke fungsi Runge
• smidv adalah nilai y yang dimasukkan kedalam fungsi Spline
• Error relatve adalah selisih error dibandingkan dengan nilai fungsi
sebenarnya.
Dari tabel diatas, kita mendapatkan nilai error maksimal yaitu, 6.5977
d. h=0.5

Dari hasil perhitungan pada MATLAB, didapatkan data-data sebagai berikut :


midx midy smidv Error Relatve
-3.7500 0.0284 0.0281 0.0106
-3.2500 0.0377 0.0389 0.0311
-2.7500 0.0526 0.0482 0.0842
-2.2500 0.0784 0.0948 0.2099
-1.7500 0.1289 0.0673 0.4782
-1.2500 0.2496 0.4789 0.9187
-0.7500 0.6639 -0.1903 1.2866
-0.2500 3.9024 6.6253 0.6977
0.2500 3.9024 6.6253 0.6977
0.7500 0.6639 -0.1903 1.2866
1.2500 0.2496 0.4789 0.9187
1.7500 0.1289 0.0673 0.4782
2.2500 0.0784 0.0948 0.2099
2.7500 0.0526 0.0482 0.0842
3.2500 0.0377 0.0389 0.0311
3.7500 0.0284 0.0281 0.0106

• midx adalah nilai x tengah diantara 2 ttk interpolasi


• midy adalah nilai y tengah yang dimasukkan ke fungsi Runge
• smidv adalah nilai y yang dimasukkan kedalam fungsi Spline
• Error relatve adalah selisih error dibandingkan dengan nilai fungsi
sebenarnya.
Dari tabel diatas, kita mendapatkan nilai error maksimal yaitu, 1.2866

e. h=0.25
Dari hasil perhitungan pada MATLAB, didapatkan data-data sebagai berikut :
midx midy smidv Error Relatve
-3.8750 0.0266 0.0266 0.0010
-3.6250 0.0303 0.0303 0.0002
-3.3750 0.0350 0.0350 0.0000
-3.1250 0.0408 0.0408 0.0000
-2.8750 0.0482 0.0482 0.0000
-2.6250 0.0577 0.0577 0.0000
-2.3750 0.0704 0.0704 0.0001
-2.1250 0.0878 0.0878 0.0002
-1.8750 0.1125 0.1124 0.0009
-1.6250 0.1492 0.1496 0.0023
-1.3750 0.2072 0.2058 0.0066
-1.1250 0.3064 0.3112 0.0158
-0.8750 0.4965 0.4776 0.0381
-0.6250 0.9289 0.9966 0.0729
-0.3750 2.2145 1.9462 0.1212
-0.1250 7.1910 7.7367 0.0759
0.1250 7.1910 7.7367 0.0759
0.3750 2.2145 1.9462 0.1212
0.6250 0.9289 0.9966 0.0729
0.8750 0.4965 0.4776 0.0381
1.1250 0.3064 0.3112 0.0158
1.3750 0.2072 0.2058 0.0066
1.6250 0.1492 0.1496 0.0023
1.8750 0.1125 0.1124 0.0009
2.1250 0.0878 0.0878 0.0002
2.3750 0.0704 0.0704 0.0001
2.6250 0.0577 0.0577 0.0000
2.8750 0.0482 0.0482 0.0000
3.1250 0.0408 0.0408 0.0000
3.3750 0.0350 0.0350 0.0000
3.6250 0.0303 0.0303 0.0002
3.8750 0.0266 0.0266 0.0010

• midx adalah nilai x tengah diantara 2 ttk interpolasi


• midy adalah nilai y tengah yang dimasukkan ke fungsi Runge
• smidv adalah nilai y yang dimasukkan kedalam fungsi Spline
• Error relatve adalah selisih error dibandingkan dengan nilai fungsi
sebenarnya.
Dari tabel diatas, kita mendapatkan nilai error maksimal yaitu, 0.1212

1.2 Fungsi Sinc


2. Numerical Integration
BAB IV
ANALISIS
BAB V
KESIMPULAN