Anda di halaman 1dari 45

UJIAN AKHIR SEMESTER

Dosen pengajar :
Oni Soesanto, S.Si.,M.Si
Mata Kuliah Metode Numerik.

Ditulis oleh :
Nama : Annisa Humaira
NIM : 1911017220019

Universitas Lambung Mangkurat


Fakultas Matematika Dan Ilmu Alam
Program Studi Statistika
Tahun Ajaran 2020/2021
A. INTERPOLASI
Interpolasi merupakan teknik untuk mencari nilai suatu variabel yang hilang
pada rentang data yang diketahui. Teknik-teknik interpolasi yang dapat dilakukan yaitu
sebagai berikut:
1. Teknik Interpolasi Polynomial
2. Teknik Interpolasi Piecewise

1. Interpolasi Polinomial
Interpolasi polinomial merupakan teknik interpolasi dengan mengasumsikan
pola data dimiliki mengikuti pola polinomial baik berderajat satu (linier) maupun
berderajat tinggi. Interpolasi dengan metode ini dilakukan dengan terlebih dahulu
membentuk persamaan polinomial. Persamaan polinomial yang terbentuk
selanjutnya digunakan untuk melakukan interpolasi dari nilai yang diketahui atau
ekstrapolasi (prediksi) dari nilai diluar rentang data yang diketahui.
Pembahasan akan dibagi menjadi 3 bagian. Bagian pertama yaitu mengulang
kembali teknik evaluasi polinomial, sedangkan dua bagian selanjutnya akan
membahas teknik interpolasi linier dan polinomial orde tinggi dengan menjadikan
pembahasan bagian pertama sebagai dasar pada dua bagian berikutnya.
a. Evaluasi Polinomial
Mempelajari tentang teknik untuk melakukan substitusi nilai x pada
persamaan polinomial untuk memperoleh nilai  y. Terdapat berbagai
pendekatan dalam melakukan proses tersebut, mulai dari metode naive maupun
metode Horner. Kedua metode akan menghasilkan hasil yang sama namun
dengan proses komputasi yang berbeda. Metode naive cenderung lambat dalam
proses komputasi karena jumlah proses yang dilakukan dalam sekali proses
lebih banyak dari pada metode Horner.
Untuk memahami metode-metode evaluasi polinomial yang telah
disebutkan tersebut, secara umum persamaan polinomial disajikan pada
Persamaan (1).
f ( x )=an x n +a n−1 x n−1+ …+a 1 x+ a0 ( 0)
dimana a merupakan koefisien polinomial, x merupakan variabel, dan n 
merupakan indeks dan pangkat polinomial.
Pada metode naive kita melakukan evaluasi polinomial sama dengan
cara kita melakukan evaluasi polinomial saat SMA. Nilai x akan
disubstitusikan pada masing-masing elemen persamaan polinomial. Masing-
masing elemen polinomial selanjutnya dijumkahkan untuk menghitung  y.
Metode lain yang lebih efisien dalam melakukan evaluasi polinomial
adalah metode Horner. Metode ini oleh William Horner pada abad ke-18.
Dalam metode Horner, bentuk polinomial pada Persamaan (1) akan
ditransformasi menjadi Persamaan (2).
f ( x )=an x n +a n−1 x n−1+ …+a 1 x+ a0 f (x)=a0 +a1 x+ …+a n−1 x n−1+ an x n
f (x)=a0 + x ¿ f (x)=a0 + x ( a1 +…+ x ( an−a + x ( an ) ) … )
( 0)
Berdasarkan Persamaan (2), jika dilakukan perhitungan pada persamaan
polinomial berderajat 10, dapat direduksi perhitungan menjadi 10 perkalian dan
10 penjumlahan. Jumlah tersebut sangat kecil dibandingkan kedua metode
sebelumnya dan dapat dikatakan lebih efisien dibandingkan metode lainnya.

b. Interpolasi Linier
Misalkan memiliki 3 buah data dengan dua buah variabel, misalkan
variabel x dan variabel  y. Pada salah satu data terdapat data yang hilang, agar
ketiga data tersebut tetap dapat digunakan dalam iterasi diperlukan interpolasi
untuk “menebak” nilai dari data yang hilang.
Berdasarkan pengukuran yang sebelumnya pernah dilakukan diketahui
bahwa pola data yang terbentuk variabel x dan  y divisualisasikan menggunakan
scatterplot adalah pola linier. Berdasarkan hal tersebut interpolasi dilakukan
dengan menggunakan metode linier.
Interpolasi linier dilakukan dengan terlebih dahulu membentuk fungsi
linier. Dengan kata lain diperlukan mencari nilai slope m dan intercept b.
Nilai m dihitung sebagai rasio selisih jarak dua titik pada sumbu  y dan sumbu x 
yang dapat dituliskan melalui Persamaan (3).
y 2− y 1
m= ( 0)
x 2−x 1
Nilai intercept (titik potong pada sumbu  y) dihitung menggunakan
Persamaan (4).
b= y 2−m x2 ( 0)

Algoritma Interpolasi Linier


1) Tentukan dua buah titik ( x , y ) sebagai dasar pembentukan persaman
linier.
2) Hitung mm menggunakan Persamaan (3)
3) Hitung bb menggunakan Persamaan (4)
4) Definiskan fungsi linier berdasarkan nilai m dan b
5) Hitung  y dengan cara substitusi nilai x pada persamaan linier untuk
melakukan interpolasi atau ekstrapolasi nilai  y yang ingin dicari.

Metode interpolasi linier dapat dibilang merupakan metode interpolasi


yang sangat sederhana. Disamping kemudahannya, metode ini memiliki potensi
error numerik jika jarak antara kedua titik cukup berdekatan terlebih lagi jika
selisih penyebut (x2−x1x2−x1) sangat kecil sehingga akan menghasilkan
nilai yy yang sangat besar.

c. Interpolasi Polinomial Orde Tinggi


Dengan menggunakan dua titik, dapat membentuk garis lurus (linier)
yang tepat pada dua titik tersebut. Masalah timbul jika selisih nilai  x kedua titik
tersebut sangat kecil atau kedua titik tersebut memiliki nilai x yang sama. Hal
ini akan menyebabkan slope yang dihasilkan menjadi tidak terhingga atau garis
yang terbentuk adalah garis vertikal tegak lurus.
Jika terdapat tiga buah titik, bisa menggunakan interpolasi linier asalkan
ketiga titik tersebut membentuk pola linier atau terletak pada satu garis yang
sama. Pada kenyatannya kondisi tersebut jarang terjadi, sehingga pendekatan
menggunakan polinomial orde lebih tinggi diperlukan. Persamaan kuadratik
(polinomial orde dua) dapat digunakan untuk membentuk persamaan
polinomial pada ketiga titik tersebut, sehingga iterasi dapat dilakukan. Untuk 4
buah titik data, polinomial orde tiga dapat digunakan untuk melakukan
interpolasi. Secara umum berdasarkan penjelasan tersebut, untuk n titik data
interpolasi dapat dilakukan menggunakan persamaan polinomial orde n−1.
Diberikan set data berpasangan yang telah diurutkan ( x i , y i ) , fungsi
interpolasi harus memenuhi persyaratan berikut:
P ( x i) = y i ( 0)
Untuk setiap i. Sebagai tambahan, fungsi interpolasi berupa fungsi
polinomial dengan bentuk umum sebagai berikut:
y i=β n xin+ β n−1 xin−1 +…+ β1 x i+ β 0 ( 0)
Persamaan (6) dapat dituliskan kedalam bentuk matriks yang
ditampilkan pada Persamaan (7).
x1n x n−1
1 ⋯ x11 βn y1

[ x2 x n−1

n
2 ⋯
⋮ ⋮
x n x n−1
n
n
⋯ xn ][ ] [ ]
x 2 1 β n−1 = y 2
⋱⋮ ⋮
1 β0

yn
( 0)

Persamaan matrik tersebut dapat dituliskan sebagai Xβ= y. Matriks X  


disebut sebagai matriks Vandemonde dan matriks tersebut mengandung
sejumlah nilai x dengan pangkat sampai dengan n.

Algoritma Interpolasi Polinomial Orde Tinggi


1) Tentukan set titik berpasangan ( x , y ) yang telah diurutkan.
2) Bentuk matriks Vandermonde sesuai dengan Persamaan (7).
3) Definiskan persamaan matriks Xβ= y.
4) Selesaikan persamaan matriks pada poin 3 untuk memperoleh nilai β
5) Definisikan persamaan polinomial berdasarkan koefisien β yang
diperoleh
6) Lakukan substitusi x persamaan polinomial pada poin 5 untuk
memperoleh nilai  y

2. Interpolasi Piecewise

Interpolasi dengan polinomial sering memberikan hasil yang tidak dapat


diterima. Interpolasi polinomial yang dihasilkan dari sejumlah besar data titik
biasanya berderajat tinggi. Polinomial berderajat tinggi pada umumnya bersifat
osilatif (grafiknya naik turun secara cepat). Akibatnya, perubahan data pada
interval kecil dapat menyebabkan fluktuasi besar pada keseluruhan interval. Karena
alasan ini, biasanya interpolasi hanya menggunakan polinomial berderajat rendah.

Interpolasi piecewise menawarkan alternatif lain. Pada interpolasi piecewise,


pada titik yang berbeda sepanjang kurva, nilai fungsi lebih mungkin lebih baik
didekati menggunakan dua atau lebih interpolasi. Pada metode ini akan dibuat
fungsi interpolasi ditiap antara dua titik observasi.

Akan dijelaskan 2 buah metode interpolasi piecewise, yaitu: interpolasi linier


piecewise dan interpolasi kubik spline. Interpolasi pertama dilakukan
menggunakan persamaan linier, sehingga kurva yang terbentuk bukan merupakan
kurva kontinu. Interpolasi selanjutnya dilakukan menggunakan persamaan
polinomial berderajat tinggi sehingga kurva yang dihasilkan lebih halus (tidak ada
sudut siku pada setiap titik).

a. Interpolasi Linier Piecewise

Interpolasi linier piecewise merupakan interpolasi yang menggunakan


pendekatan interpolasi linier. Fungsi linier akan dibentuk pada setiap dua titik
observasi. Dibanding menggunakan persamaan polinomial seperti kuadratik,
interpolasi piecewise akan menghubungkan tiap dua titik observasi dengan
garis lurus.

Algoritma Interpolasi Linier Piecewise

1) Tentukan set titik berpasangan ( x , y ) yang telah diurutkan berdasarkan


nilai sumbu x.
2) Hitung m pada setiap dua titik berdekatan menggunakan Persamaan (3)
3) Hitung b pada setiap dua titik berdekatan menggunakan Persamaan (4)
4) Definiskan fungsi linier berdasarkan nilai m dan b
5) Hitung  y dengan cara substitusi nilai x pada persamaan linier untuk
melakukan interpolasi nilai  y yang ingin dicari.
6) Untuk melakukan ekstrapolasi dengan titik observasi diluar rentang titik
diketahui, gunakan persamaan linier yang berada pada bagian ujung
terdekat dengan nilai x yang hendak dicari nilai  y-nya.

b. Interpolasi Kubik Spline


Jika menggunakan interpolasi polinomial berderajat satu (sebuah garis)
lebih dari beberapa interval merupakan peningkatan dari satu baris interpolasi,
dan jika menggunakan polinomial berderajat tinggi juga merupakan
peningkatan dari satu garis interpolasi tunggal, maka dapat disimpulkan bahwa
penggunaan polinomial berderajat tinggi pada selang beberapa interval juga
akan menjadi peningkatan dalam proses interpolasi. Dalam beberapa kasus, hal
tersebut benar, tetapi kedepannya masih menghadapi sudut tajam di mana
masing-masing kurva interpolasi tergabung (interpolasi linier piecewise). Sudut
tajam ini mencegah diferensiasi dan pada prakteknya tidak dapat digunakan
untuk memodelkan beberapa fungsi di dunia nyata, seperti roller coaster span.
Interpolasi spline kubik memecahkan masalah ini. Interpolasi ini akan
memberikan kurva tergabung yang halus. Hal tersebut juga membuat spline
terintegrasi. Karena setiap bagian individu diwakili oleh kurva kubik
(polinomial derajat 3), maka masing-masing bagian individu juga dapat
dianalisis sebagai kurva kubik. Dengan asumsi ada n titik data untuk
interpolasi, kita akan mendefinisikan  Si sebagai fungsi polinomial kubik yang
mewakili kurva pada domain [ xi ; x i+1]. Kemudian untuk n titik observasi,
ada n−1 interpolasi polinomial kubik.
Bentuk umum seri polinomial dituliskan pada Persamaan (8).
Si=d i ( x−x i )3 +c i ( x−x i )2+ bi ( x−x i) + ai ( 0)
Ini mengarah ke 4 nilai yang tidak diketahui tidak diketahui, yaitu: a i, b i
, c i, dan d i pada setiap Persamaan (8). Oleh karena itu, ada 4 ( n−1 ) =4 n−4 nilai
yang tidak diketahui. Karena kita ingin spline membentuk garis kontinu dan
dapat didiferensiasi, ada satu set persamaan yang menentukan spline kubik:
Si ( x i) = y i , i=1 , … … , n−1 ( 0)
Si ( x i+1 ) = y i +1 , i=1 , … … , n−1 ( 0)
S'i ( x i+1 ) =S'i+1 (x i ), i=1 , … … , n−2 ( 0)
'' ''
S ( x i +1 )=S ( x i) ,
i i+1 i=1 , … … , n−2 ( 0)
Persamaan (9) dan (10) sudah cukup jelas. Persyaratan ini memastikan
bahwa jika kita mengevaluasi spline di salah satu node internal, hasil yang akan
kita peroleh merupakan jawaban yang telah ditentukan, yaitu spline yang
dievaluasi pada  x i untuk beberapa i adalah  y i, dan setiap komponen spline
bergabung dengan rapi. Persamaan (11) memastikan bahwa memiliki turunan
pertama yang berkelanjutan di setiap simpul internal. Ini mencegah
terbentuknya sudut tajam pada tiap node. Persamaan (12) memastikan turunan
kedua juga kontinu, dimana kondisi ini menguntungkan karena itu berarti
turunan pertama itu sendiri dapat didiferensiasi juga.
Kondisi ini menyebabkan ada 4 n−6 kondisi yang harus dipenuhi.
Jika 4 n−4 yang tidak diketahui dipecahkan sebagai sebuah matriks, dan
akhirnya matriks tersebut akan terpecahkan, matriks akan menjadi kurang
ditentukan. Menyelesaikan kondisi tersebut dengan memasukkan dua ketentuan
tambahan. Dengan splines kubik, secara normal adalah menentukan akhir di
kedua ujung untuk mencapai dua kondisi tambahan. Untuk contoh ini, dua
'' ''
kondisi yang akan ditambahkan adalah Si ( x i )=0 dan Si ( x n )=0. Kedua kondisi
ini memastikan bahwa pada titik akhir, turunan pertamanya linier dan oleh
karena itu fungsi spline berlanjut ke arah yang sudah berjalan. Interpolasi
spline kubik ini disebut juga sebagai “natural spline”.
Awalnya, dapat melihat bahwa setiap polinomial kubik  Si digeser ke
kanan oleh unit  x i atau bergeser ke kiri jika  x i negatif. Pada  x i nilai fungsi
adalah a i yang berarti a i= y i untuk setiap nilai i. Menyelesaikan sisa koefisien
yang ada akan lebih kompleks, tetapi sekarang 3 n tidak diketahui dengan 3 n 
kondisi. Derivasi penuh tersedia dari berbagai sumber, tetapi secara garis besar
' '
dari Persamaan (11) didapatkan Si ( x i+1 )=Si +1, kemudian S'i+ 1−S 'i ( x )=0, dan
dapat mensubstitusi ke Persamaan (8) ke dalam kedua komponen, pemecahan
untuk d i dalam hal ini  x i,  y i, dan c i. Proses yang sama dapat direplikasi dengan
Persamaan (12) dan b i. Hasilnya adalah matriks tridiagonal, yang dapat
dipecahkan untuk menemukan koefisien. Terdapat sebuah matriks, A,
sedemikian rupa sehingga,
AC=V ( 0)
dimana  A merupakan matriks tridiagonal. Pada matriks tridiagonal
ini (u1 , u2 , … , un−1 ) merupakan vektor U , dan vektor M , L, dan V  ditentukan
dengan cara serupa. Matriks ini sedemikian rupa,
ui=l i =xi +1−x i ( 0)
kecuali pada u0 =l n. Lebih jauh, diagonal utama D ditentukan menggunakan
Persamaan (15).
mi=2(x i+1 −xi + x i−x i−1) ( 0)
kecuali pada d 0=d n=1. Akhirnya vector V  ditentukan dengan Persamaan (16).
y i+1− y i y i− y i−1
vi =3 ( − )
x i+1−x i x i−x i−1
( 0)

kecuali pada  v 0=v n =0. Sehingga,


m1 u1 0 0 0 v1

[ l 1 m2 u2 0
0 l2 ⋱ ⋱
0 0 ⋱ ⋱ u
0 0 0 l n −1 mn
0

n−1
] []
v2
0 C= ⋮

vn
Penyelesaian Persamaan (17) akan menghasilkan vektor koefisien c, sehingga
( 0)

koefisien b dapat dihitung menggunakan Persamaan (18).


y − y x −x
b i= i +1 i − i +1 i ( 2 ci + ci +1 ) ( 0¿
xi +1−x i 3
Dengan menggunakan vektor C yang sudah diketahui, koefisien d dapat
dihitung menggunakan Persamaan (19).
c +c
d i= i +1 i
3(x i+1 −xi )
( 0)
Algoritma Interpolasi Spline Kubik
1) Tentukan set titik berpasangan ( x , y ).
2) Tentukan koefisien a i menggunakan Persamaan (9), dimana a i= y i.
3) Hitung elemen diagonal bawah (l i ) dan elemen diagonal atas (ui )
matriks tridiagonal menggunakan Persamaan (14), dimana u0 =l n=0.
4) Hitung elemen diagonal utama (m i ) menggunakan Persamaan (15),
dimana d 0=d n=1.
5) Hitung elemen vektor V  menggunakan Persamaan (16),
dimana  v 0=v n =0.
6) Susunlah elemen l i, ui , dan m i menjadi matriks tridiagonal  A.
7) Deifinisikan persamaan linier seperti pada Persamaan (13)
8) Selesaikan sistem persamaan linier pada Persamaan (13) sehingga
diperoleh vektor C yang merupakan kumpulan koefisien c.
9) Hitung koefisien b i menggunakan Persamaan (18)
10) Hitung koefisien d i menggunakan Persamaan (19).
11) Bentuk seri persamaan polinomial menggunakan elemen koefisien a, b
, c, dan d yang telah dihitung.
12) Untuk melakukan ekstrapolasi dengan titik observasi diluar rentang titik
diketahui, gunakan persamaan polinomial yang berada pada bagian
ujung terdekat dengan nilai x yang hendak dicari nilai  y-nya.

STUDI KASUS

Contoh 1
Kecepatan ke atas roket diberikan sebagai fungsi waktu pada Tabel 1.
Tabel 1. Kecepatan sebagai fungsi waktu.

t (s) v(t ) (m/s)


0 0
10 227.04
15 362.78
20 517.35
22.5 602.97
30 901.67

Gambar 2. Grafik kecepatan vs data waktu


Tentukan nilai kecepatan pada detik menggunakan metode interpolasi langsung dan
polynomial orde satu.

Solusi
Interpolasi polynomial orde satu (disebut juga interpolasi linier), kecepatan diberikan oleh
v ( t )=a0 +a1 t
y

( x1 , y1)

f 1 (x )
( x0 , y0 )
Gambar 3. Interpolasi Linier

Kita perlu memilih yang dua titik data yang paling dekat dengan t=16 yang juga braket
t=16 untuk mengevaluasinya. Dua poin t 0=15 dan t 1 =20
Kemudian
t 0=15 , v ( t 0 ) =362 .78
t 1 =20 , v ( t 1 ) =517 .35
Memberi
v ( 15 )=a0 +a1 ( 15 )=362 .78
v ( 20 )=a0 +a1 ( 20 )=517 . 35
Menulis persamaan dalam bentuk matriks, kita punya

[11 1520 ] [ aa ]=[ 362.


0

1
78
517 .35 ]
Memecahkan dua persamaan di atas
a0 =−100 .93
a1=30 . 914
Karenanya
v ( t )=a0 +a1 t
=−100 . 93+30 .914 t , 15≤t≤20

Contoh 2
Kecepatan ke atas roket diberikan sebagai fungsi waktu pada Tabel 2.
Tabel 2. Kecepatan sebagai fungsi waktu.
t (s) v(t ) (m/s)
0 0
10 227.04
15 362.78
20 517.35
22.5 602.97
30 901.67
Tentukan nilai kecepatan pada t=16 detik menggunakan interpolasi polynomial orde dua
menggunakan metode polynomial berbeda terbagi Newton.

Solusi
Interpolasi kuadrat, kecepatan diberikan oleh
v (t )=b0 +b1 (t−t 0 )+b 2 (t−t 0 )(t−t 1 )
Kita perlu memilih tiga poin data yang paling dekat t=16 juga breket untuk
mengevaluasinya. Tiga poin itu
t 0=10 , t1 =15 , dan t 2=20
Kemudian
t 0=10 , v (t 0 )=227 . 04
t1 =15 , v (t 1 )=362. 78
t 2=20 , v (t 2 )=517 .35
Memberi
b0 =v (t0 ) =227 .04
v (t 1 )−v (t 0 ) 362 .78−227 . 04
b1 = =
t 1 −t0 15−10 =27. 148
v (t 2 )−v (t 1 ) v (t 1 )−v (t 0 ) 517 .35−362. 78 362. 78−227. 04
− −
t 2−t 1 t 1 −t 0 20−15 15−10
b2 = =
t 2 −t 0 20−10
=0. 37660
Karenanya
v (t )=b0 +b1 (t−t 0 )+b 2 (t−t 0 )(t−t 1 )
=227 . 04+27. 148(t−10 )+0 .37660(t−10 )(t−15), 10≤t≤20
Di t=16 ,
v (16 )=227 . 04+27. 148(16−10)+0 . 37660(16−10)(16−15) =392 .19 m/s
Jika dikembangkan
v (t )=227 .04 +27 .148 (t−10 )+0 . 37660(t−10)(t−15 ),
Kita mendapatkan
2
v(t )=12. 05+17 . 733t +0 .37660 t , 10≤t≤20
Ini adalah hasil yang sama diperoleh dengan metode langsung.

Contoh 3
Kecepatan ke atas roket diberikan sebagai fungsi waktu pada Tabel 3
Tabel 3. Kecepatan sebagai fungsi waktu.

t (s) v(t ) (m/s)


0 0
10 227.04
15 362.78
20 517.35
22.5 602.97
30 901.67
a) Tentukan nilai dari kecepatan di t=16 detik dengan urutan ketiga interpolasi
polynomial menggunakan Newton’s Divided Difference Polinomial Metdhod
b) Dengan menggunakan interpolasi polynomial orde tiga untuk kecepatan, tentukan jarak
yang ditempuh roket dari t=11 s ke t=16 s
c) Dengan menggunakan interpolasi polynomial orde tiga untuk kecepatan, tentukan
percepatan roket pada t=16 s
Solusi
a) Untuk polynomial orde tiga, kecepatan diberikan oleh
v (t )=b0 +b1 (t−t 0 )+b 2 (t−t 0 )(t−t 1 )+b3 (t−t 0 )(t−t 1 )(t−t2 )
Kita perlu memilih yang empat poin data yang paling dekat dengan t=16 yang juga
braket t=16 untuk mengevaluasinya. Empat poin data
t 0=10 , t1 =15 , t 2=20 ,

dan 3
t =22 . 5
Kemudian
t 0=10 , v (t 0 )=227 . 04
t1 =15 , v (t 1 )=362. 78
t 2=20 , v (t 2 )=517 .35
t3 =22 . 5, v(t 3 )=602 . 97
Berikan
b0 =v [t 0 ] =v(t0 ) =227 .04
v (t 1 )−v (t 0 ) 362 .78−227 . 04
= =
b1 =v[t 1 ,t 0 ] t 1 −t 0 15−10 =27. 148
v[ t ,t ]−v [ t 1 ,t 0 ]
= 2 1
b2 =v[t 2 , t 1 , t 0 ] t 2 −t0
v (t 2 )−v (t 1 ) 517 . 35−362 .78
v [ t 2 ,t 1 ]= =
t 2−t 1 20−15 =30 .914
v[ t1 ,t 0 ]=27 .148
v[ t 2 ,t 1 ]−v [ t1 , t 0 ] 30 . 914−27 .148
b2 = =
t 2 −t0 20−10 =0. 37660
v[ t 3 ,t 2 , t 1 ]−v [t 2 , t1 ,t 0 ]
=
b3 =v[t 3 ,t 2 ,t 1 , t 0 ] t3 −t 0
v [t 3 , t 2 ]−v [t 2 , t 1 ]
v [ t 3 ,t 2 , t 1 ]=
t 3 −t 1
v (t3 )−v (t 2 ) 602 . 97−517 . 35
v [ t3 ,t 2 ]= =
t 3 −t2 22 .5−20 =34. 248
v (t 2 )−v (t 1 ) 517 . 35−362 .78
v [ t 2 ,t 1 ]= =
t 2−t 1 20−15 =30 .914
v [t 3 , t 2 ]−v [t 2 , t 1 ] 34 . 248−30. 914
v [ t 3 ,t 2 , t 1 ]= =
t 3 −t 1 22 .5−15 =0. 44453
v[ t 2 ,t 1 , t 0 ]=0. 37660
v [ t 3 ,t 2 , t 1 ]−v [t 2 , t1 ,t 0 ] 0 . 44453−0. 37660
b3 = =
t3 −t 0 22 .5−10 =5 . 4347×10−3
Karenanya
v (t )=b0 +b1 (t−t 0 )+b 2 (t−t 0 )(t−t 1 )+b3 (t−t 0 )(t−t 1 )(t−t2 )
=227 .04+27. 148(t−10)+0.37660(t−10)(t−15)
+5.5347×10−3 (t−10 )(t−15)(t−20)
Di t=16,
v(16)=227 .04+27. 148(16−10)+0 . 37660(16−10)(16−15)
+5 . 5347×10−3 (16−10)(16−15)(16−20 )
=392 . 06 m/s
b) Jarak antara roket dan dapat dihitung dari polynomial interpolasi
v (t )=227 .04 +27 .148 (t−10 )+0.37660(t−10)(t−15 )
+5.5347×10−3 (t−10 )(t−15)(t−20)
2 3
=−4 . 2541+21.265 t+0 .13204 t +0 .0054347t , 10≤t≤22 . 5
Perhatikan bahwa polynomial valid antara t=10 dan t=22. 5 dan karenanya
mencakup batas t=11 dan t=16
Begitu
16
s (16 )−s ( 11 ) =∫ v ( t ) dt
11
16
=∫ (−4 . 2541+21. 265 t+0 . 13204 t 2 +0 . 0054347t 3 )dt
11
16
t2 t3 t4
[
= −4 . 2541t +21 .265 +0 . 13204 +0 . 0054347
2 3 4 ]
11
=1605 m
c) Percepatan pada t=16 diberikan oleh
d
a(16 )= v (t )|t=16
dt
d
a(t )= v(t )
dt =21 .265+ 0 .26408 t+ 0 .016304 t 2
a(16 )=21 . 265+0.26408(16 )+0 . 016304(16 )2 =29 . 664 m/s2

Listing MATLAB-Newton Backward


clc;
close all;
x= [1:1:8]; % Write the values of independent variable x.
y = [1 8 27 64 125 216 343 512]; % Write the values of
dependent variable y.
n=length(x); % Number of terms of X or Y
d=zeros(n-1);
h=x(2)-x(1); %step length
xn=input('Enter the value of x where we want to find the value
of f(x): ');
u=(xn-x(n))/h;
for i=2:n %Calculation of first forward differences
d(i-1,1)=y(i)-y(i-1);
end
for k=2:n-1 %Calculation of second and rest forward
differences
for i=1:n-k
d(i,k)= d(i+1,k-1)-d(i,k-1);
end
end
disp('The forward difference table is:')
d
s=y(n); t=u; m=n-1;
for k=1:n-1 %Calculation of result
s=s+t*d(m,k);
t=(u+k)/(k+1)*t;
m=m-1;
end
fprintf('The required value is f(%f)= %5.5f',xn,s);
%Formula: f(xn)=y(n)+u*(del)y(1)+u*(u+1)/2!(del)^2y(1)+....
+u*(u+1)..(u+n-1)/n!(del)^ny(1)
%where h=x(2)-x(1)=step length and u=(xn-x(n))/h. Hree del:=
backward
%difference operator.

Output MATLAB

Listing MATLAB-Newton Forward


clc;
close all;
x= [1:1:8]; % Write the values of independent variable x.
y = [1 8 27 64 125 216 343 512]; % Write the values of
dependent variable y.
n=length(x); % Number of terms of X or Y
d=zeros(n-1);
h=x(2)-x(1); %step length
x0=input('Enter the value of x where we want to find the value
of f(x): ');
u=(x0-x(1))/h;
for i=2:n %Calculation of first forward differences
d(i-1,1)=y(i)-y(i-1);
end
for k=2:n-1 %Calculation of second and rest forward
differences
for i=1:n-k
d(i,k)= d(i+1,k-1)-d(i,k-1);
end
end
disp('The forward difference table is:')
d
s=y(1); t=u;
for k=1:n-1 %Calculation of result
s=s+t*d(1,k);
t=(u-k)/(k+1)*t;
end
fprintf('The required value is f(%f)= %5.5f',x0,s);

%Formula: f(x0)=y(1)+u*(del)y(1)+u*(u-1)/2!(del)^2y(1)+....
+u*(u-1)..(u-n+1)/n!(del)^ny(1)
%where h=x(2)-x(1)=step length and u=(x0-x(1))/h. Hree del:=
forward
%difference operator.

Output MATLAB

Contoh 4
Kecepatan ke atas roket diberikan sebagai fungsi waktu pada Tabel 5 (Gambar 12)
Tabel 5 Kecepatan sebagai fungsi waktu
t (s) v(t ) (m/s)
0 0
10 227.04
15 362.78
20 517.35
22.5 602.97
30 901.67
Gambar 12. Grafik kecepatan vs waktu

Tentukan nilai kecepatan pada t=16 detik menggunakan spline linier

Solusi
Kita perlu memilih dua titik data yang paling dekat dengan t=16 yang juga braket
t=16 untuk mengevaluasinya. Kedua poin tersebut adalah t 0=15 dan t 1 =20
Kemudian
t 0=15 , v(t 0 )=362 .78
t1 =20 , v(t 1 )=517 .35
Berikan
v (t 1 )−v (t0 )
v (t )=v (t 0 )+ (t−t0 )
t1 −t 0
517 . 35−362. 78
=362 .78+ (t−15 )
20−15
=362. 78+30 . 913(t−15) , 15≤t≤20
Di t=16 ,
v(16 )=362 .78+30. 913(16−15 ) =393.7 m/s
Listing MATLAB-Kuadrat Spline

% This code solves for quadratic interpolation


x = -5:0.5:5;
y = exp(x);
N = length(x)-1;
% The unknowns are 3*N with ao=0 "Linear Spline"
% Filling Matrix from point matching
V = [0;zeros(2*N,1);zeros(N-1,1)];
Z = zeros(length(V),length(V));
j=1;
f=1;
for i=2:2:2*N
Z(i,f:f+2) = [x(j)^2 x(j) 1];
V(i) = y(j);
j = j+1;
Z(i+1,f:f+2) = [x(j)^2 x(j) 1];
V(i+1) = y(j);
f = f+3;
end
% Filling Matrix from smoothing condition
j=1;
l=2;
for i=2*N+2:3*N

Z(i,j:j+1) = [2*x(l) 1];


Z(i,j+3:j+4) = [-2*x(l) -1];
j = j+3;
l = l+1;
end
% Adjusting the value of a1 to be zero "Linear Spline"
Z(1,1)=1;
% Inverting and obtaining the coeffiecients, Plotting
Coeff = Z\V;
j=1;
hold on;
for i=1:N
curve=@(l) Coeff(j)*l.^2+Coeff(j+1)*l+Coeff(j+2);
ezplot(curve,[x(i),x(i+1)]);
hndl=get(gca,'Children');
set(hndl,'LineWidth',2);
hold on
j=j+3;
end
scatter(x,y,50,'r','filled')
grid on;
xlim([min(x)-2 max(x)+2]);
ylim([min(y)-2 max(y)+2]);
xlabel('x');
ylabel('y');
title('Quadratic Spline')

Output MATLAB
B. INTEGRASI NUMERIK
1. Metode Integrasi Newton-Cotes
Metode ini adalah skema integrasi numerik yang paling sering digunakan.
Metode ini didasarkan pada penggantian suatu fungsi yang kompleks atau data
tertabulasi dengan suatu fungsi hampiran yang mudah untuk diintegrasi.
Metode integrasi Newton-Cotes secara umum merupakan metode integrasi yang
dilakukan dengan membagi area di bawah kurva suatu fungsi menjadi beberapa
panel dengan terlebih dahulu menetapkan batas atas dan batas bawah interval.
Integral atau luas area di bawah kurva ditentukan berdasarkan jumlah luas panel
yang digunakan untuk mendekati luas area di bawah kurva.
Terdapat beberapa metode yang akan dijelaskan, metode-metode tersebut
antara lain:
a. Metode Integral Riemann
b. Metode Trapezoida
c. Metode Simpson 1/3
d. Metode Simpson 3/8
a. Metode Integral Riemann
Metode integral Riemann dilakukan dengan membagi interval di bawah
kurva suatu fungsi matematik sebanyak m subinterval sama besar. Pada setiap
subinterval dibentuk persegi panjang setinggi kurva pada setiap titik tengah
persegi panjang tersebut. Area setiap subinterval diperoleh dengan mengalikan
panjang dan lebar masing-masing persegi panjang. Jumlah masing-masing area
tersebut digunakan untuk menaksir interval integral suatu fungsi dengan
interval tertentu. Fungsi proses integrasi menggunakan metode titik tengah
dapat dituliskan pada Persamaan (20).
b m

∫ f ( x ) dx ≈ ∑ f i
a i=1
( |b−a
m
| |b−a| |b−a|

2m ) m
(20)

dimana b dan a masing-masing merupakan batas atas dan bawah interval kurva


yang hendak dihitung integralnya.
Error dari metode ini dapat diestimasi menggunakan Persamaan (21).
b 3
−( b−a ) ( 2 )
∫ h ( x ) dx= f ( ξ) (20)
a 24 m2
dimana ξ merupakan nilai antara a dan b.

b. Metode Trapezoida
Pendekatan trapezoida dilakukan dengan melakukan pendekatan area
dibawah kurva fungsi  y=f (x ) dengan subinterval [ xi , xi +1 ] menggunakan
trapesium. Untuk memahami pendekatan yang digunakan pembaca dapat
memperhatikan Gambar 1.

Gambar 1: Visualisasi integragrasi numerik menggunakan metode


trapezoida.
Fungsi proses integrasi menggunakan metode trapezoida dapat
dituliskan pada Persamaan (22).
b m
( ci +1−c i ) × ( f ( c i+1 ) + f ( c i) )
∫ f ( x ) dx=mlim ∑ ( 02)
a → ∞ i =1 m
dimana
(b−a)
c i=a+ i
n
n merupakan nilai subinterval dan m merupakan jumlah panel trapesium yang
digunakan.
Error dari metode ini dapat diestimasi menggunakan Persamaan (23).
b 3
−( b−a ) ( 2 )
∫ h ( x ) dx= 2
f ( ξ) ( 23)
a 12 m
dimana ξ merupakan nilai antara a dan b.

c. Metode Simpson
Metode Simpson membagi subinterval [a , b] menjadi n subinterval,
dimana n merupakan bilangan genap. Untuk setiap pasang subinterval, luas
area di bawah fungsi f (x) ditaksir menggunakan polinomial berderajat 2.
Misalkan u< v <w merupakan titik sembarang pada suatu fungsi yang
akan dicari integralnya yang terpisah sejauh h. Untuk  x ∈[u , w] ingin
menaksir f (x) menggunakan parabola yang melalui titik ( u , f ( u ) ) ,(v , f ( v ) ),
dan ( w , f ( w ) ). Terdapat tepat 1 parabola  p(x ) yang dapat dibentuk dari ketiga
titik koordinat tersebut yang ditunjukkan melalui Persamaan (24).
( x−v)(x−w) ( x−u)( x−w) (x −u)( x −v )
p ( x ) =f ( u ) + f (v ) + f ( w) (24)
(u−v)(u−w) (v −u)(v−w) ( w−u)( w−v )
u
Sebagai taksiran luas di bawah kurva  y=f (x ) digunakan ∫ p ( x ) dx.
w
Hasil integrasi kurva Persamaan (24) disajikan pada Persamaan (25).
u

∫ p ( x ) dx= h3 (f ( u ) +4 f ( v ) + f ( w ) ) (25)
w
Sekarang asumsikan n merupakan bilangan genap, maka perlu
menambahkan taksiran untuk subinterval [ x2 i , x 2 i+2 ] untuk memperoleh
b

taksiran S pada integral ∫ f (x )dx yang disajikan pada Persamaan (26).


a
n−1 n−2
h
S ≈ ( f 0+ 4 ) ∑ f i + 2 ∑ f i + f n (26)
3 i=1,3,5 ,… i=2,4,6, …
Persamaan (26) disebut sebagai kaidah Simpson 1/3 karena terdapat
koefisien 1/3 pada bagian depan persamaan tersebut. Persamaan tersebut juga
mudah diingat mengingat pola koefisien persamaan tersebut
adalah 1,4,2,4,2 , … ,2,4,1. Namun penggunaan kaidah 1/3 Simpson
mengharuskan jumlah subinterval n genap. Kondisi tersebut jelas berbeda
dengan metode trapezoida yang tidak mensyaratkan jumlah selang.
Error dari metode Simpson 1/3 dapat dihitung menggunakan
Persamaan (27).
b 3
−( b−a ) (4 )
∫ h ( x ) dx= 180 m2 f (ξ ) (27)
a
dimana ξ merupakan nilai antara a dan b.

Algoritma Metode Simpson


1) Tentukan fungsi f (x) dan selang integrasinya [a , b].
2) Tentukan jumlah subinterval n.
b−a
3) Hitung nilai selang subinterval h, h= .
n
4) Tentukan awal integrasi  x 0=a  dan akhir  x n=b dan hitung nilai f (a) 
dan f (b).
5) Untuk x=1,2 , … , n−1
 jika ganjil, hitung: 4 × f (x)
 jika genap, hitung: 2 × f (x)
6) Jumlahkan nilai-nilai taksiran tersebut menggunakan Persamaan (26).

d. Metode Simpson 3/8


Jika pada metode Simpson 1/3 digunakan pendekatan polinomial
berderajat 2 untuk mencari luas dibawah kurva, pada metode Simpson 3/8
digunakan pendekatan polinomial berderajat 3 untuk memperoleh hasil yang
lebih baik. Bentuk umum integrasi yang digunakan disajikan pada
Persamaan (28).
b n−1 n−3
3h
∫ f ( x ) dx ≈ ( f +3 ) ∑ f +2 ∑ f i +f n (28)
a 8 0 i=1 ;i ≠3,6,9 ,…
i
i=3,6,9, …
Error dari metode ini dapat diestimasi menggunakan Persamaan (29).
b 5
−( b−a ) (5 )
∫ h ( x ) dx= 4
f (ξ) (29)
a 80 m
Algoritma Metode Simpson 3/8
1) Tentukan fungsi f (x) dan selang integrasinya [a , b].
2) Tentukan jumlah subinterval n.
b−a
3) Hitung nilai selang subinterval h, h= .
n
7) Tentukan awal integrasi  x 0=a  dan akhir  x n=b dan hitung nilai f (a) 
dan f (b).
4) Untuk x=1,2 , … , n−1,
 jika bukan kelipatan 3, hitung: 3 × f ( x)
 jika kelipatan 3, hitung: 2 × f (x)
5) Jumlahkan nilai-nilai taksiran tersebut menggunakan Persamaan (28).

2. Metode Kuadratur Gauss


Metode Newton-Cotes sangat powerful, tetapi metode tersebut memiliki dua
fitur yang kurang diinginkan. Pertama, harus menggunakan evaluasi fungsi
sejumlah n+1 untuk hasil presisi dan pada polinomial berderajat n. Hal tersebut
mungkin tampak seperti rasio yang baik, tetapi dalam praktiknya, jumlah titik
evaluasi akan sering ditingkatkan untuk memperoleh akurasi yang lebih tinggi,
namun hasil yang diperoleh juga tidak presisi. Sebagai contoh dapat melakukan
simulasi dengan memvariasikan jumlah penel yang digunakan untuk memperoleh
nilai integral sebuah fungsi. Jika diplotkan hasil yang diperoleh, grafik yang
muncul berupa garis yang berosilasi khusunya pada penggunaan polinomial
berderajat tinggi yang menunjukkan hasil yang diperoleh menjadi kurang presisi.
Kelemahan kedua, metode Newton-Cotes memerlukan fungsi terintegrasi
untuk dievaluasi pada node yang berjarak sama. Ini benar terlepas dari fungsi yang
digunakan. Setiap panel membutuhkan node dengan jarak yang sama di dalamnya.
Ini bisa menjadi masalah dengan fungsi periodik, di mana diskontinuitas periodik
dapat secara kebetulan mendarat di titik evaluasi. Jika panel Newton-Cotes dapat
menyebabkan masalah, maka dapat menggunakan integrasi Gaussian untuk
menyelesaikan integral.
Secara umum integrasi Gauss berusaha memperoleh pendekatan luas dibawah
kurva fungsi dengan memecah fungsi tersebut menjadi faktor bobot c dan f (x) 
yang merupakan polinomial pendekatannya. Integral diperoleh melalui hasil kali
dari bobot dan fungsi polinomial. Jumlah bobot dan fungsi yang digunakan
bergantung pada orde n polinomial yang akan digunakan untuk mengestimasi
integral suatu fungsi. Bentuk umum dari kaidah Gauss tersebut ditampilkan pada
Persamaan (30).
1

∫ f (x) dt ≈ c 1 f ( x 1 ) +c 2 f ( x2 ) + …+c n f ( x n ) ( 00)


−1
dimana cc merupakan faktor bobot dan xx merupakan titik evaluasi.
Nilai faktor bobot dan nilai masing-masing titik evaluasi disajikan pada
Gambar 2.
Gambar 2: Tabulasi faktor bobot, titik evaluasi dan galat pemotongan.

Fungsi yang akan dicari nilai integrannya pada umumnya tidak hanya memiliki
daerah batas [−1,1], sehingga pendekatan kuadratur Gauss tidak dapat digunakan
secara langsung pada fungsi yang tidak memiliki batas tersebut. Agar kuadratur
Gauss tetap dapat digunakan, fungsi tersebut perlu dilakukan transformasi. Proses
transformasi dituliskan pada Persamaan (31).
b 1
b−a a+b+ ( b−a ) t
∫ f ( x ) dx= 2 ∫ f
a −1
( 2 ) dt (31)

Algoritma Kuadratur Gauss-Legendre


1) Tentukan fungsi f (x) dan selang integrasinya [a , b].
2) Lakukan transformasi fungsi tersebut hingga diperoleh fungsi dengan
selang [−1,1] menggunakan Persamaan (31).
3) Tentukan orde polinomial nn yang akan digunakan.
4) Lakukan proses integrasi dengan mengalikan faktor bobot c 
dengan  f (x i) seperti yang ditujukkan pada Persamaan (30).

3. Metode Integrasi Adaptif


Integrasi adaptif menyediakan pendekatan yang berbeda untuk memperoleh
nilai intergral suatu fungsi. Salah satu prinsip utama dari analisis numerik adalah
bahwa harus berkomitmen pada semacam analisis manusia terhadap suatu masalah
sebelum mencoba menyelesaikannya secara algoritmik. Metode analisis numerik
umumnya tidak dapat menyelesaikan semua masalah dengan sangat baik. Jadi
pengetahuan terhadap masalah yang hendak diselesaikan dapat memungkinkan kita
memilih metode numerik yang lebih baik sesuai dengan masalah. Misalnya, dalam
konteks integrasi numerik, diskontinuitas pada titik akhir tidak akan cocok untuk
solusi Newton-Cotes yang bersifat tertutup.
Tentu saja, akan lebih baik jika bisa memprogram komputer untuk mempelajari
sesuatu tentang masalah, daripada melakukan itu sendiri. Metode adaptif
memberikan pendekatan untuk melakukan hal ini. Metode integrasi adaptif
memeriksa integral yang mereka operasikan dan mengubah parameter mereka
sendiri untuk meningkatkan kualitas integrasi. Algoritma adaptif yang paling
sederhana memberikan pendekatan brute force untuk peningkatan kualitas dengan
memeriksa error integrasi. Di sisi lain, jika tahu error-nya, secara teoritis bisa
memperbaiki estimasi. Di situlah batas error pada algoritma Newton-Cotes dapat
membantu.
Jika dapat menemukan sesuatu tentang error tersebut, maka dapat
menggunakan informasi itu untuk memperbaiki estimasi pada proses integrasi.
Bayangkan sedang mengintegrasikan suatu fungsi, f (x) pada batas [a , b]. Jika
menggunakan metode titik tengah (integral Riemann). Maka telah
diketahui error maksimum yang mungkin terjadi pada metode tersebut melalui
Persamaan (21). Dua pengamatan segera menjadi jelas. Terlepas dari apa
fungsi f (x) itu, atau turunan keduanya, dua perubahan dapat dilakukan pada
integrasi untuk meningkatkan kualitasnya. Pertama, error adalah proporsi terhadap
kubik dari panjang domain integrasi. Mengurangi panjang meningkatkan kualitas
dan memotong panjang menjadi dua memberikan peningkatan kualitas delapan kali
lipat. Kedua, error berbanding terbalik dengan jumlah panel m yang digunakan .
Meningkatkan panel mengurangi error dan menggandakan jumlah panel yang
disediakan dapat meeningkatkan kualitas empat kali lipat.
Untuk dapat merancang algoritma di sekitar pengamatan ini. Pertama, dapat
memperkirakan nilai integral Q 1, menggunakan aturan titik tengah 1-point. Kedua,
bisa memperkirakannya lagi menggunakan aturan titik tengah 2-point Q 2. Karena
telah menggandakan jumlah titik dalam aturan, sekarang tahu bahwa perbedaan
maksimum antara Q 1 dan Q, nilai sebenarnya dari integral, tidak lebih dari 4 kali
lebih besar dari perbedaan maksimum antara Q 2 dan Q. Jika Q2−Q  kurang dari
toleransi tertentu, maka perbedaan antara Q 1 dan Q 2 harus kurang dari tiga kali
toleransi yang sama.
Periksa perbedaan antara dua perkiraan. Jika perbedaannya lebih besar dari
toleransi, mungkin masih berada dalam toleransi, tetapi belum pasti. Jadi proses
membagi wilayah integrasi menjadi dua, dan menerapkan integrator adaptif untuk
kedua bagian, secara terpisah, menjumlahkan hasilnya akan terus dilakukan.

Algoritma Metode Riemann Adaptif


1) Tentukan fungsi f (x) dan selang integrasinya [a , b].
2) Tentukan jumlah subinterval m.
3) Jika m=1, hitung luas area di bawah kurva dengan pendekatan metode
Riemann dengan m=2.
4) Jika n>1,
 Hitung Q 1 dengan pendekatan metode Riemann dan m=1
 Hitung Q 2 dengan pendekatan metode Riemann dan m=2
5) Jika Q1−Q2 >3 × nilai toleransi,
 Perkecil mm sebanyak 1, m−1
 Perkecil nilai toleransi   menjadi setengahnya
 Bagi area integrasi menjadi dua bagian dengan menetapkan c  
sebagai batas, sehingga terdapat dua batas yaitu: [a , c ] dan [c , b ].
 Lakukan perhitungan kembali integral pada masing-masing batas
tersebut menggunakan metode Riemann dan cek
Q
apakah  1 −Q 2 >3 × nilai toleransi .
6) Jika Q1−Q2 >3 × nilai toleransi, luas integral = Q 2.

4. Metode Integrasi Romberg


Seperti halnya algoritma integrasi adaptif, integrasi Romberg adalah perluasan
yang relatif mudah dari keluarga algoritma Newton-Cotes. Keduanya bekerja
dengan menggunakan iterasi yang disempurnakan dari beberapa metode Newton-
Cotes yang mendasarinya untuk memberikan perkiraan nilai integral yang lebih
akurat. Tidak seperti proses komputasi fungsi riemann_adapint, integrasi Romberg
bukanlah pendekatan adaptif terhadap integrasi. Hal tersebut berarti metode
Romberg tidak mengubah perilakunya sendiri berdasarkan perilaku fungsi yang
akan diintegrasikan. Sebaliknya, mengeksploitasi perilaku fungsi trapesium pada
batas untuk menghasilkan estimasi integral.
Untuk memahami integrasi Romberg, harus mulai dengan implementasi
rekursif dari aturan trapesium. Jika mulai dengan suatu fungsi, T (f , m) di mana T  
adalah fungsi trapesium, f  adalah fungsi yang akan diintegrasikan, dan m adalah
jumlah panel untuk diintegrasikan, maka,
4 T ( f , m )−T (f , m/2)
S ( f , m )= (32)
3
di mana S adalah aturan Simpson. Kemudian, jika kita
mendefinisikan T ( f , 0 )=( b−a ) ( f ( b ) +f ( a ) )=2, maka fungsi rekursif kita selesai,
karena berdasarkan hubungan ini, fraksi yang diberikan dalam Persamaan (32) juga
merupakan perkiraan untuk integral.
Secara umum,
4 k I j , k−1−I j−1 ,k−1
I j , k= (33)
4 k −1
di mana  I 0,0 adalah aturan trapesium satu panel dan  I j , 0 adalah aturan trapesium
dengan panel 2 j. Dengan menggunakan fungsi-fungsi dasar ini,  I j , k dapat
ditemukan secara iteratif sebagai matriks segitiga-bawah di mana masing-masing
nilai di kolom yang bukan paling kiri adalah fungsi dari nilai di sebelah kiri dan
entri di atasnya.
Definisi rekursif ini muncul dari ekstrapolasi Richardson. Ketika diterapkan
pada algoritma trapesium, yang konvergen menuju nilai sebenarnya dari integral
sebagai m (jumlah panel) meningkat, hubungan dalam Persamaan (31) muncul.
Penting untuk dipahami bahwa pada batas ketika kk mendekati tak terhingga,
nilai  I j , k adalah nilai sejati integral. Untuk nilai yang lebih kecil dari  k, integral
Romberg masih hanya perkiraan, meskipun hasil yang diperoleh sangat bagus.

Algoritma Metode Integrasi Romberg


1) Tentukan fungsi f (x) dan selang integrasinya [a , b].
2) Tentukan jumlah subinterval m.
3) Bentuk matrik R dengan ukuran m× m yang akan menampung hasil
perhitungan.
4) Untuk  R1,1 hitung integral fungsi menggunakan metode trapezoida
dengan m=1.
5) Untuk  j=2 , … ,m dan k =1, hitung integral dengan jumlah panel m=2 j−1
6) Untuk  j=2 , … ,m dan k =2 , … ,m hitung nilai perbaikan nilai integrasi
menggunakan Persamaan (31).
7) Solusi integrasi diperoleh pada  Rm , m.

5. Metode Integrasi Monte Carlo


Nama Monte Carlo berasal dari daerah di Monako, yang terkenal karena
aktikvitas kasino dan perjudiannya. Jelas, permainan kasino yang baik tergantung
pada keacakan, seperti juga metode Monte Carlo. Nama ini menggambarkan
pentingnya keacakan dalam proses karena algoritma Monte Carlo menggunakan
generator angka acak untuk membedakan input ke suatu fungsi.
Angka acak harus berasal dari domain fungsi yang diharapkan. Selanjutnya,
fungsi itu sendiri bersifat deterministik karena untuk diberikan dua input dari
domain fungsi  x 1 dan  x 2. Jika  x 1=x 2, maka  f ( x 1 ) =f ( x 2 ). Generator angka acak
digunakan untuk menghasilkan sejumlah besar input dan fungsinya dijalankan pada
setiap input. Akhirnya, hasil yang diperoleh dikumpulkan sesuai dengan model
logika yang sesuai dengan analisis yang dilakukan.
Metode Monte Carlo dapat digunakan untuk integrasi numerik dalam jumlah
dimensi apa pun yang diberikan. Pendekatan mendasar metode ini adalah
menempatkan beberapa titik mm secara acak di atas domain untuk diintegrasikan.
Jika titik terletak “di bawah” garis fungsi, maka titik tersebut dianggap dalam area
integrasi. Jika titiknya “di atas” garis fungsi, maka titik tersebut bukan berada
diluar garis integrasi. Area di bawah perkiraan kurva adalah persentase titik di
bawah garis.
Beberapa algoritma Monte Carlo yang paling awal digunakan untuk
menemukan area di bawah kurva atau untuk memperkirakan nilai π sebuah hobi
favorit matematikawan sejak dahulu. Satu pendekatan menciptakan seperempat
lingkaran, menggunakan fungsi  f ( x )= √ 1−x 2. Melalui domain [0,1], ini adalah
fungsi dan merupakan hasil dari penyelesaian persamaan standar untuk lingkaran,
x 2+ y 2=r  untuk  y di mana r =1.
Gambar 3 menunjukkan plot fungsi ini. Selain itu, 20 titik acak dipilih. Jika
titik di bawah kurva dilambangkan dengan lingkaran hitam terisi dan titik-titik
kurva dilambangkan dengan titik bulat kosong. Dalam contoh ini, terdapat 15 titik
berada di bawah kurva, mengarah ke estimasi area luas area 0,75. Karena kurva
mewakili seperempat lingkaran, estimasi untuk π adalah 3. Meningkatkan jumlah
tes titik acak meningkatkan ketepatan estimasi dan akurasi.
Gambar 3: Visualisasi metode Monte-Carlo untuk fungsi setengah lingkaran
dengan jumlah bilangan acak 20.

Bentuk umum metode Monte-Carlo disajikan pada Persamaan (34).


b N
1
∫ f ( x )dx ≈ ( b−a ) N ∑ f (x i ) (34)
a i=1
dimana N merupakan jumlah titik yang akan dievaluasi.

Algoritma Metode Monte Carlo


1) Tentukan fungsi f (x) dan selang integrasinya [a , b].
2) Tentukan jumlah titik acak yang akan digunakan N.
3) Lakukan produksi titik acak x dengan selang [a , b] sejumlah N
4) Hitung  f (x i)
5) Hitung estimasi area menggunakan Persamaan (34)

Keunggulan metode Monte Carlo dibandingkan metode sebelumnya adalah


kemampuan untuk menangani proses integrasi berganda. Berikut adalah bentuk
umum proses integrasi bivariat menggunakan metode Monte Carlo:
N
1
∬ f ( x , y)dx ≈ V N ∑ f ( x i , y i ) (35)
i=1
dimana V  merupakan area perpotongan x− y dimana fungsi f (x , y ) diintegrasikan.

Algoritma Metode Monte Carlo Bivariat


1) Tentukan fungsi f (x) dan domain integrasinya pada masing-masing
sumbu x dan  y
2) Tentukan jumlah titik acak yang akan digunakan N.
3) Lakukan produksi titik acak x dan  y masing-masing domain sumbunya
sejumlah N
4) Hitung V =(X max− X min )×( y max − y min )
5) Hitung estimasi volume menggunakan Persamaan (35)

Karena metode Monte Carlo tidak deterministik, error integrasi Monte Carlo


tidak dibatasi dalam pengertian yang telah kita lihat sejauh ini. Namun, dapat
memperkirakan varians dari estimasi yang dihasilkan, yang berkurang dengan
meningkatnya jumlah poin:
1 σ2
Var ∑ f ()= (36)
N N
dimana σ 2=Varf () Definisi ini juga digunakan untuk proses integrasi dengan
dimensi yang lebih tinggi.
Perlu diketahui pula bahwa metode Monte Carlo hanya dapat digunakan jika
nilai terendah dari variabel bebas yang digunakan tidak negatif. Hal ini dilakukan
untuk mencegah adanya pengurangan dengan nilai negatif sehingga hasil integrasi
jauh lebih besar dari yang seharusnya.

STUDI KASUS

Jarak vertikal yang ditempuh roket dari t=8 ke t=30 detik ditentukan oleh
30
140000
(
x=∫ 2000 ln
8
[ 140000−2100 t ] )
− 9. 8 t dt

Gunakan aturan Romberg untuk mencari jarak yang ditempuh. Gunakan 1,2,4, dan 8 segmen
hasil aturan trapesium seperti yang diberikan dalam Tabel 1

Solusi
Dari Tabel 1, niali yang dibutuhkan dari aturan asli Trapesium adalah
I 1,1 =11868
I 1,2 =11266
I 1,3 =11113
I 1,4 =11074
Dimana keempat nilai di atas sesuai dengan menggunakan 1, 2, 4, dan 8 segmen aturan
Trapesium, respektif. Untuk mendapatkan nilai ekstrapolasi urutan pertama,
I 1,2 −I 1,1 11266−11868
I 2,1 =I 1,2 + =11266+
3 3 =11065
Demikian pula
I 1,3 −I 1,2 11113−11266
I 2,2 =I 1,3 + =11113+
3 3 =11062
I 1,4 −I 1,3 11074−11113
I 2,3 =I 1,4 + =11074 +
3 3 =11061
Untuk niali ekstrapolasi orde dua
I 2,2 −I 2,1 11062−11065
I 3,1 =I 2,2 + =11062+
15 15 =11062
Demikian pula
I 2,3 −I 2,2 11061−11062
I 3,2 =I 2,3 + =11061+
15 15 =11061
Untuk nilai ekstrapolasi urutan ketiga,
I 3,2 −I 3,1 11061−11062
I 4,1=I 3,2 + =11061+
63 63 =11061 m
Tabel 3 menunjukkan semakin meningkat nilai yang benar dalam grafik pohon.

Tabel 3. Peningkatan perkiraan nilai suatu terpisahkan menggunakan integrasi Romberg


First Order Second Order Third Order
1-segment 11868
1106568
2-segment 11266 11062868
1106268 11061868
4-segment 11113 11061868
11061868
8-segment 11074

Listing MATLAB-Integrasi Romberg


clc
clear all
% f(x), the function to integrate
f= @(x) 2000*log(1400/21./x)-9.8*x ;
% a, the lower limit of integration
a=8 ;
% b, the upper limit of integration
b=10 ;
% n, the maximum number of segments
n=2^3 ;
% Displays what inputs are being used
disp(sprintf('\n\n********************************Input
Data**********************************\n'))
disp(sprintf(' f(x), integrand function'))
disp(sprintf(' a = %g, lower limit of integration ',a))
disp(sprintf(' b = %g, upper limit of integration ',b))
disp(sprintf(' n = %g, number of subdivisions, needs to be
in powers of 2',n))
format short g

% The begins the simulation of the method


disp(sprintf('\n*******************************Simulation*****
****************************\n'))
sum=0 ;
disp('The true error of the approximation can be improved by
the following formula')
disp(' ')
disp(' I(k,j) = I(k-1,j+1) + [I(k-1,j+1) - I(k-1,j)] /
[4^(k-1) - 1]')
disp(' ')

nstep = floor(log2(n))+1 ;

% Begin by obtaining the trapezoidal approximation


disp('1) Begin by obtaining the trapezoidal rule
approximations')
disp(' ')

% The following is the trapezoidal rule for varying number of


segments
for i=1:nstep

I(1,i)=0.5*(f(a)+f(b)) ;
h=(b-a)/(2^(i-1)) ;
for j=1:2^(i-1)-1
I(1,i)=I(1,i)+f(a+j*h) ;
end
I(1,i)=h*I(1,i) ;
disp(sprintf(' %i Segment Trap, I(1,%i) = %g',2^(i-
1),i,I(1,i)))

end

% Now use the error improvement to reduce error


disp(' ')
disp('2) Use the error improvement formula recursively to
reduce error.')
disp(' ')

% Iterative Improvements using Romberg Method


index = nstep-1;
for k = [2:nstep]
for j = [1:index]

I(k,j)=I(k-1,j+1) + (I(k-1,j+1)-I(k-1,j))/(4^(k-1)-1) ;
disp(sprintf(' I(%i,%i) = I(%i,%i) + (I(%i,%i) - I(%i,
%i))/%g',k,j,k-1,j+1,k-1,j+1,k-1,j,4^(k-1)-1))
disp(sprintf(' = %g + (%g - %g)/%g',I(k-
1,j+1),I(k-1,j+1),I(k-1,j),4^(k-1)-1))
disp(sprintf(' = %g',I(k,j)))
disp(' ')

end
index = index - 1 ;
end

approx = I(nstep,1) ;

% Display results
disp(sprintf('\n\n**************************Results***********
*****************'))

% The following finds what is called the 'Exact' solution


exact = quad(f,a,b) ;

disp(sprintf('\n Approximate = %g',approx))


disp(sprintf(' Exact = %g',exact))
disp(sprintf('\n True Error = Exact - Approximate'))
disp(sprintf(' = %g - %g',exact,approx))
disp(sprintf(' = %g',exact-approx))
disp(sprintf('\n Absolute Relative True Error Percentage'))
disp(sprintf(' = | ( Exact - Approximate ) /
Exact | * 100'))
disp(sprintf(' = | %g / %g | * 100',exact-
approx,exact))
disp(sprintf(' = %g\n\n',abs( (exact-
approx)/exact )*100))

Output MATLAB
Listing MATLAB-Integrasi Simpson
clc
clf
clear all
% f(x), the function to integrate
f= @(x) 2000*log(1400/21./x)-9.8*x ;
% a, the lower limit of integration
a=8 ;
% b, the upper limit of integration
b=12 ;
% n, the number of segments. Note that this number must be
even.
n=12 ;
% Displays what inputs will be used
disp(sprintf('\n\n********************************Input
Data**********************************\n'))
disp(sprintf(' f(x), integrand function'))
disp(sprintf(' a = %g, lower limit of integration ',a))
disp(sprintf(' b = %g, upper limit of integration ',b))
disp(sprintf(' n = %g, number of subdivisions (must be
even)',n))
format short g

disp(sprintf('\nFor this simulation, the following parameter


is constant.\n'))
% calculate the spacing parameter.
h=(b-a)/n ;
disp(sprintf(' h = ( b - a ) / n '))
disp(sprintf(' = ( %g - %g ) / %g ',b,a,n))
disp(sprintf(' = %g',h))

% This begins the simulation of the method


disp(sprintf('\n*******************************Simulation*****
****************************\n'))
sum=0 ;
disp('The approximation is expressed as')
disp(' ')
disp(' approx = h/3 * ( f(a) + 4*Sum(i=1,n-1,odd) f(a+i*h)
+')
disp(' 2*Sum(i=2,n-2,even)
f(a+i*h) + f(b) )')

% Sum the odd function values and multiply by 4


disp(' ')
disp('1) Begin summing odd function values at points between a
and b not')
disp(' including a and b. Multiply this by 4.')
disp(' ')
disp(' 4*Sum (i=1,n-1,odd) f(a+i*h)')
disp(' ')
% sum of functions evaluated at odd spacings
for i=1:2:n-3
disp(sprintf(' f(%g)',a+i*h))
end
disp(sprintf(' + f(%g)',a+(n-1)*h))
disp(sprintf(' ------------'))
for i=1:2:n-3
sum=sum+f(a+i*h) ;
disp(sprintf(' %g',f(a+i*h)))
end
sum=sum+f(a+(n-1)*h) ;
disp(sprintf(' + %g',f(a+(n-1)*h)))
disp(sprintf(' ------------'))
disp(sprintf(' 4* %g = %g\n',sum,4*sum))
sum=4*sum ;
% Sum the even function values, and multiply by 2
sum2=0 ;
disp(' ')
disp('2) Continue by summing even function values at points
between a and')
disp(' b not including a and b. Multiply this sum by 2.')
disp(' ')
disp(' 2*Sum (i=1,n-1,even) f(a+i*h)')
disp(' ')
for i=2:2:n-4
disp(sprintf(' f(%g)',a+i*h))
end
disp(sprintf(' + f(%g)',a+(n-2)*h))
disp(sprintf(' ------------'))
% sum of functions evaluated at even spacings
for i=2:2:n-4
sum2=sum2+f(a+i*h) ;
disp(sprintf(' %g',f(a+i*h)))
end
sum2=sum2+f(a+(n-2)*h) ;
disp(sprintf(' + %g',f(a+(n-2)*h)))
disp(sprintf(' ------------'))
disp(sprintf(' 2* %g = %g\n',sum2,2*sum2))
sum2=2*sum2 ;

% Add the two sumns


disp('3) Add f(a) and f(b) to the sums from 1) and 2)')
disp(' ')
disp(sprintf(' %g + %g + %g + %g =
%g',f(a),sum,sum2,f(b),f(a)+sum+sum2+f(b)))
sum=sum+sum2+f(a)+f(b) ;

% Then multiply by h/3


disp(' ')
disp('4) Multiply this by h/3 to get the approximation for the
integral.')
disp(' ')
disp(sprintf(' approx = h/3 * %g',sum))
disp(sprintf(' approx = %g * %g',h/3,sum))
approx=h/3*sum ;
disp(sprintf(' approx = %g',approx))

% Display the results


disp(sprintf('\n\n**************************Results***********
*****************'))
% The following finds what is called the 'Exact' solution
exact = quad(f,a,b) ;

disp(sprintf('\n Approximate = %g',approx))


disp(sprintf(' Exact = %g',exact))
disp(sprintf('\n True Error = Exact - Approximate'))
disp(sprintf(' = %g - %g',exact,approx))
disp(sprintf(' = %g',exact-approx))
disp(sprintf('\n Absolute Relative True Error Percentage'))
disp(sprintf(' = | ( Exact - Approximate ) /
Exact | * 100'))
disp(sprintf(' = | %g / %g | * 100',exact-
approx,exact))
disp(sprintf(' = %g',abs( (exact-approx)/exact )
*100))

disp(sprintf('\nThe Simpson 1/3rd rule can be more accurate if


we made our'))
disp(sprintf('segment size smaller (that is, increasing the
number of segments).\n\n'))

% The following code sets up the graphical depiction of the


method.
x(1)=a ;
y(1)=f(a) ;
hold on
for i=1:n
x(i+1)=a+i*h ;
y(i+1)=f(x(i+1)) ;
end
% polyfit is used to fit quadratics to each interval of 3
points.
% Simpson's rule is equivalent to these approximations
integrated.
for i=1:2:n
bg = i ;
ed = i + 2 ;
coeffs = polyfit(x(bg:ed), y(bg:ed), 2);
poly_x1 = [x(bg):(x(ed) - x(bg))/1000:x(ed)];
poly_y1 = coeffs(1)*poly_x1.^2 + coeffs(2)*poly_x1 +
coeffs(3);
poly_x1 = [poly_x1(1) poly_x1 poly_x1(end)];
poly_y1 = [0 poly_y1 0];
fill(poly_x1, poly_y1, 'y')
end
xrange=a:(b-a)/1000:b;
plot(xrange,f(xrange),'k','Linewidth',2)
title('Integrand function and Graphical Depiction of
Simpson''s 1/3rd Rule')

Output MATLAB
Listing MATLAB-Integrasi Gauss-Kuadrat
clc
clear all
% f(x), the function to integrate
f= @(x) 2000*log(1400/21./x)-9.8*x ;
% a, the lower limit of integration
a=8 ;
% b, the upper limit of integration
b=12 ;
% n, the maximum number of Gauss points, 1-10
n=3 ;

% Displays what inputs are being used


disp(sprintf('\n\n********************************Input
Data**********************************\n'))
disp(sprintf(' f(x), integrand function'))
disp(sprintf(' a = %g, lower limit of integration ',a))
disp(sprintf(' b = %g, upper limit of integration ',b))
disp(sprintf(' n = %g, number of Gauss Points, 1-10',n))
format short g

% Setup Gaussian Coefficients and Evaluation Points


x_values = zeros(10,10) ;
c_values = zeros(10,10) ;

i=1 ;
x_values(i,1) = 0.0 ;
c_values(i,1) = 2.0 ;
i=2 ;
x_values(i,1) = -0.5773502691896260 ;
x_values(i,2) = -x_values(i,1) ;
c_values(i,1) = 1.0 ;
c_values(i,2) = 1.0 ;

i=3 ;
x_values(i,1) = -0.7745966692414830 ;
x_values(i,2) = 0.0 ;
x_values(i,3) = -x_values(i,1) ;
c_values(i,1) = 0.5555555555555560 ;
c_values(i,2) = 0.8888888888888890 ;
c_values(i,3) =c_values(i,1) ;

i=4 ;
x_values(i,1) = -0.8611363115940530 ;
x_values(i,2) = -0.3399810435848560 ;
x_values(i,3) = -x_values(i,2) ;
x_values(i,4) = -x_values(i,1) ;
c_values(i,1) = 0.3478548451374540 ;
c_values(i,2) = 0.6521451548625460 ;
c_values(i,3) =c_values(i,2) ;
c_values(i,4) =c_values(i,1) ;

i=5 ;
x_values(i,1) = -0.9061798459386640 ;
x_values(i,2) = -0.5384693101056830 ;
x_values(i,3) = 0.0 ;
x_values(i,4) = -x_values(i,2) ;
x_values(i,5) = -x_values(i,1) ;
c_values(i,1) = 0.2369368850561890 ;
c_values(i,2) = 0.4786386704993660 ;
c_values(i,3) = 0.5688888888888890 ;
c_values(i,4) =c_values(i,2) ;
c_values(i,5) =c_values(i,1) ;

i=6 ;
x_values(i,1) = -.9324695142032520 ;
x_values(i,2) = -.6612093864662650 ;
x_values(i,3) = -.2386191860831970 ;
x_values(i,4) = -x_values(i,3) ;
x_values(i,5) = -x_values(i,2) ;
x_values(i,6) = -x_values(i,1) ;
c_values(i,1) = 0.1713244923791700 ;
c_values(i,2) = 0.3607615730481390 ;
c_values(i,3) = 0.4679139345726910 ;
c_values(i,4) =c_values(i,3) ;
c_values(i,5) =c_values(i,2) ;
c_values(i,6) =c_values(i,1) ;

i=7 ;
x_values(i,1) = -0.9491079123427590 ;
x_values(i,2) = -0.7415311855993940 ;
x_values(i,3) = -0.4058451513773970 ;
x_values(i,4) = 0.0 ;
x_values(i,5) = -x_values(i,3) ;
x_values(i,6) = -x_values(i,2) ;
x_values(i,7) = -x_values(i,1) ;
c_values(i,1) = 0.1294849661688700 ;
c_values(i,2) = 0.2797053914892770 ;
c_values(i,3) = 0.3818300505051190 ;
c_values(i,4) = 0.4179591836734690 ;
c_values(i,5) =c_values(i,3) ;
c_values(i,6) =c_values(i,2) ;
c_values(i,7) =c_values(i,1) ;

i=8 ;
x_values(i,1) = -0.9602898564975360 ;
x_values(i,2) = -0.7966664774136270 ;
x_values(i,3) = -0.5255324099163290 ;
x_values(i,4) = -0.1834346424956500 ;
x_values(i,5) = -x_values(i,4) ;
x_values(i,6) = -x_values(i,3) ;
x_values(i,7) = -x_values(i,2) ;
x_values(i,8) = -x_values(i,1) ;
c_values(i,1) = 0.1012285362903760 ;
c_values(i,2) = 0.2223810344533740 ;
c_values(i,3) = 0.3137066458778870 ;
c_values(i,4) = 0.3626837833783620 ;
c_values(i,5) =c_values(i,4) ;
c_values(i,6) =c_values(i,3) ;
c_values(i,7) =c_values(i,2) ;
c_values(i,8) =c_values(i,1) ;

i=9 ;
x_values(i,1) = -0.9681602395076260 ;
x_values(i,2) = -0.8360311073266360 ;
x_values(i,4) = -0.6133714327005900 ;
x_values(i,4) = -0.3242534234038090 ;
x_values(i,5) = 0.0 ;
x_values(i,6) = -x_values(i,4) ;
x_values(i,7) = -x_values(i,3) ;
x_values(i,8) = -x_values(i,2) ;
x_values(i,9) = -x_values(i,1) ;
c_values(i,1) = 0.0812743883615740 ;
c_values(i,2) = 0.1806481606948570 ;
c_values(i,3) = 0.2606106964029350 ;
c_values(i,4) = 0.3123470770400030 ;
c_values(i,5) = 0.3302393550012600 ;
c_values(i,6) =c_values(i,4) ;
c_values(i,7) =c_values(i,3) ;
c_values(i,8) =c_values(i,2) ;
c_values(i,9) =c_values(i,1) ;

i=10 ;
x_values(i,1) = -0.9739065285171720 ;
x_values(i,2) = -0.8650633666889850 ;
x_values(i,3) = -0.6794095682990240 ;
x_values(i,4) = -0.4333953941292470 ;
x_values(i,5) = -0.1488743389816310 ;
x_values(i,6) = -x_values(i,5) ;
x_values(i,7) = -x_values(i,4) ;
x_values(i,8) = -x_values(i,3) ;
x_values(i,9) = -x_values(i,2) ;
x_values(i,10) = -x_values(i,1) ;
c_values(i,1) = 0.0666713443086880 ;
c_values(i,2) = 0.1494513491505810 ;
c_values(i,3) = 0.2190863625159820 ;
c_values(i,4) = 0.2692667193099960 ;
c_values(i,5) = 0.2955242247147530 ;
c_values(i,6) = c_values(i,5) ;
c_values(i,7) = c_values(i,4) ;
c_values(i,8) = c_values(i,3) ;
c_values(i,9) = c_values(i,2) ;
c_values(i,10) = c_values(i,1) ;

% simulation of the steps needed to perform the method begins


here
disp(sprintf('\n*******************************Simulation********
*************************\n'))

% First do a lookup of the weights and evaluation locations


disp('1) Lookup Gauss point constants and evaluation points from
the table.')
disp(' ')
disp(sprintf(' Evaluation Locations'))

% Used to display the gauss points and their weights


for i=1:n
disp(sprintf(' x%i=%1.15f',i,x_values(n,i)))
end
disp(' ')
disp(sprintf(' Evaluation Constants'))
for i=1:n
disp(sprintf(' c%i=%1.15f',i,c_values(n,i)))
end

% Now transform the evaluation points to fit your interval


disp(' ')
disp('2) The evaluation points are definted for the interval [-
1,1]. Transform them')
disp(' to fit [a,b]. This is done by the following formula')
disp(' ')
disp(' xnew = (b-a)/2 * x + (b+a)/2')
disp(' ')
disp(sprintf(' Transformed Evaluation Locations'))
% Transform the locations
for i=1:n
xv(i)=(b-a)/2*x_values(n,i)+(b+a)/2 ;
disp(sprintf(' x%i=%1.15f',i,xv(i)))
end

% Apply the Gaussian procedure


disp(' ')
disp('3) The approximation is given as')
disp(' ')
disp(' approx = sum(i=1,n) c(i)*f(x(i))')

approx = 0 ;
disp(' ')

% approximation via Gaussian integration


for i=1:n-1
approx = approx + c_values(n,i)*f(xv(i)) ;
disp(sprintf(' %1.15f * %g',c_values(n,i),f(xv(i))))
end
approx = approx + c_values(n,n)*f(xv(n)) ;
disp(sprintf(' + %1.15f * %g',c_values(n,n),f(xv(n))))
disp(sprintf(' ----------------------------'))
disp(sprintf(' %g',approx))

% the result must be scaled to fit the interval also


disp(' ')
disp('4) The approximation must also be transformed to fit the
[a,b] interval.')
disp(' ')
disp(' approx = (b-a)/2 * approx')
disp(sprintf(' = %g * %g',(b-a)/2,approx))

% also transform the approximation


approx = (b-a)/2 * approx ;
disp(sprintf(' = %g',approx))

% Display results section


disp(sprintf('\n\n**************************Results**************
**************'))

% The following finds what is called the 'Exact' solution


exact = quad(f,a,b) ;

disp(sprintf('\n Approximate = %g',approx))


disp(sprintf(' Exact = %g',exact))
disp(sprintf('\n True Error = Exact - Approximate'))
disp(sprintf(' = %g - %g',exact,approx))
disp(sprintf(' = %g',exact-approx))
disp(sprintf('\n Absolute Relative True Error Percentage'))
disp(sprintf(' = | ( Exact - Approximate ) / Exact |
* 100'))
disp(sprintf(' = | %g / %g | * 100',exact-
approx,exact))
disp(sprintf(' = %g\n\n',abs( (exact-approx)/exact )
*100))

Output MATLAB
MENGGUNAKAN PYTHON
2

1. ∫ x dx=2
0

Penyelesaian :

Integrasi menggunakan aturan trapesium

for y=x, in limit 0 to 2


import numpy as np
a=0.0
b=2.0
N=1000; # N is the no of points
h=(b-a)/N
x=np.linspace(a,b,N)
y=x; # this is the given function y=f(x)
f=0.0
for k in range(len(x)-1):
f+=0.5*((x[k+1]-x[k])*(y[k+1]+y[k]))
print (f)
2.0000000000000004
π

2. ∫ sin x dx=2
0

Penyelesaian :

Integrasi menggunakan aturan trapezium

for y=sin(x) in the limit 0 to pi


import numpy as np
a=0.0
b=np.pi
N=1000; # N is the no of points
h=(b-a)/N
x=np.linspace(a,b,N)
y=np.sin(x); # this is the given function y=f(x)
f=0.0
for k in range(len(x)-1):
f+=0.5*((x[k+1]-x[k])*(y[k+1]+y[k]))
print (f)
1.9999983517708528

3. Penyelesaian :

Integrasi menggunakan aturan pyhton inbuilt

import numpy as np
from scipy.integrate import simps, romb
a=0.0
b=2.0
N=100
h=(b-a)/N
x=np.linspace(a,b,N)
y=x
trap=np.trapz(y,x)
print(trap)
2.0

Anda mungkin juga menyukai