METODE REGULA-FALSI/POSISI PALSU (FALSE POSITION METHOD)
Metode regula falsi merupakan metode yang menyerupai metode biseksi, dimana iterasi dilakukan dengan terus melakukan pembaharuan rentang untuk memperoleh akar persamaan. Hal yang membedakan metode ini dengan metode biseksi adalah pencarian akar didasarkan pada slope (kemiringan) dan selisih tinggi dari kedua titik rentang. Titik pendekatan pada metode regula-falsi disajikan pada Persamaan di bawah ini:
Ilustrasi dari metode regula falsi disajikan pada Gambar berikut.
ALGORITMA METODE REGULA-FALSI
- Definisikan fungsi
- Tentukan rentang untuk yang berupa batas bawah dan batas atas
- Tentukan nilai toleransi dan iterasi maksimum
- Hitung dan .
- Untuk iterasi s/d
- Hitung nilai berdasarkan Persamaan di atas.
- Hitung
- Hitung
- Jika , maka dan . Jika tidak, dan .
- Akar persamaan adalah
METODE REGULA-FALSI DI MS.EXCEL
METODE REGULA-FALSI DI PYTHON
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import math, os
os.system('clear')
# Definisi Fungsi
def f(x):
y = math.exp(x) - (5 * x * x)
return y
# Metode Regula Falsi
def RegulaFalsi(a,b):
epsilon1 = 0.000001
epsilon2 = 0.0000001
i = 0
print()
print(' PROGRAM METODE REGULA FALSI ')
print('------------------------------------------------------------------------------------------------------------------------------')
print(' r a c b f(a) f(c) f(b) Selang baru Lebarnya')
print('------------------------------------------------------------------------------------------------------------------------------')
while abs(a - b) > epsilon2:
#c = b - (f(b) * (b - a)/(f(b) - f(a)))
c = (a * f(b) - b * f(a)) / (f(b) - f(a))
if abs (f(c)) < epsilon2 :
a == c
b == c
elif f(a) * f(c) < 0 :
br = ('[a, c]')
elif f(b) * f(c) < 0 :
br = ('[c, b]')
else:
br = (' ')
print(f" {i}\t {a:.6f}\t {c:.6f}\t {b:.6f}\t {f(a):.6f}\t {f(c):.6f}\t {f(b):.6f}\t {br}\t {abs(a-c):.6f} ")
if f(a) * f(c) < 0:
b = c
elif f(b) * f(c) < 0 :
a = c
elif f(c) == 0 :
print()
print('Akar sejati ditemukan, yaitu : ',f'{c:.6f}')
exit()
else:
print('Akar tidak ditemukan!')
exit()
i = i+1
#i += 1
print()
print('Hampiran Akar = ',f"{c:.6f}")
# Input selang a dan b
a = float(input('Input Batas Bawah (a) : '))
b = float(input('Input Batas Atas (b) : '))
#Pemeriksaan Kebenaran Nilai Tebakan Awal dan Metode Regula Falsi
if f(a) * f(b) >= 0:
print()
print('Metode Regula Falsi tidak berlaku di interval ini.')
print()
exit()
else:
# Memanggil Metode BagiDua
RegulaFalsi(a,b)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import math, os | |
os.system('clear') | |
# Definisi Fungsi | |
def f(x): | |
y = math.exp(x) - (5 * x * x) | |
return y | |
# Metode Regula Falsi | |
def RegulaFalsi(a,b): | |
epsilon1 = 0.000001 | |
epsilon2 = 0.0000001 | |
i = 0 | |
print() | |
print(' PROGRAM METODE REGULA FALSI ') | |
print('------------------------------------------------------------------------------------------------------------------------------') | |
print(' r a c b f(a) f(c) f(b) Selang baru Lebarnya') | |
print('------------------------------------------------------------------------------------------------------------------------------') | |
while abs(a - b) > epsilon2: | |
#c = b - (f(b) * (b - a)/(f(b) - f(a))) | |
c = (a * f(b) - b * f(a)) / (f(b) - f(a)) | |
if abs (f(c)) < epsilon2 : | |
a == c | |
b == c | |
elif f(a) * f(c) < 0 : | |
br = ('[a, c]') | |
elif f(b) * f(c) < 0 : | |
br = ('[c, b]') | |
else: | |
br = (' ') | |
print(f" {i}\t {a:.6f}\t {c:.6f}\t {b:.6f}\t {f(a):.6f}\t {f(c):.6f}\t {f(b):.6f}\t {br}\t {abs(a-c):.6f} ") | |
if f(a) * f(c) < 0: | |
b = c | |
elif f(b) * f(c) < 0 : | |
a = c | |
elif f(c) == 0 : | |
print() | |
print('Akar sejati ditemukan, yaitu : ',f'{c:.6f}') | |
exit() | |
else: | |
print('Akar tidak ditemukan!') | |
exit() | |
i = i+1 | |
#i += 1 | |
print() | |
print('Hampiran Akar = ',f"{c:.6f}") | |
# Input selang a dan b | |
a = float(input('Input Batas Bawah (a) : ')) | |
b = float(input('Input Batas Atas (b) : ')) | |
#Pemeriksaan Kebenaran Nilai Tebakan Awal dan Metode Regula Falsi | |
if f(a) * f(b) >= 0: | |
print() | |
print('Metode Regula Falsi tidak berlaku di interval ini.') | |
print() | |
exit() | |
else: | |
# Memanggil Metode BagiDua | |
RegulaFalsi(a,b) |
Comments
Post a Comment