I. Tujuan
- Dapat mencari nilai akar dari suatu persamaan non linear.
- Dapat menggunakan metode tabel, biseksi, false position, Raphson-Newton, dan
secant untuk menemukan akar dari suatu persamaan non linear.
- Dapat mencari nilai akar dari suatu persamaan non linear dengan metode tabel,
biseksi, false position, Raphson-Newton, dan secant menggunakan bahasa
pemprograman C# serta flowchart.
A. Metode Tabel
Metode Tabel adalah salah satu metode dalam metode numerik yang
digunakan untuk mencari akar dari suatu persamaan. Prinsip dari Metode Tabel ini
adalah memasukan nilai x antara batas tertentu (batas atas dan batas bawah) kedalah
suatu fungsi, jika nilai fungsi (fx) mendekati nilai nol maka nilai x itulah yang
dianggap sebagai akar persamaan. Metode ini sangat lemah, artinya metode ini
memiki keakuratan yang sangat kurang dan sangat sulit untuk mendapatkan nilai eror
yang kecil. Penggunaan metode ini biasanya untuk mencari nilai pendekatan awal
pada metode metode lain seperti newton raphson atau pun metode secant.
Algoritma Metode Tabel :
(1) Definisikan fungsi f(x)
(2) Tentukan batas bawah (a) dan atas (b)
(3) Tentukan nilai toleransi dan iterasi maksimum (n)
(4) Hitung step pembagi h
H = (b – a) / n
(5) Untuk i = 1 s/d n, hitung xi = a + i.h; dan yi
(6) Bila |f(xi)| < toleransi, maka akar = xi, dan proses dapat dihentikan.
(7) Jika tidak, kembali ke proses 5
B. Metode Biseksi
D. Metode Raphson-Newton
E. Metode Secant
Pada Metode Newton-Raphson memerlukan syarat wajib yaitu fungsi f(x)
harus memiliki turunan f'(x). Sehingga syarat wajib ini dianggap sulit karena tidak
semua fungsi bisa dengan mudah mencari turunannya. Oleh karena itu muncul ide
dari yaitu mencari persamaan yang ekivalen dengan rumus turunan fungsi. Ide ini
lebih dikenal dengan nama Metode Secant. Ide dari metode ini yaitu menggunakan
gradien garis yang melalui titik (x0, f(x0)) dan (x1, f(x1)). Perhatikan gambar
dibawah ini.
xi xi 1
xi 1 xi yi
yi yi 1
Start
f(x) =
a=?b=?
T
f(a).f(b)<0
n = ? tol = ?
|f(a+i*h)|<tol T
Y
Akar = a + i * h
Stop
B. Metode Biseksi
Start
f(x) =
a=?b=?
T
f(a).f(b)<0
tol = ?
c=(a+b)/2
Y
Akar = c | f(c) | < tol
T
Stop
Y
F(a).f(c) < 0 b=c
T
a=c
C. Metode Regula Falsi
Start
f(x) =
a=?b=?
T
f(a).f(b)<0
tol = ?
Y
Akar = c | f(c) | < tol
T
Stop
Y
F(a).f(c) < 0 b=c
T
a=c
D. Metode Raphson-Newton
Start
f(x) =
f-1(x) =
X[0] = ? tol=?
i=0
x[0] = x[i + 1]
| f(x[i + 1]) | < tol T
i++;
Y
Akar = x[i + 1]
Stop
E. Metode Secant
Start
f(x) =
tol=?
i=1
x[i-1]=? x[i] = ?
x[i - 1] = x[i];
| f[i + 1]) | < tol T
i++;
Y
Akar = x[i + 1]
Stop
IV. Hasil Coding dan Form pada C#
Pada praktikum ini akan dibandingkan hasil akar persamaan f(x) = X^3 – X^2 – 2 ;
dengan metode tabel, biseksi, regula falsi, Raphson-Newton, dan Secant.
A. Metode Tabel
a = Convert.ToDouble(textBox1.Text);
b = Convert.ToDouble(textBox2.Text);
n = Convert.ToDouble(textBox3.Text);
tol = Convert.ToDouble(textBox4.Text);
h = (b - a) / n;
B. Metode Biseksi
a = Convert.ToDouble(textBox1.Text);
b = Convert.ToDouble(textBox2.Text);
if ((f(a) * f(b)) > 0)
{
textBox1.Text = "";
textBox2.Text = "";
}
tol = Convert.ToDouble(textBox4.Text);
nurul:
c = ((b - a) / 2.0) + a;
if ((Math.Abs(f(c))) <= tol)
{
textBox5.Text = c.ToString();
}
else
{
if ((f(a) * f(c)) < 0)
{
b = c;
goto nurul;
}
else
{
a = c;
goto nurul;
}
}
}
}
tol = Convert.ToDouble(textBox4.Text);
nurul:
c = ((b - a) / 2.0) + a;
if ((Math.Abs(f(c))) <= tol)
{
textBox5.Text = c.ToString();
int row = 0;
dataGridView1.Rows.Add();
row = dataGridView1.Rows.Count - 2;
dataGridView1["Column1", row].Value = c;
dataGridView1["Column2", row].Value = f(c);
dataGridView1.Refresh();
}
else
{
if ((f(a) * f(c)) < 0)
{
int row = 0;
dataGridView1.Rows.Add();
row = dataGridView1.Rows.Count - 2;
dataGridView1["Column1", row].Value = c;
dataGridView1["Column2", row].Value = f(c);
dataGridView1.Refresh();
b = c;
goto nurul;
}
else
{
int row = 0;
dataGridView1.Rows.Add();
row = dataGridView1.Rows.Count - 2;
dataGridView1["Column1", row].Value = c;
dataGridView1["Column2", row].Value = f(c);
dataGridView1.Refresh();
a = c;
goto nurul;
}
}
}
}
C. Metode Regula Falsi
a = Convert.ToDouble(textBox1.Text);
b = Convert.ToDouble(textBox2.Text);
tol = Convert.ToDouble(textBox4.Text);
nurul:
c = (b * f(a) - a * f(b))/(double)(f(a) - f(b));
if ((Math.Abs(f(c))) <= tol)
{
textBox5.Text = c.ToString();
int row = 0;
dataGridView1.Rows.Add();
row = dataGridView1.Rows.Count - 2;
dataGridView1["Column1", row].Value = c;
dataGridView1["Column2", row].Value = f(c);
dataGridView1.Refresh();
}
else
{
if ((f(a) * f(c)) < 0)
{
int row = 0;
dataGridView1.Rows.Add();
row = dataGridView1.Rows.Count - 2;
dataGridView1["Column1", row].Value = c;
dataGridView1["Column2", row].Value = f(c);
dataGridView1.Refresh();
b = c;
goto nurul;
}
else
{
int row = 0;
dataGridView1.Rows.Add();
row = dataGridView1.Rows.Count - 2;
dataGridView1["Column1", row].Value = c;
dataGridView1["Column2", row].Value = f(c);
dataGridView1.Refresh();
a = c;
goto nurul;
}
}
}
D. Metode Raphson-Newton
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public double f(double m)
{
return m * m * m - m * m - 2;
}
public double g(double n)
{
return 3 * n * n - 2 * n;
}
private void button1_Click(object sender, EventArgs e)
{
int i;
double tol;
double[] x;
x = new double[100];
x[0] = Convert.ToDouble(textBox1.Text);
tol = Convert.ToDouble(textBox2.Text);
i = 0;
nurul:
x[i] = x[0];
x[i + 1] = x[i] - (f(x[i]) / g(x[i]));
if ((Math.Abs(f(x[i + 1]))) < tol)
{
int row = 0;
dataGridView1.Rows.Add();
row = dataGridView1.Rows.Count - 2;
dataGridView1["Column1", row].Value = i;
dataGridView1["Column2", row].Value = x[i + 1];
dataGridView1["Column3", row].Value = f(x[i + 1]);
dataGridView1.Refresh();
textBox4.Text = x[i + 1].ToString();
textBox5.Text = i.ToString();
}
else
{
int row = 0;
dataGridView1.Rows.Add();
row = dataGridView1.Rows.Count - 2;
dataGridView1["Column1", row].Value = i;
dataGridView1["Column2", row].Value = x[i + 1];
dataGridView1["Column3", row].Value = f(x[i + 1]);
dataGridView1.Refresh();
x[0] = x[i + 1];
i++;
goto nurul;
}
}
}
E. Metode Secant
tol = Convert.ToDouble(textBox3.Text);
i = 1;
x[i - 1] = Convert.ToDouble(textBox1.Text);
x[i] = Convert.ToDouble(textBox2.Text);
if ((y(x[i]) * y(x[i - 1])) < 0)
{
nurul:
x[i + 1] = x[i] - y(x[i]) * ((x[i] - x[i - 1]) /
(y(x[i]) - y(x[i - 1])));
if ((Math.Abs(y(x[i + 1]))) < tol)
{
int row = 0;
dataGridView1.Rows.Add();
row = dataGridView1.Rows.Count - 2;
dataGridView1["Column1", row].Value = i;
dataGridView1["Column2", row].Value = x[i + 1];
dataGridView1["Column3", row].Value = y(x[i + 1]);
dataGridView1.Refresh();
textBox4.Text = x[i + 1].ToString();
textBox5.Text = i.ToString();
}
else
{
int row = 0;
dataGridView1.Rows.Add();
row = dataGridView1.Rows.Count - 2;
dataGridView1["Column1", row].Value = i;
dataGridView1["Column2", row].Value = x[i + 1];
dataGridView1["Column3", row].Value = y(x[i + 1]);
dataGridView1.Refresh();
x[i - 1] = x[i];
i++;
goto nurul;
}
}
else
{
textBox1.Text = "";
textBox2.Text = "";
}
}
}
Analisa dan Simpulan
A. Analisa
Pada praktikum mencari nilai akar dari persamaan non-linear ini akan dibandingkan
hasil akar dengan metode tabel, biseksi, regula falsi, Raphson-Newton, dan secant.
Untuk memudahkan maka persamaan yang dipakai sama, yaitu f(x) = x 3 – x2 – 2 .
1. Metode Tabel
Berdasarkan coding hasil praktikum, setelah mendeklarasikan fungsi f(x), kita
dapat memasukkan nilai batas bawah (a) dan batas atas (b). Suatu persamaan
dikatakan memiliki akar jika berpotongan dengan sumbu X sehingga untuk
menemukan akar, f(a) * f(b) harus bernilai negatif. Metode tabel ini akan
membagi sumbu X dari a hingga b sebanyak n yang disebut h, nilai h yang
mendekati akar x itulah yang dicari. Berdasarkan praktikum akar persamaan dari
f(x) = x3 – x2 – 2 adalah x = 1,7 dengan i=9 dan f(x) = 0,022999. Menurut
perhitungan sebagai berikut: ............................................................................
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
Metode tabel ini memliki kekurangan dari segi keakuratannya, karena hanya
membagi sumbu X dari a hingga b sebanyak n, sehingga jikalau n yang
diinputkan kecil maka nilai toleransi yang dimasukkan seharusnya lebih besar
daripada metode-metode lainnya. Namun metode ini biasanya untuk mencari nilai
pendekatan awal pada metode metode lain seperti newton raphson atau pun
metode secant.
2. Metode Biseksi
Konsep utama dari metode biseksi yaitu membagi sumbu X menjadi dua bagian
dari a hingga b, sampai ditemukan nilai akar x dengan toleransi yang telah
ditentukan. Berdasarkan hasil praktikum akar dari persamaan f(x) = x 3 – x2 – 2
adalah x = 1,6953125 dengan f(x) = -0,0016..., Adapun menurut perhitungan
sebagai berikut :
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
Pencarian nilai akar x menggunakan metode biseksi ini memiliki nilai yang lebih
akurat dibandingkan menggunakan metode tabel, karena tidak ada batas nilai n
(yang digunakan pada metode tabel) sehingga sistem akan terus membagi 2 nilai
a dan b yang baru sampai nilai tengah mendekati akar x dengan toleransi yang
telah ditentukan. Nilai toleransi yang diinputkan pada metode ini juga dapat
diperkecil tidak ada batasan n seperti pada metode tabel.
Situs:
http://nana.lecturer.pens.ac.id/index_files/materi/Teori_Metnum/MetNum3-PersNonLInier_baru.ppt
http://agungimam.blogspot.co.id/2013/04/algoritma-source-code-metode-tabel.html
http://www.academia.edu/7957915/Metode_Numerik_Penyelesaian_Persamaan_Non_Linier
https://gofar.files.wordpress.com/2007/09/modul-numerik1.pdf