Laporan 2 Komputasi Biomedis Prak
Laporan 2 Komputasi Biomedis Prak
CHAPTER 2
FINDING-ROOT METHOD: BISECTION & REGULA-FALSI
Hari, Tanggal : Selasa, 14 September 2021 Jam Ke : 3-4
Oleh :
Reza Ummam Nor (081911733012)
KELAS T1
Dosen Pembimbing :
ALFIAN PRAMUDITA PUTRA, S.T., M.Sc.
B. DASAR TEORI
Python adalah bahasa pemrograman interpretatif multiguna. Tidak
seperti bahasa lain yang susah untuk dibaca dan dipahami, python lebih
menekankan pada keterbacaan kode agar lebih mudah untuk memahami
sintaks. Hal ini membuat Python sangat mudah dipelajari baik untuk pemula
maupun untuk yang sudah menguasai bahasa pemrograman lain (Henri, 2003).
Salah satu penerapan phyton adalah untuk komputasi. Contoh bentuk
komputasi adalah pencarian akar dari sebuah fungsi. Dengan demikian, adanya
komputasi memanfaatkan phyton dapat mempermudah pekerjaan manusia
dalam mencari akar suatu fungsi yang rumit.
Masalah pencarian akar adalah salah satu masalah paling mendasar
dalam analisis numerik. Jika ada fungsi f(x), proses untuk menemukan akar
dari fungsi ini melibatkan pencarian nilai x dengan f(x) = 0. Ketika fungsi sama
dengan nol, nilai x untuk fungsi tersebut adalah akarnya. Salah satu metode
untuk mencari akar ini adalah metode bisection atau metode interval halving
atau metode pencarian biner atau metode dikotomi. Metode ini didasarkan pada
teorema Bolzano untuk fungsi kontinu. Teorema (Bolzano): Jika suatu fungsi
f(x) kontinu pada interval [a, b] dan f(a)·f(b) < 0, maka ada nilai c ∈(a, b)
dimana f( c) = 0 (Capra and Canale, 2010).
Metode ini dimulai dengan memilih dua angka, membuat interval di
antara mereka dengan mengambil setengahnya, dan membuatnya semakin
kecil. Kedua bilangan tersebut harus memiliki hasil fungsi yang berlawanan
tanda. Sebagai contoh, ada dua angka, a dan b. f(a) dan f(b) harus berlawanan
tanda sehingga f(a).f(b)<0. Kemudian, bilangan median r diambil dari (a+b)/2.
Hasil f(r) harus diuji dengan menggunakan salah satu dari f(a) atau f(b). Jika
hasil dari f(r).f(a)<0 maka akan digunakan sebagai interval baru. Proses ini
diulang sampai interval mencapai 0 atau mendekati 0 sesuai dengan error yang
disyaratkan (Kiusalaas, 2013). Metode ini diilustrasikan pada Gambar 1.
2. Metode Regulasi-Falsi
a) Menentukan fungsi f(x), interval [a, b], iterasi maks (maxit), dan error
maks (maxer).
b) Menentukan n = 1, n mewakili nilai iterasi.
c) Mengulangi langkah d-h sampai n maxit
d) r = a - (f(a)(a - b))/(f(a) - f(b))
e) Mencetak n, r, dan f(r)
j) Jika |f(r) ≤ maxer| atau |a-b| ≤ maxer, maka iterasi berhenti dan keluar.
f) Jika f(r)*f(a) < 0, maka b = r, jika tidak a = r.
g) n = n+1
h) Mencetak "algoritma gagal: tidak ada konvergensi" dan keluar.
import numpy as np
import math
import pylab
a = 0
b = 10
max = 20
fa = fungsi(a)
fb = fungsi(b)
c = 0
d = 10
fc = fungsi(c)
fd = fungsi(d)
i = 1
j = 1
x1 = []
x2 = []
y1 = []
y2 = []
Tanda # pada awal code merupakan komentar yang tidak diproses
program. Bagian tersebut menampilkan identitas programmer
Syntax import berfungsi untuk mengimpor modul pada phyton. Numpy
dan math berisi fungsi matematika, sedangkan pylab untuk menampilkat plot
grafik.
Syntax def berfungsi untuk mendeklarasikan fungsi (x)= x-8.
Variabel a dan b menunjukkan interval yang memuat nilai akar pada
metode biseksi, nilai awal a adalah 0 dan b adalah 10. Variabel max
menunjukkan jumlah maksimal iterasi yaitu 20. Variabel fa menunjukkan hasil
nilai a yang disubtitusikan ke dalam fungsi (x), begitu juga untuk fb.
Variabel c dan d menunjukkan interval yang memuat nilai akar pada
metode regula-falsi, nilai awal c adalah 0 dan d adalah 10. Variabel fc
menunjukkan hasil dari nilai c yang disubtitusikan ke dalam fungsi (x), begitu
juga untuk fd.
Variabel i merupakan nilai awal iterasi yaitu 1 untuk metode biseksi.
Begitu pula variabel j untuk metode regula-falsi.
Variabel x1 adalah list yang memuat nilai iterasi pada metode biseksi,
sedangkan x2 untuk metode regula-falsi. Variabel y1 adalah list yang memuat
nilai akar fungsi pada metode biseksi, sedangkan y2 untuk metode regula-falsi.
#METODE BISEKSI
print('METODE BISEKSI :\n')
print('\t || \t iterasi \t || \t tebakan akar \t\t||\t
hasil fungsi \t||')
x1.append(i)
y1.append(r0)
i+=1
else:
print('\nInterval a dan b tidak mengandung nilai akar')
Syntax print berfungsi untuk mencetak kalimat didalam petik tunggal
dan judul tabel meliputi iterasi, tebakan akar, dan hasil fungsi
Syntax if memuat syarat jika fa x fb kurang dari nol maka proses akan
dilanjutkan ke pencarian nilai x karena memuat akar fungsi atau konvergen. Jika
tidak maka interval a dan b tidak mengandung akar fungsi dan masuk ke else.
Blok conditional 1 :
Perulangan menggunakan syntax while dengan batasan
perulangan/iterasi kurang dari sama dengan nilai max yaitu 20
Blok perulangan :
Variabel r0 memuat nilai dari rumus nilai tengah interval a dan b yang
identic dengan metode biseksi. fr0 memuat nilai fungsi (r0). Penghitungan nilai
r0 akan terus diulang sampai iterasi maksimal yaitu 20 dengan konsekuensi
interval a dan b akan terus mengecil. Sesuai teori nilai r0 dengan fr0 paling
mendekati 0.0 merupakan nilai x atau akar fungsi (x). Syntax print berfungsi
mencetak nilai i, r0 dan fr0.
Blok conditional 2 :
Syntax if memuat syarat jika fa x fr0 kurang dari 0 maka nilai b untuk
interval yang baru adalah r0. Jika tidak maka program dilanjutkan ke syntax
else yang berfungsi mengubah nilai a untuk interval yang baru dengan r0.
Syntax append berfungsi untuk menambah elemen pada list di bagian
belakang. Untuk list x1 elemen yang ditambakan adalah i, sedangkan list y1
elemen yang ditambahkan adalah r0.
Code i+=1 berfungsi agar perulangan/iterasi bertambah satu setiap
perulangan.
Syntax else berjalan jika nilai a dan b tidak memenuhi syarat untuk if
statement blok conditional 1 dikarenakan interval tidak konvergen. Program
akan mencetak kalimat di dalam petik tunggal dengan print.
Hasil Tabel :
Analisis :
Pada tabel tampak nilai akar fungsi f(x)=x-8 ditemukan pada iterasi ke
20 yaitu x=8 dengan f(x)=0.0. Hal ini sesuai dengan hitungan manual bahwa
nilai akar f(x) adalah x=8. Pada tabel tidak menunjukkan pola bahwa semakin
besar iterasi maka nilai f(x) semakin mendekati nol, contohnya pada iterasi ke-
6 dan ke-7. Hasil f(x) pada iterasi ke-6 lebih mendekati 0 daripada iterasi ke-7.
Hal ini berakibat pada plot yang dihasilkan akan fluktuatif. Dengan demikian
pada metode biseksi selain batasannya berupa maksimal iterasi juga dapat
ditambahkan dengan maksimum error.
Hasil Tabel :
Analisis :
Hasil tersebut muncul jika nilai a dan b tidak memenuhi syarat fa x fb
< 0. Lebih tepatnya nilai yang diinputkan untuk interval metode biseksi tidak
mengandung akar atau konvergen.
#METODE REGULA-FALSI
print('\n\nMETODE REGULA-FALSI :\n')
print('\t || \t iterasi \t || \t tebakan akar \t\t||\t hasi
l fungsi \t||')
if (fc*fd<0):
while (j<=max):
r1 = c-((fc*(c-d))/(fc-fd))#RUMUS METODE REGULA-FALSI
fr1 = fungsi(r1)
print('\t || \t ', j, ' \t\t ||\t', (round(r1,5)), '
\t||\t',
(round(fr1,5)), ' \t||')
if(fc*fr1<0):
d = r1
fd = fr1
else:
c = r1
fc = fr1
x2.append(j)
y2.append(r1)
j+=1
else:
print('\nInterval c dan d tidak mengandung nilai akar')
#PLOT
pylab.plot(x1,y1, 'o-')
pylab.plot(x2,y2, '*-')
Analisis :
Pada tabel tampak nilai akar fungsi f(x)=x-8 ditemukan pada iterasi ke-
1 yaitu x=8 dengan f(x)=0.0. Nilai akar langsung didapat sangat cepat pada
iterasi pertama. Iterasi ke-2 sampai ke-20 menjadi tidak berguna karena
menghasilkan nilai yang sama. Dengan demikian pada metode regula-falsi
selain batasannya berupa maksimal iterasi juga dapat ditambahkan dengan
maksimum error agar iterasi dapat berhenti ketika maksimum error yang
ditentukan sudah terpenuhi.
Pada tabel menunjukkan pola bahwa semakin besar iterasi maka nilai
f(x) semakin mendekati nol. Maka dari itu plot untuk metode ini akan lebih
halus, tidak fluktuatif, dan konstan mendekati nilai akar yang sebenarnya.
Hasil Tabel :
Analisis :
Hasil tersebut muncul jika nilai c dan d tidak memenuhi syarat fc x fd
< 0. Lebih tepatnya nilai yang diinputkan untuk interval metode regula-falsi
tidak mengandung akar atau tidak konvergen.
Perbandingan Grafik Plot Fungsi Dua Metode :
Kedua grafik tersebut menunjukkan plot dalam mencari nilai akar untuk
fungsi derajat 1 yaitu f(x)=x-8 dengan menggunakan komputasi. Grafik warna
biru menunjukkan plot untuk metode biseksi sedangkan grafik oranye
menunjukkan plot untuk metode regula-falsi. Tampak untuk metode biseksi
grafik berfluktuatif dalam mendekati nilai akar yiatu x=8. Nilai akar baru
ditemukan saat iterasi ke-20, yaitu x=8 dengan f(x)=0.0. Disisi lain metode
regula-falsi dapat langsung menemukan nilai akar x=8 pada iterasi pertama dan
tetap konstan sampai iterasi ke-20.
Dengan demikian untuk fungsi derajat 1 metode regula-falsi lebih
direkomendasikan karena lebih cepat menemukan nilai akar dibandingkan
metode biseksi.
import numpy as np
import math
import pylab
a = 0
b = 10
max = 20
fa = fungsi(a)
fb = fungsi(b)
c = 0
d = 10
fc = fungsi(c)
fd = fungsi(d)
i = 1
j = 1
x1 = []
x2 = []
y1 = []
y2 = []
#METODE BISEKSI
print('METODE BISEKSI :\n')
print('\t || \t iterasi \t || \t tebakan akar \t\t||\t
hasil fungsi \t||')
if (fa*fb<0):
while (i<=max):
r0 = (a+b)/2 #RUMUS METODE BISEKSI
fr0 = fungsi(r0)
print ('\t || \t ', i, ' \t\t ||\t', (round(r0,5)),
' \t||\t',(round(fr0,5)), '
\t||')
if(fa*fr0<0):
b = r0
fb = fr0
else:
a = r0
fa = fr0
x1.append(i)
y1.append(r0)
i+=1
else:
print('\nInterval a dan b tidak mengandung nilai akar')
#METODE REGULA-FALSI
print('\n\nMETODE REGULA-FALSI :\n')
print('\t || \t iterasi \t || \t tebakan akar \t\t||\t
hasil fungsi \t||')
if (fc*fd<0):
while (j<=max):
r1 = c-((fc*(c-d))/(fc-fd)) #RUMUS METODE REGULA-FALSI
fr1 = fungsi(r1)
print('\t || \t ', j, ' \t\t ||\t', (round(r1,5)), '
\t||\t',
(round(fr1,5)), ' \t||')
if(fc*fr1<0):
d = r1
fd = fr1
else:
c = r1
fc = fr1
x2.append(j)
y2.append(r1)
j+=1
else:
print('\nInterval c dan d tidak mengandung nilai akar')
#PLOT
pylab.plot(x1,y1, 'o-')
pylab.plot(x2,y2, '*-')
Listing code untuk pencarian akar fungsi derajat 2 yaitu f(x) = x^2-16
sama persis dengan code untuk fungsi derajat 1. Perbedaannya hanya terdapat
pada pendeklarasian fungsi dengan syntax def. Fungsi derajat 1 diganti dengan
fungsi derajat 2 yaitu f(x) = x^2-16. Dengan demikian penjelasan semua proses
dan syntax yang digunakan pada program sama antara fungsi derajat 1 dan 2.
Maka dari itu analisis dapat langsung dilanjutkan untuk hasil program dan
perbandingan hasil plot kedua metode (biseksi dan regula-falsi).
Analisis :
Hasil tersebut muncul jika nilai a dan b tidak memenuhi syarat fa x fb
< 0. Lebih tepatnya nilai yang diinputkan untuk interval metode biseksi tidak
mengandung akar atau tidak koncergen.
Analisis :
Pada tabel tampak nilai akar fungsi f(x)=x^2-16 ditemukan pada iterasi
ke-20 yaitu x=4 dengan f(x)=0.0. Hal ini sesuai dengan hitungan manual
dimana akar dari fungsi f(x) adalah 4 dan -4. Meskipun pada iterasi ke-17
sampai ke-19 muncul angka x = 4.0, hal itu terjadi karena pembulatan 5 angka
di belakang koma dan dikuatkan f(x) belum tepat 0.0
Pada tabel menunjukkan pola bahwa semakin besar iterasi maka nilai
f(x) semakin mendekati nol. Maka dari itu plot untuk metode ini akan lebih
halus, tidak fluktuatif, dan konstan mendekati nilai akar yang sebenarnya.
Analisis :
Hasil tersebut muncul jika nilai c dan d tidak memenuhi syarat fc x fd
< 0. Lebih tepatnya nilai yang diinputkan untuk interval metode regula-falsi
tidak mengandung akar atau tidak konvergen.
Kedua grafik tersebut menunjukkan plot dalam mencari nilai akar untuk
fungsi derajat 2 yaitu f(x)=x^2-16. Grafik warna biru menunjukkan plot untuk
metode biseksi sedangkan grafik oranye menunjukkan plot untuk metode
regula-falsi. Tampak untuk metode biseksi grafik berfluktuatif dalam
mendekati nilai akar yaitu x=4. Nilai akar pada iterasi ke-20 yaitu x=4.00001
dengan f(x)=0.00005. Artinya akar yang ditemukan masih mendekati akar asli
karena belum menghasilkan f(x) tepat 0.0.
Disisi lain grafik metode regula-falsi lebih halus dan konstan semakin
mendekati nilai akar. Hingga akhirnya dapat menemukan nilai akar x=4 pada
iterasi ke-20.
Dengan demikian untuk fungsi derajat 2 metode regula-falsi lebih
direkomendasikan karena lebih cepat menemukan nilai akar dibandingkan
metode biseksi.
3. FUNGSI DERAJAT 3 : f(x) = x3 + 2x2 + 10x -20
#REZA UMMAM NOR
#081911733012
#f(x)=x^3+2x^2+10x-20
import numpy as np
import math
import pylab
a = 0
b = 10
max = 20
fa = fungsi(a)
fb = fungsi(b)
c = 0
d = 10
fc = fungsi(c)
fd = fungsi(d)
i = 1
j = 1
x1 = []
x2 = []
y1 = []
y2 = []
#METODE BISEKSI
print('METODE BISEKSI :\n')
print('\t || \t iterasi \t || \t tebakan akar \t\t||\t
hasil fungsi \t||')
if (fa*fb<0):
while (i<=max):
r0 = (a+b)/2 #RUMUS METODE BISEKSI
fr0 = fungsi(r0)
print ('\t || \t ', i, ' \t\t ||\t', (round(r0,5)),
' \t||\t',(round(fr0,5)), '
\t||')
if(fa*fr0<0):
b = r0
fb = fr0
else:
a = r0
fa = fr0
x1.append(i)
y1.append(r0)
i+=1
else:
print('\nInterval a dan b tidak mengandung nilai akar')
#METODE REGULA-FALSI
print('\n\nMETODE REGULA-FALSI :\n')
print('\t || \t iterasi \t || \t tebakan akar \t\t||\t
hasil fungsi \t||')
if (fc*fd<0):
while (j<=max):
r1 = c-((fc*(c-d))/(fc-fd)) #RUMUS METODE REGULA-FALSI
fr1 = fungsi(r1)
print('\t || \t ', j, ' \t\t ||\t', (round(r1,5)), '
\t||\t',
(round(fr1,5)), ' \t||')
if(fc*fr1<0):
d = r1
fd = fr1
else:
c = r1
fc = fr1
x2.append(j)
y2.append(r1)
j+=1
else:
print('\nInterval c dan d tidak mengandung nilai akar')
#PLOT
pylab.plot(x1,y1, 'o-')
pylab.plot(x2,y2, '*-')
Analisis :
Pada tabel tampak nilai akar fungsi f(x)= x^3+2x^2+10x-20 dengan
hasil f(x)=0.0 masih didekati dengan metode biseksi. Hal ini dikarenakan nilai
f(x) yang ditemukan sampai iterasi ke-20 belum tepat 0.0. Meskipun demikian
merujuk pada syarat maksimum iterasi, maka nilai x yang digunakan adalah
pada itersi ke-20, yaitu x=1.3688 dengan f(x)= -0.00019.
Pada tabel tidak menunjukkan pola bahwa semakin besar iterasi maka
nilai f(x) semakin mendekati nol, contohnya pada iterasi ke-3 dan ke-4. Hasil
f(x) pada iterasi ke-3 lebih mendekati 0 daripada iterasi ke-4. Hal tersebut
berakibat pada plot yang berfluktuatif. Dengan demikian pada metode biseksi
selain batasannya berupa maksimal iterasi juga dapat ditambahkan dengan
maksimum error.
Analisis :
Hasil tersebut muncul jika nilai a dan b tidak memenuhi syarat fa x fb
< 0. Lebih tepatnya nilai yang diinputkan untuk interval metode biseksi tidak
mengandung akar atau tidak konvergensi.
Hasil Tabel Metode Regula-Falsi :
Analisis :
Pada tabel tampak nilai akar fungsi f(x)= x^3+2x^2+10x-20 dengan
hasil f(x)=0.0 masih didekati dengan metode regula-falsi. Hal ini dikarenakan
nilai f(x) yang ditemukan sampai iterasi ke-20 belum tepat 0.0 bahkan masih
memiliki error lebih dari 1. Meskipun demikian merujuk pada syarat
maksimum iterasi, maka nilai x yang digunakan adalah pada itersi ke-20, yaitu
x=1.28383 dengan f(x)= -1.74913. Hal ini mengindikasikan metode regula-
falsi lambat untuk mencari akar fungsi derajat 3.
Pada tabel menunjukkan pola bahwa semakin besar iterasi maka nilai
f(x) semakin mendekati nol. Maka dari itu plot untuk metode ini akan lebih
halus dan tidak fluktuatif.
Analisis :
Hasil tersebut muncul jika nilai c dan d tidak memenuhi syarat fc x fd
< 0. Lebih tepatnya nilai yang diinputkan untuk interval metode regula-falsi
tidak mengandung akar atau tidak konvergen.
Perbandingan Grafik Plot Fungsi Dua Metode :
Kedua grafik tersebut menunjukkan plot dalam mencari nilai akar untuk
fungsi derajat 3 yaitu f(x)= x^3+2x^2+10x-20. Grafik warna biru menunjukkan
plot untuk metode biseksi sedangkan grafik oranye menunjukkan plot untuk
metode regula-falsi. Tampak untuk metode biseksi grafik berfluktuatif dalam
mendekati nilai akar. Nilai akar pada iterasi ke-20 yaitu x=1.3688 dengan f(x)=
-0.00019. Artinya akar yang ditemukan masih mendekati akar asli karena
belum menghasilkan f(x) tepat 0.0.
Disisi lain grafik metode regula-falsi lebih halus dan konstan semakin
mendekati nilai akar. Akan tetapi pada iterasi ke-20 nilai akar yang ditemukan
adalah x=1.28383 dengan f(x)= -1.74913. Nilai error pada metode regula-falsi
lebih besar daripada metode biseksi.
Dengan demikian untuk fungsi derajat 3 metode biseksi lebih
direkomendasikan karena lebih cepat menemukan nilai akar dibandingkan
metode regula-falsi.
import numpy as np
import math
import pylab
a = 0
b = math.pi/2
max = 20
fa = fungsi(a)
fb = fungsi(b)
c = 0
d = 10
fc = fungsi(c)
fd = fungsi(d)
i = 1
j = 1
x1 = []
x2 = []
y1 = []
y2 = []
i+=1
#METODE BISEKSI
print('METODE BISEKSI :\n')
print('\t || \t iterasi \t || \t tebakan akar \t\t||\t
hasil fungsi \t||')
if (fa*fb<0):
while (i<=max):
r0 = (a+b)/2 #RUMUS METODE BISEKSI
fr0 = fungsi(r0)
print ('\t || \t ', i, ' \t\t ||\t', (round(r0,5)),
' \t||\t',(round(fr0,5)), '
\t||')
if(fa*fr0<0):
b = r0
fb = fr0
else:
a = r0
fa = fr0
x1.append(i)
y1.append(r0)
i+=1
else:
print('\nInterval a dan b tidak mengandung nilai akar')
#METODE REGULA-FALSI
print('\n\nMETODE REGULA-FALSI :\n')
print('\t || \t iterasi \t || \t tebakan akar \t\t||\t
hasil fungsi \t||')
if (fc*fd<0):
while (j<=max):
r1 = c-((fc*(c-d))/(fc-fd)) #RUMUS METODE REGULA-FALSI
fr1 = fungsi(r1)
print('\t || \t ', j, ' \t\t ||\t', (round(r1,5)), '
\t||\t',
(round(fr1,5)), ' \t||')
if(fc*fr1<0):
d = r1
fd = fr1
else:
c = r1
fc = fr1
x2.append(j)
y2.append(r1)
j+=1
else:
print('\nInterval c dan d tidak mengandung nilai akar')
#PLOT
pylab.plot(x1,y1, 'o-')
pylab.plot(x2,y2, '*-')
Analisis :
Pada tabel tampak nilai akar fungsi f(x)= x – 2cos(x) yaitu x=1.02987
dengan f(x)=0.0 ditemukan pada iterasi ke-19.
Pada tabel tidak menunjukkan pola bahwa semakin besar iterasi maka
nilai f(x) semakin mendekati nol, contohnya pada iterasi ke-3 dan ke-4. Hasil
f(x) pada iterasi ke-3 lebih mendekati 0 daripada iterasi ke-4. Hal ini
mengakibatkan plot yang dihasilkan berfluktuatif.
Disisi lain nilai x sudah ditemukan sebelum maksimal iterasi terjadi,
yaitu pada iterasi ke-19. Hal ini menyebabkan nilai akar iterasi setelahnya
menjadi tidak berguna karena memiliki hasil yang sama. Dengan demikian
pada metode biseksi selain batasannya berupa maksimal iterasi juga dapat
ditambahkan dengan maksimum error agar nilai x yang ditampilkan lebih
akurat serta iterasi dapat berhenti jika nilai akar sudah ditemukan.
Analisis :
Hasil tersebut muncul jika nilai a dan b tidak memenuhi syarat fa x fb
< 0. Lebih tepatnya nilai yang diinputkan untuk interval metode biseksi tidak
mengandung akar atau tidak konvergen.
Hasil Tabel Metode Regula-Falsi :
Analisis :
Pada tabel tampak nilai akar fungsi f(x)= x – 2cos(x) ditemukan pada
iterasi ke-7 yaitu x=1.02987 dengan f(x)= -0.0. Meskipun pada iterasi ke-6 juga
menunjukkan f(x)= -0.0, akan tetapi bilangan tersebut merupakan hasil
pembulatan 5 angka di belakang koma. Hal ini diperkuat dengan nilai x dan
f(x) pada iterasi ke-8 sampai dengan ke-20 menunjukkan hasil yang sama
dengan iterasi ke-7.
Berdasarkan tabel iterasi ke-8 sampai ke-20 menjadi tidak berguna
karena menunjukkan hasil yang sama. Dengan demikian pada metode regula-
falsi selain batasannya berupa maksimal iterasi juga dapat ditambahkan dengan
maksimum error agar iterasi dapat berhenti ketika maksimum error yang
ditentukan sudah terpenuhi.
Pada tabel menunjukkan pola bahwa semakin besar iterasi maka nilai
f(x) semakin mendekati nol. Maka dari itu plot untuk metode ini akan lebih
halus, tidak fluktuatif, dan konstan mendekati nilai akar yang sebenarnya.
Analisis :
Hasil tersebut muncul jika nilai c dan d tidak memenuhi syarat fc x fd
< 0. Lebih tepatnya nilai yang diinputkan untuk interval metode regula-falsi
tidak mengandung akar atau tidak konvergen.
Perbandingan Grafik Plot Fungsi Dua Metode :
Kedua grafik tersebut menunjukkan plot dalam mencari nilai akar untuk
fungsi trigonometri yaitu f(x)=x-2cos(x). Grafik warna biru menunjukkan plot
untuk metode biseksi sedangkan grafik oranye menunjukkan plot untuk metode
regula-falsi. Tampak untuk metode biseksi grafik berfluktuatif dalam
mendekati nilai akar yaitu x=1.02987 dengan f(x)= -0.00 pada iterasi ke-20.
Disisi lain grafik metode regula-falsi lebih halus dan konstan semakin
mendekati nilai akar. Hingga akhirnya dapat menemukan nilai akar x=1.02987
dengan f(x)= -0.00 pada iterasi ke-7.
Dengan demikian untuk fungsi trigonometri metode regula-falsi lebih
direkomendasikan karena lebih cepat menemukan nilai akar dibandingkan
metode biseksi.
import numpy as np
import math
import pylab
a = 0
b = 10
max = 20
fa = fungsi(a)
fb = fungsi(b)
c = 0
d = 10
fc = fungsi(c)
fd = fungsi(d)
i = 1
j = 1
x1 = []
x2 = []
y1 = []
y2 = []
#METODE BISEKSI
print('METODE BISEKSI :\n')
print('\t || \t iterasi \t || \t tebakan akar \t\t||\t
hasil fungsi \t||')
if (fa*fb<0):
while (i<=max):
r0 = (a+b)/2 #RUMUS METODE BISEKSI
fr0 = fungsi(r0)
print ('\t || \t ', i, ' \t\t ||\t', (round(r0,5)),
' \t||\t',(round(fr0,5)), '
\t||')
if(fa*fr0<0):
b = r0
fb = fr0
else:
a = r0
fa = fr0
x1.append(i)
y1.append(r0)
i+=1
else:
print('\nInterval a dan b tidak mengandung nilai akar')
#METODE REGULA-FALSI
print('\n\nMETODE REGULA-FALSI :\n')
print('\t || \t iterasi \t || \t tebakan akar \t\t||\t
hasil fungsi \t||')
if (fc*fd<0):
while (j<=max):
r1 = c-((fc*(c-d))/(fc-fd)) #RUMUS METODE REGULA-FALSI
fr1 = fungsi(r1)
print('\t || \t ', j, ' \t\t ||\t', (round(r1,5)), '
\t||\t',
(round(fr1,5)), ' \t||')
if(fc*fr1<0):
d = r1
fd = fr1
else:
c = r1
fc = fr1
x2.append(j)
y2.append(r1)
j+=1
else:
print('\nInterval c dan d tidak mengandung nilai akar')
#PLOT
pylab.plot(x1,y1, 'o-')
pylab.plot(x2,y2, '*-')
Analisis :
Pada hasil di atas tampak tabel kosong yang memiliki arti bahwa
diantara interval a dan b yaitu 1 sampai 10 tidak mengandung nilai akar. Akan
tetapi hasil tersebut juga terjadi untuk interval berapa pun. Hal ini terjadi karena
menurut teori grafik fungsi eksponensial tidak pernah menyentuh sumbu x atau
tidak pernah menghasilkan f(x)=0. Dengan demikian fungsi eksponensial tidak
memiliki akar.
Hasil Tabel Metode Regula-Falsi :
Analisis :
Pada hasil di atas tampak tabel kosong yang memiliki arti bahwa
diantara interval c dan d yaitu 1 sampai 10 tidak mengandung nilai akar. Akan
tetapi hasil tersebut juga terjadi untuk interval berapa pun. Hal ini terjadi karena
menurut teori grafik fungsi eksponensial tidak pernah menyentuh sumbu x atau
tidak pernah menghasilkan f(x)=0. Dengan demikian fungsi eksponensial tidak
memiliki akar.
Pada plot tampak baik metode biseksi maupun metode regula-falsi tidak
memunculkan grafik pencarian nilai akar fungsi atau x. Hal ini terjadi karena
menurut teori grafik fungsi eksponensial tidak pernah menyentuh sumbu x atau
tidak pernah menghasilkan f(x)=0. Dengan demikian fungsi eksponensial tidak
memiliki akar.
Penyelesaian :
a. Mencari fungsi porositas f(𝜀) berdasarkan data yang disediakan
• Persamaan Ergun :
∆𝑝 (1 − 𝜀)2 𝜇𝑢 (1 − 𝜀)𝜌𝑢2
= 150 + 1.75
𝑙 𝑑𝑝2 𝑑𝑝
• Diketahui :
∆𝑝 = 810.5 𝑑𝑦𝑛/𝑐𝑚2
𝑙 = 20 𝑐𝑚
𝜇 = 0.01 𝑃
𝑢 = 0.75 𝑐𝑚/𝑠
𝑑𝑝 = 1 𝑚𝑚 = 0.1 𝑐𝑚
𝜌 = 1 𝑔/𝑐𝑚3
Misalkan x = 𝜀, maka :
f(𝑥) = 112.5𝑥 2 − 234.84375𝑥 + 81.8175
b. Membuat algoritma pada phyton untuk mencari nilai akar fungsi porositas
baik metode biseksi maupun metode regula-falsi.
• Syarat :
Interval : 0.1 ≤ 𝑥 ≤ 0.9
Maksimum error : 0.01
• Code :
#TUGAS
#REZA UMMAM NOR
#081911733012
#f(x)=112.5x^2-234.84375x+81.81875
import numpy as np
import math
import pylab
from numpy import *
a = 0.1
b = 0.9
maxe = 0.01
maxi = 100
fa = fungsi(a)
fb = fungsi(b)
c = 0.1
d = 0.9
fc = fungsi(c)
fd = fungsi(d)
i = 1
j = 1
x1 = []
x2 = []
y1 = []
y2 = []
#METODE BISEKSI
print('METODE BISEKSI :\n')
print('\t || \t iterasi \t || \t tebakan akar \t\t||\t hasil f
ungsi \t||')
x1.append(i)
y1.append(r0)
fr01=sqrt(fr0**2) #nilai mutlak fr0
if fr01<=maxe : #BLOK CONDITIONAL 3
break
i+=1
else:
print('\nInterval a dan b tidak mengandung nilai akar')
#METODE REGULA-FALSI
print('\n\nMETODE REGULA-FALSI :\n')
print('\t || \t iterasi \t || \t tebakan akar \t\t||\t hasil f
ungsi \t||')
x2.append(j)
y2.append(r1)
fr11=sqrt(fr1**2) #nilai mutlak fr1
if fr11<=maxe : #BLOK CONDITIONAL 3
break
j+=1
else:
print('\nInterval c dan d tidak mengandung nilai akar')
#PLOT
pylab.plot(x1,y1, 'o-')
pylab.plot(x2,y2, '*-')
• Penjelasan Code :
Tanda # pada awal code merupakan komentar yang tidak diproses
program. Bagian tersebut menampilkan identitas programmer
Syntax import berfungsi untuk mengimpor modul pada phyton.
Numpy dan math berisi fungsi matematika, sedangkan pylab untuk
menampilkat plot grafik
Syntax def berfungsi untuk mendeklarasikan fungsi porositas atau
fungsi (x), yaitu : f(𝑥) = 112.5𝑥 2 − 234.84375𝑥 + 81.81875
Variabel a dan b menunjukkan interval yang memuat nilai akar
pada metode biseksi, nilai awal a adalah 0.1 dan b adalah 0.9. Variabel
maxi menunjukkan jumlah maksimal iterasi yaitu 100. Sedangkan
variabel maxe menunjukkan maksimal error yaitu 0.01. Variabel fa
menunjukkan hasil nilai a yang disubtitusikan ke dalam fungsi (x),
begitu juga untuk fb.
Variabel c dan d menunjukkan interval yang memuat nilai akar
pada metode regula-falsi, nilai awal c adalah 0.1 dan d adalah 0.9.
Variabel fc menunjukkan hasil dari nilai c yang disubtitusikan ke dalam
fungsi (x), begitu juga untuk fd.
Variabel i merupakan nilai awal iterasi yaitu 1 untuk metode
biseksi. Begitu pula variabel j untuk metode regula-falsi.
Variabel x1 adalah list yang memuat nilai iterasi pada metode
biseksi, sedangkan x2 untuk metode regula-falsi. Variabel y1 adalah list
yang memuat nilai x atau akar fungsi pada metode biseksi, sedangkan
y2 untuk metode regula-falsi.
Code Metode Biseksi :
Syntax print berfungsi untuk mencetak kalimat didalam petik
tunggal dan judul tabel meliputi iterasi, tebakan akar, dan hasil fungsi
Syntax if memuat syarat jika fa x fb kurang dari nol maka proses
akan dilanjutkan ke pencarian nilai x karena memuat akar fungsi
(konvergen). Jika tidak maka interval a dan b tidak mengandung akar
fungsi dan masuk ke else.
Blok conditional 1 :
Perulangan menggunakan syntax while dengan batasan
perulangan/iterasi kurang dari sama dengan nilai maxi yaitu 100.
Blok perulangan :
Variabel r0 memuat nilai dari rumus nilai tengah interval a dan b
yang identic dengan metode biseksi. fr0 memuat nilai fungsi (r0).
Penghitungan nilai r0 akan terus diulang sampai maksimal iterasi yaitu
100 dengan konsekuensi interval yang terjadi akan semakin mengecil.
Nilai r0 dengan fr0 yang paling mendekati 0.0 selanjutnya merupakan
nilai x atau akar fungsi (x). Syntax print berfungsi mencetak nilai i, r0
dan fr0.
Blok conditional 2 :
Syntax if memuat syarat jika fa*fr0 kurang dari 0 maka nilai b
untuk interval yang baru adalah r0. Jika tidak maka program dilanjutkan
ke syntax else yang berfungsi mengubah nilai a untuk interval yang baru
dengan r0.
Syntax append berfungsi untuk menambah elemen pada list di
bagian belakang. Untuk list x1 elemen yang ditambakan adalah i,
sedangkan list y1 elemen yang ditambahkan adalah r0.
Variabel fr01 merupakan nilai mutlak untuk fr0 yang selanjutnya
digunakan untuk menentukan maximum error nilai akar yang
dihasilkan.
Blok conditional 3 :
Syntax if memuat syarat jika fr01 kurang dari sama dengan 0.01
maka iterasi akan dihentikan oleh syntax break. Hal ini menunjukkan
bahwa syarat nilai r0 atau nilai x (akar fungsi) telah terpenuhi untuk
maksimal error = 0.01.
Code i+=1 berfungsi agar perulangan/iterasi bertambah satu
setiap perulangan.
Syntax else berjalan jika nilai a dan b tidak memenuhi syarat
untuk if statement blok conditional 1 karena di dalam interval tidak
memuat akar fungsi atau tidak konvergen. Program akan mencetak
kalimat di dalam petik tunggal dengan print.
E. KESIMPULAN
Praktikum Komputasi Biomedis Chapter 2 yang bertujuan untuk
menentukan akar-akar fungsi dengan menggunakan metode Biseksi dan
Regula-Falsi telah dilaksanakan dengan baik. Kesimpulan praktikum ini adalah
Metode Biseksi merupakan metode pencarian nilai akar yang dimulai dengan
memilih dua angka sebagai interval dan didalamnya harus terkandung nilai akar
(f(a).f(b)<0), lalu mencari nilai tengah (r) interval tersebut, dan membuatnya
semakin kecil hingga nilai f(r) mendekati atau mencapai nol. Sedangkan
Metode Regula-Falsi menggunakan konsep gradien untuk menentukan nilai r
sehingga tidak harus di tengah interval. Secara general metode Regula-Falsi
lebih cepat dalam menemukan akar serta plot yang dihasilkan lebih halus dan
konstan mendekati nilai akar yang sebenarnya. Dengan demikian, metode
Regula-Falsi lebih direkomendasikan dalam mencari akar suatu fungsi
dibandingkan metode biseksi.
F. DAFTAR PUSTAKA
Capra, Steven C and Canale. 2010. Numerical Methods for Engineers with
Personal Computer Applications. MacGraw-Hill Book Company.