Professional Documents
Culture Documents
Imam Fachruddin
(Departemen Fisika, Universitas Indonesia)
Daftar Pustaka:
• P. L. DeVries, A First Course in Computational Physics (John Wiley &
Sons, Inc., New York, 1994)
• W. H. Press, et. al., Numerical Recipes in Fortran 77, 2nd Ed. (Cambridge
University Press, New York, 1992)
(online / free download: http://www.nrbook.com/a/bookfpdf.php)
Isi
• akar fungsi
• solusi sistem persamaan linear
• fitting dengan least square
• interpolasi
• integrasi
• persamaan differensial
Akar Fungsi
f(x) = 0 x=?
1
Contoh: x- =0 x2 = 1 x = 1 dan -1
x
x = r cos (ωt) = vt
r
lampu
gambar 1 gambar 2
ω cos (t) = t
celah
sensor
plat
v ?
Plot cos(x) dan x:
Grafik ini
menunjukkan
bahwa cos(x) = x
pada x sedikit
kurang dari 0.75.
Prinsip: Kurung akar fungsi di antara dua batas, lalu paruh batas itu
terus menerus sampai batas itu sedemikian sempit dan dengan
demikian lokasi akar fungsi diketahui dengan keakuratan tertentu.
Langkah:
1. Perkirakan akar fungsi (bisa akar fungsi
dengan cara memplot fungsi).
2. Tentukan batas awal yang
mengurung akar fungsi.
a df e c b
3. Belah dua daerah berisi akar fungsi
itu.
4. Tentukan daerah yang berisi akar
fungsi. Batas e, f atau
nilai di
5. Ulangi langkah 3 dan 4 sampai tengahnya bisa
dianggap cukup. dipilih sebagai
6. Tentukan akar fungsi. akar fungsi.
• Menentukan daerah yang berisi akar fungsi:
a c b
Jika z merupakan akar fungsi, maka
f(x < z) dan f(x > z) saling berbeda f(x)
tanda.
f(a)*f(c) negatif, berarti di antara a & c x
z
ada akar fungsi.
f(b)*f(c) positif, berarti di antara b & c
tidak ada akar fungsi
Dalam perhitungan numerik, nilai sebenarnya justru sering tidak diketahui, yang
didapat hanya perkiraan terbaik. Karena perkiraan langkah berikut dianggap lebih
akurat, yaitu lebih mendekati nilai sebenarnya, maka kesalahan yang dihitung
yaitu:
Prinsip: Buat garis singgung kurva f(x) di titik di sekitar akar fungsi.
Titik tempat garis singgung itu memotong garis nol ditentukan
sebagai akar fungsi.
x
a p(x) = garis singgung kurva
f(x) di titik f(a)
akar fungsi sebenarnya
f(x)
c
x
a
p(x)
f(a)
p(c) = 0 c=a−
f'(a)
Langkah: f(x)
1. Perkirakan akar fungsi.
c
2. Buat garis singgung pada titik x
sesuai akar fungsi yang a
diperkirakan itu, lalu cari
titik potongnya dengan garis akar fungsi
nol. sebenarnya
3. Titik potong itu merupakan
perkiraan akar fungsi baru.
4. Ulangi langkah 2 dan 3 sampai
dianggap cukup. f(x)
5. Titik potong garis nol dan a
garis singgung kurva yang
x
terakhir dinyatakan sebagai c
akar fungsi. f(a)
c=a−
f'(a)
1
f(x)
Contoh perkiraan akar
fungsi awal yang baik
perkiraan akar fungsi x
makin mendekati akar
fungsi sebenarnya.
1
f(x)
Contoh perkiraan akar
fungsi awal yang buruk
perkiraan akar fungsi x
makin menjauhi akar
fungsi sebenarnya.
2
Menghitung akar fungsi dengan metode Newton-Raphson:
f(xi )
xi+1 = xi − (i = 0, 1, 2, ...; x0 = a )
f'(xi )
xi − xi+1
∆ rel =
xi+1
akar fungsi
a b
x1
x2
x3
x4
ε1 = x2 − x1 , ε2 = x3 − x2 , ε3 = x4 − x3
ε2 = 21 ε1 , ε3 = 21 ε2
xj = ?
Soal: 2x − 3y + 2z = −6 (1)
3 persamaan dan
− x + 2y − 3z = 2 (2) 3 unknown
x+ y− z =0 (3)
Jawab: 2x − 3y + 2z = −6 (1)
eliminasi x:
0.5y − 2z = −1 (2) pers. (2) + 0.5 pers. (1)
2.5y − 2z = 3 (3) pers. (3) – 0.5 pers. (1)
2x − 3y + 2z = −6 (1)
eliminasi y:
0.5y − 2z = −1 (2) pers. (3) – 5 pers. (2)
8z = 8 (3)
z =1
substitusi mundur:
− 1 + 2z pers. (3) mencari z
y= =2
0.5 pers. (2) mencari y
− 6 + 3y − 2z pers. (1) mencari x
x= = −1
2
Dalam bentuk matriks:
Soal: 2 −3 2 x − 6
−1 2 − 3 y = 2
1 1 − 1 z 0
Jawab: 2 −3 2 x − 6
0 0.5 − 2 y = − 1
0 2.5 − 2 z 3
2 −3 2 x − 6
0 0.5 − 2 y = − 1
0 0 8 z 8
z =1
− 1 + 2z
y= =2
0.5
− 6 + 3y − 2z
x= = −1
2
Eliminasi Gauss
Metode Eliminasi Gauss mencari solusi sebuah sistem persamaan linear
dengan cara seperti ditunjukkan pada contoh sebelum ini:
a11(0) (0)
a12 (0)
a13 ⋯ a1n(0) x1 b1(0)
(1) (1) (1)
(1)
0 a22 a23 ⋯ a2n x2 b2
(2) (2)
x3 = b3(2)
0 0 a33 ⋯ a3n
⋮ ⋮ ⋮ ⋱ ⋮ ⋮ ⋮
(n-1) (n-1)
0 0 0 ⋯ ann x
n bn
bn(n-1)
xn = (n-1)
ann
n
(n- j-1)
b
n-j − ∑a
k =n- j+1
(n- j-1)
x
n - j,k k
xn − j = (n- j-1)
(j = 1, ..., n − 1)
a n - j,n - j
A X = B atau AX = B
= =
A X = B atau AX = B
Langkah dan rumus pada metode Eliminasi Gauss berlaku sama untuk
kasus ini. Hanya saja, di sini matriks X dan B terdiri dari beberapa
kolom, bukan hanya satu.
Contoh dua sistem persamaan linear yang memiliki nilai A sama tapi B berbeda.
a11 a12 a13 ⋯ a1n x11 b11 a11 a12 a13 ⋯ a1n x12 b12
a21 a22 a23 ⋯ a2n x21 b21 a21 a22 a23 ⋯ a2n x22 b22
a a32 a33 ⋯ a3n x31 = b31 a a32 a33 ⋯ a3n x32 = b32
31 31
⋮ ⋮ ⋮ ⋱ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋱ ⋮ ⋮ ⋮
a an2 an3 ⋯ ann xn1 bn1 a an2 an3 ⋯ ann xn2 bn2
n1 n1
• rumus triangulasi:
bnr(n-1)
xnr = (n-1) (r = 1, ..., m)
ann
n
b(n- j-1)
n- j,r − ∑a
k =n - j+1
(n- j-1)
n- j,kx kr
x4 = 1 − 1 + 0.5x3 + 2.5x4
x2 = =1
2
3 + 0.5x4
x3 = =1 2 + 4x2 − x3 − 3x4
3.5 x1 = =1
2
Data Fitting dengan
Metode Least Square
f(x) Keterangan:
Sifat fitting:
tidak selalu p(xi ) = f( xi )
untuk semua xi .
x
Prinsip penentuan fungsi p(x):
j= 0
• Jumlah kuadrat selisih antara p(x) dan f(x) untuk semua titik data:
2
N N N m
S = ∑ ∆i = ∑ (f(xi ) − p(xi ) ) = ∑ f(xi ) − ∑ ajxi
2 2 j
g(x)
x
a
dg(x)
= 2ax + b
dx g(x) memiliki satu titik minimun jika a > 0 atau
2
d g(x) sebaliknya satu titik maksimum jika a < 0.
= 2a
dx 2
S merupakan fungsi kuadratik dalam aj (j = 0, …, m):
2
N m N m
j
( 2 2j 2
)
S(a0 , ..., am ) = ∑ f(xi ) − ∑ ajxi = ∑ ∑ aj xi + ... + f (xi )
i=1 j= 0 i=1 j= 0
N k
∂S(a0 , ..., am ) m
= −2∑ f(xi ) − ∑ ajxi xi
j
(k = 0, ..., m)
∂ak i=1 j= 0
∂ 2S(a0 , ..., am ) N
2
= 2∑ xi2k > 0 (k = 0, ..., m)
∂ak i=1
N k
∂S(a0 , ..., am ) m
= −2∑ f(xi ) − ∑ ajxi xi = 0
j
(k = 0, ..., m)
∂ak i=1 j= 0
m
N j+k N
N N
Definisikan: ckj ≡ ∑ x i
j +k
bk ≡ ∑ f(xi )xik
i=1 i=1
m
maka diperoleh sebuah sistem persamaan linear: ∑c
j= 0
a = bk
kj j (k = 0, ..., m)
Dari data itu jelas p(x) bukan fungsi linear. f(x) p(x)
Jadi, dicoba fungsi kuadratik:
120
p(x) = a0 + a1x + a2x2
3 6 14 a0 220
30
6 14 36 a
1
= 530
14 36 98 a 1390 x
2
1 2 3
3 6 14 a0 220 a0 0
0 1 4 a1 = 45 a1 = 25
0 0 1 a 5 a 5
2 2
θ [derajat] E [V/cm]
y
10 0.01794775
15 0.03808997
20 0.05516225 θ E
25 0.05598281
30 0.04795629
35 0.04807485
40 0.06273566
45 0.07853982
50 0.07395442
55 0.04201338
a0 = - 3.557800654975570E - 02
a0 = 8.983713484853211E - 03 a1 = 1.061996221844471E - 03
a1 = 1.324478388111303E - 03 a2 = 8.802185976358352E - 04
m = 3: a2 = 3.487808787880805E - 05 m = 5: a3 = - 5.862332690401015E - 05
a3 = - 8.085809790211842E - 07 a4 = 1.362046192596346E - 06
S = 1.0339E - 03 a5 = - 1.063951754163944E - 08
S = 8.1573E - 05
a0 = - 1.757260839248139E - 02
a1 = 1.596300085173997E - 02 a0 = 1.864754537649403E - 01
a2 = - 3.402768734407800E - 03 a1 = - 4.631839872868015E - 02
a3 = 3.358961098305538E - 04 a2 = 4.007658091692495E - 03
a4 = - 1.368895999268855E - 05 a3 = - 8.985715636865594E - 05
m = 9: a5 = 1.132254508386570E - 07 m = 7: a4 = - 3.230489224228010E - 06
a6 = 8.262829873458547E - 09 a5 = 1.912806006890119E - 07
a7 = - 2.741786330789355E - 10 a6 = - 3.252863805243949E - 09
a8 = 3.317446724324134E - 12 a7 = 1.876184315740421E - 11
a9 = - 1.459511835946927E - 14
S = 3.1629E - 07
S = 1.7528E - 11
Interpolasi
f(x) Keterangan:
Sifat interpolasi:
p(xi ) = f(xi )
untuk semua xi .
x
Interpolasi Lagrange
x − x2 x − x3 x − x1 x − x3 x − x1 x − x2
p(x) = f(x1 ) + f(x2 ) + f(x3 )
x
1 − x2 1 x − x3 x − x
2 1 2 x − x3 x − x
3 1 3 x − x2
N
Secara umum, untuk N data p(x) = ∑ l(x, xi )f(xi )
i=1
rumus interpolasi Lagrange:
x − xj
l(x, xi ) = ∏
j≠i xi − xj
Untuk x = xk (k = 1, …, N):
xi − xj
∏ = 1, (i = k)
xk − xj j≠i xi − xj
l(xk , xi ) = ∏ =
j≠i xi − xj ... xk − xk ... = 0, (i ≠ k)
x −x
i j
x − x2 x − x3 x − x4 x − x1 x − x3 x − x4
l(x, x1 ) = l(x, x2 ) =
x1 − x2 x1 − x3 x1 − x4 x2 − x1 x2 − x3 x2 − x4
x − x1 x − x2 x − x4 x − x1 x − x2 x − x3
l(x, x3 ) = l(x, x4 ) =
x3 − x1 x3 − x2 x3 − x4 x4 − x1 x4 − x2 x4 − x3
Dapat dilihat bahwa, l(x, x1 ) < l(x, x2 ) < l(x, x3 ) < l(x, x4 ) .
Ini berarti, semakin jauh dari x pengaruh data f( xi ) semakin kecil dalam
menentukan nilai p(x). Data yang penting yaitu yang berada di sekitar titik x.
Karena itu, cukup data-data di sekitar titik x yang digunakan.
Dengan kata lain, untuk interpolasi cukup digunakan polinomial p(x) berorde
rendah, contoh berorde 3 (fungsi kubik).
Interpolasi Lagrange Kubik
Diperoleh
3 x − xk
p(x) = ∑ l(x, xj )f(xj ) l(x, xj ) = ∏
k ≠ j xj − xk
j= 0
Interpolasi Multidimensi
Jika data bergantung pada lebih dari satu variabel, maka dilakukan interpolasi
multidimensi. Metode interpolasi yang telah disampaikan bisa dipakai untuk
melakukan interpolasi multidimensi. Sebagai contoh di sini ditunjukkan
interpolasi 2 dimensi. Untuk dimensi lebih tinggi berlaku cara yang sama.
n m
p(x, y) = ∑ S(x, xi )∑ S(y, yj )f(xi , yj )
i=1 j=1
3 3
p(x, y) = ∑ l(x, xi )∑ l(y, yj )f(xi , yj )
i= 0 j= 0
x − xk
l(x, xi ) = ∏
k ≠i xi − xk
y − ys
l(y, yj ) = ∏
s ≠ j yj − ys
Kembali ke contoh problem least square:
Kuat medan listrik E di sekitar sebuah benda berbentuk lempeng
diukur pada jarak 10 cm dari pusat massanya dan arah yang
bervariasi. Arah dinyatakan dalam sudut θ terhadap sumbu y yang
ditetapkan sebelum pengukuran. Diperoleh data sebagai berikut:
θ [derajat] E [V/cm]
y
10 0.01794775
15 0.03808997
20 0.05516225 θ E
25 0.05598281
30 0.04795629
35 0.04807485
40 0.06273566
45 0.07853982
50 0.07395442
55 0.04201338
f(x) f(x)
analitik numerik
∫ f(x) dx ∑ w f(x )
i
i i
a
x x
a b a b
b N
I = ∫ f(x) dx ≅ ∑ wif(xi )
a i=1
Akan dibahas:
• quadrature trapezoid
• quadrature Simpson
Quadrature Trapezoid
Kurva integrand f(x) diinterpolasi dengan sebuah garis lurus (f(x) diinterpolasi
dengan fungsi linier / polinomial orde 1):
b b N
I = ∫ f(x) dx ≅ ∫ p(x) dx = ∑ wip(xi ), p(x) = r + sx
a a i=1
f(x)
∫ p(x) dx
a
x
a b
Dengan diketahui hanya p(a) dan p(b) (r dan s tidak dicari), maka integrasi
numerik dikerjakan untuk N = 2:
b 2
Mencari w1 dan w2 :
b
w1 + w2 = b - a 1
1 w1 = w2 = (b − a)
aw1 + bw2 = (b2 − a2 ) 2
2
b
h
Rumus quadrature trapezoid: I = ∫ f(x) dx ≅ (f(a) + f(b) ) (h = b − a)
a
2
Cara yang sama seperti pada quadrature trapezoid bisa dipakai untuk polinomial
p(x) orde lebih tinggi. Contoh, quadrature Simpson memakai p(x) fungsi
kuadratik / polinomial orde 2 untuk menginterpolasi integrand f(x):
c c N
I = ∫ f(x) dx ≅ ∫ p(x) dx = ∑ wip(xi ), p(x) = r + sx + tx2
a a i=1
f(x)
a+c
dengan b= x
2 a b c
Integrasi numerik dikerjakan untuk N = 3:
c 3
Mencari w1 , w2 , w3:
p(x) = r + sx + tx2
c
∫
2 2 2
(r + sx + tx ) dx = w1 (r + sa + ta ) + w2 (r + sb + tb )
a
+ w3 (r + sc + tc2 )
1 1
r(c - a) + s(c2 − a2 ) + t(c3 − a3 ) = r(w1 + w2 + w3 ) + s(aw1 + bw2 + cw3 )
2 3
+ t(a2w1 + b2w2 + c2w3 )
w1 + w2 + w3 = c - a 1
w1 = w3 = (c − a)
1 6
aw1 + bw2 + cw3 = (c2 − a2 )
2 2
1 w2 = (c − a)
a2w1 + b2w2 + c2w3 = (c3 − a3 ) 3
3
c
h
Diperoleh Rumus quadrature Simpson: I = ∫ f(x) dx ≅ (f(a) + 4f(b) + f(c) )
a
3
c−a
dengan h = yaitu jarak antar titik xi tempat f(x) dihitung: h = b − a = c − b
2
Dengan cara yang sama, menggunakan p(x) polinomial orde 3 diperoleh rumus
quadrature Simpson 3 8 :
d
3h d-a
I = ∫ f(x) dx ≅ (f(a) + 3f(b) + 3f(c) + f(d) ) h = = b − a = c − b = d − c
a
8 3
e
2h e-a
I = ∫ f(x) dx ≅ (7f(a) + 32f(b) + 12f(c) + 32f(d) + 7f(e) ) h = = b− a
45 4
a
= c −b
= d−c
= e − d
Integrasi Komposit
b
I = ∫ f(x) dx ≅ h[21 (f0 + f8 ) + f1 + f2 + f3 + f4 + f5 + f6 + f7 ]
a
f(x)
x
a b
h
Integrasi komposit yang menggunakan quadrature trapezoid dan Simpson;
daerah integrasi [a,b] yang dibagi 3:
b
h1
I = ∫ f(x) dx ≅ (fa + 2fa +h1 + fc ) + h2 (fc + 4fc+h2 + fb )
a
2 3
f(x)
Simpson
trapezoid
x
a c b
h1 h1 2h2
Integrasi Monte Carlo
Mungkin saja cara-cara integrasi numerik yang sudah disampaikan sulit atau
tidak bisa diterapkan untuk mengevaluasi suatu integral. Pada keadaan ini,
integrasi Monte Carlo dapat dipilih.
Integrasi Monte Carlo tidak menggunakan interpolasi seperti pada cara-cara
integrasi numerik sebelum ini. Integral dianggap sebagai satu persegi panjang,
dengan lebar daerah integrasi dan tinggi nilai rata-rata integrand f(x), yang
diperoleh melalui statistik dengan memanfaatkan bilangan acak:
f(x) 1 n
< f(x) >= ∑ f(xi )
n i=1
xi = bilangan acak : a ≤ xi ≤ b
<f(x)>
b
1 n
I = ∫ f(x)dx ≅ (b - a) ∑ f(xi )
(b-a)<f(x)> a
n i=1
x
a b
Persamaan Differensial
dy
Bentuk umum PD orde 1: y'= = f(x, y)
dx
x0 +h
Dicari y(x) pada titik x = x0 + h : y(x0 + h) = y0 + ∫ f(x, y)dx
x0
f(x,y)
f(x0 , y0 ) f(x,y) dianggap
konstan dan
dihitung pada x = x0.
x
x0 x0 + h
Diperoleh: y(x0 + h)
y(x)
yg diperoleh
x0 +h
y(x0 + h) ≅ y0 + f(x0 , y0 ) ∫ dx
x0
y(x0 + h)
≅ y0 + hf(x0 , y0 ) y0
sebenarnya
x
x0 x0 + h
Metode Euler yang Dimodifikasi
f(x,y)
Diperoleh:
Kali ini dipakai nilai f(x,y) yang merupakan rata-rata dari dua nilai f(x,y),
masing-masing pada titik x0 dan x0 + h :
1
2
[f(x0 , y0 ) + f(x0 + h, y(x0 + h))] f(x,y)
Ini sama dengan menggunakan quadrature trapezoid
untuk mengevaluasi integral:
x0 +h
Diperoleh:
d2 y
Bentuk umum PD orde 2: y''= 2 = f(x, y, y')
dx
Masalah PD orde 2
berubah menjadi
masalah PD orde 1.
Contoh penyelesaian dengan metode Euler yang lebih baik (improved):
Alur perhitungan:
x0 + h → x0 , u(x0 + h) → u0 , y(x0 + h) → y0
PD dengan Syarat Batas
terikat terikat
Bentuk umum PD orde 1 & 2 linear: (1) y'= f(x, y) = d(x) − e(x)y
(2) y''= g(x, y, y') = a(x) − b(x)y − c(x)y'
Diketahui: x0 ≤ x ≤ xn
y(x0 ) = y0 y(x) = ?
y(xn ) = yn
xn − x0
Dicari yi = y(xi ) pada titik xi = x0 + ih (i = 1, ..., n − 1) dengan h = .
n
Metode Finite Differences
(1) y'+e(x)y = d(x)
yi+1 − yi−1
(2) y''+c(x)y'+b(x)y = a(x) y'i ≅
2h
y − 2yi + yi−1
(1) y'i +ei yi = di y''i ≅ i+1
h2
(2) y''i +ci y'i +bi yi = ai
yi+1 − yi−1
(1) + ei yi ≅ di
2h
y − 2yi + yi−1 yi+1 − yi−1
(2) i+1 2
+ ci + bi yi ≅ ai
h 2h
n
1 n
sistem persamaan linear: ∑a x ij j = bi (i = 1, ..., n) solusi: xi =
aii
bi − ∑ aijxj
j=1 j≠i
Pencarian solusi dimulai dengan nilai awal xi(0) (i = 1, …, n) hasil perkiraan /
tebakan. Dengan nilai tebak awal ini diperoleh nilai perkiraan berikut xi(1) melalui:
1 n
x i
(1)
= bi − ∑ aijxj (i = 1, ..., n)
(0)
aii j≠i
Demikian seterusnya berulang-ulang, nilai perkiraan pada langkah ke k diperoleh
dari nilai perkiraan pada langkah ke k-1:
1 n
xi
(k)
= bi − ∑ aijxj(k-1) (i = 1, ..., n)
aii j≠i
Pencarian dihentikan setelah didapat nilai xi yang konvergen yaitu, yang tidak
atau sedikit berubah dari nilai yang diperoleh pada langkah sebelumnya:
xi(k-1)
1 − (k) < ε, ε = bilangan kecil
xi
Iterasi Gauss-Siedel
1
Rumus iterasi Jacobi dapat ditulis: x i
(k)
= bi − ∑ aijxj − ∑ aijxj
(k -1) (k -1)
Jika pada tiap langkah pencarian dilakukan dengan urutan i yang makin besar,
(k) (k)
maka semua xj<i sudah diperoleh ketika mencari xi .
Sebaliknya, jika dilakukan dengan urutan i yang makin kecil, maka semua xj(k)
>i
(k)
sudah diperoleh ketika mencari xi .
(k) (k)
Karena itu, nilai xj<i atau xj>i itu bisa langsung dipakai untuk mencari xi(k),
sehingga iterasi mencapai nilai konvergen menjadi lebih cepat:
1
xi(k) =
aii
bi − ∑ a x
ij j
(k)
− ∑ a x
ij j
(k -1)
(i = 1, 2, ..., n)
j<i j>i
1
xi
(k)
= bi − ∑ aijxj − ∑ aijxj
(k -1) (k)
(i = n, ..., 2, 1)
aii j<i j>i
1
(1) yi(k) ≅
2eih
(
2dih + yi(k-1-1) − yi(k+1-1) )
1 cih (k-1) cih (k-1)
(2) yi(k) ≅ 2
(2 − bih2 ) i 1 − 2 yi-1 + 1 + 2 yi+1
− a h +
1
(1) yi(k) ≅
2eih
(
2dih + yi(k) (k -1)
-1 − yi+1 )
1 cih (k) cih (k-1)
(2) yi(k) ≅ 2
− a h 2
+ 1 − yi-1 + 1 + yi+1
(2 − bih ) i
2 2