Sabtu, 13 April 2013

PENYELESAIAN PERSAMAAN NON LINEAR DENGAN METODE NUMERIK

Dalam usaha mendapatkan persamaaan matematika yang menjabarkan model dari suatu persoalan nyata, sering solusi yang dicari berupa suatu nilai variabel x sedemikian rupa, sehingga terpenuhi persamaan f (x) = 0 yang digunakan dalam model. Untuk beberapa kasus, melalui faktorisasi f(x) = 0 dapat diperoleh penyelesaian seperti yang diinginkan, namun bentuk yang lebih rumit telah mampu memberikan solusi melalui analisis matematik.

Apa yang dimaksud dengan menentukan x hingga terpenuhi persamaan f(x) = 0 ? secara geometri ini berarti mencari suatu titik hal mana f(x) tepat memotong sumbu x, sehingga f(x) = 0. jika dianggap f(x) sesungguhnya memotong sumbu x, maka dapat dicari suatu interval [a,b], sedemikian rupa sehingga f(a) dan f(b) mempunyai tanda berbeda.


Gambar. 1

Dengan pembatasan interval ini, secara cermat dapat dicari x = yang memberikan nilai f () = 0 sebagai berikut :

1. bagi dua interval [a,b] dan evaluasi nilai f(x) pada titik tengah interval.
2. Apabila f(m) = 0 berarti x = m, bila tidak sama dicari posisi nilai m apakah berada pada interval [a,m] atau interval [m,b] ; yaitu dengan memeriksa perbedaan tanda :

1. jika f (a) dan f(m) berbeda tanda berarti di [a,m]
2. jika f(a) dan f(m) mempunyai tanda sama berarti di [n,b]

proses pembagian interval dapat diulang sampai ditemukan nilai yang memberikan f() = 0.

3.1. Metode Biseksi

Tahap pertama menetapkan nilai sembarang a dan b sebagai batas segmen nilai fungsi yang dicari. Batasan a dan b memberikan hanya bagi fungsi f(x) untuk x = a dan x = b. Langkah selanjutnya adalah memeriksa apakah f(a)*f(b) < 0. Bila terpenuhi berarti terdapat akar fungsi dalam segmen tinjauan. Jika tidak kembali harus ditentukan nilai a dan b agar f (a)* f(b) < 0 terpenuhi. Dengan rumusan , diperiksa apakah nilai mutlak f (m) < 10-6 (batas simpangan kesalahan), Jika besar nilai x = m adalah solusi yang dicari. Jika tidak terpenuhi, ditetapkan batasan baru dengan mengganti nilai b = m apabila f(a)*f(m) < 0, dan mengganti a = m bila f(a)*f(m) > 0.


Gambar. 2

Jika f(a) < f(b) dalam nilai mutlaknya, maka akar persamaan akan terletak lebih dekat ke f(a), (lihat gambar 2). 3.2 Metode Regulasi Falsi Cara yang lebih efektif mendapatkan nilai m adalah menghubungkan f(a) dan f(b) dengan garis lurus dan perpotongan garis dengan sumbu x merupakan nilai m. Seperti pada gambar 3. Cara penetapan m ini dikenal dengan cara Regulasi Falsi dan Algoritmanya sama dengan Metode Biseksi.



Gambar. 3


Proses dengan cara ini memberikan perhitungan yang cepat dibandingkan dengan Metode Biseksi. Pada algoritma, proses dihentikan jika dicapai nilai mutlak f (m) < 10-6, tetapi untuk kecermatan hasil dari matriks ini belum cukup. Syarat kecermatan yang tepat adalah :


Gambar 4

Untuk menghindari masalah yang mungkin terjadi pada prilaku persamaan yang tidak dapat dilacak, perla pembatasan tinjauan interval sesuai dengan sifat fungsi. Hal ini penting dalam metode numerik untuk memperoleh solusi nyata.

Contoh :



untuk mncari besaran x persamaan ini maka bentuk persamaannya diubah menjadi

f (x) = tan x – 2x = 0

dengan mengabaikan akar x = 0 yang bukan solusi persamaan dasar, terlihat bahwa Metode Biseksi dan regulasi Falsi tidak akan memberikan solusi. Karena fungsi f(x) buka fungsi kontinyu untuk nilai kelipatan ganjil dari ( lihat gambar).


Gambar. 5

Algoritma Program Metode Biseksi

1. Tentukan a, b, toleransi dan jumlah iterasi maksimum.
2. Periksa apakah f(a) x f(b) > 0, jika ya keluar dari program karena pada solusi yang diberikan tidak terdapat akar persamaan.
3. Hitung nilai m =
4. Jika nilai mutlak (b-a) < toleransi tuliskan m sebagai hasil perhitungan dan akhiri program, jika tidak lanjutkan kelangkah selanjutnya. 5. Jika jumlah iterasi > iterasi maksimum akhiri program.
6. Jika f(a) x f(b) < 0, maka b = m, jika tidak a = m 7. Kembali ke langkah c Algoritma Program Metode Regulasi Falsi 1. Tentukan a, b, toleransi dan jumlah iterasi maksimum. 2. Periksa apakah f(a) x f(b) > 0 jika ya keluar dari program
3. Hitung nilai m =
4. Jika nilai mutlak (m-a) < toleransi tuliskan m sebagai hasil perhitungan dan akhiri program, jika tidak lanjutkan kelangkah selanjutnya. 5. Jika jumlah iterasi > iterasi maksimum akhiri program
6. Kembali kelangkah c.

Flowchart Metode Biseksi


2. Flowchart Metode Regulasi Falsi

Sama dengan Flowchart Metode Biseksi, kecuali pada langkah ke 6 digantikan dengan :

1. Program Metode Biseksi

soal: tan (x) – x – 0,5 = 0

{Program Metode Biseksi}

Daftar Variabel

a = batas bawah

b = batas atas

tol = toleransi

max-iter = jumlah iterasi maksimum}

Var

A, m, b, F_a, F_m, F_b, tol : real;

Max_iter, it : integer;

Epsilon : real;

Function f(x : real) : real;

Begin

F : = sin (x) / cos (x) – x – 0,5;

End;

Begin

Write (‘batas bawah = ‘); read (a);

Write (‘batas atas = ‘); read (b);

Write (‘toleransi = ‘); read (tol);

Write (‘jumlah iterasi max = ‘); read (max_iter);



It : = 0;

F_a : = f (a);

F_b : = f (b) ;

If (f_a*f_b > 0) then writeln (‘nilai F(a) x F(b) > 0 ‘);

Else

Begin

Write (‘It. a m b f(a) f(b)’);

Written (‘ abs [f(b) – f(a)] / 2’);

Epsilon : = tol + 1

While ((it < max_iter) and (epsilon > tol)) do

Begin

It : = it + 1;

m : = (a + b) / 2 ;

F _m : = f (m);

Write (it : 3,’ ‘, a : 8 : 5,’ ‘, m : 8 : 5,’ ‘,b : 8 : 5,’ ‘);

Writeln (F_a : 8 : 5,’ ‘, F_m : 8 : 5,’ ‘, abs (F_b – F_a) /2:4);

Epsilon : = abs (m – a) ;

If (F_a * F_m < = 0) Then Begin B : = m ; F_b : = F_m; End Else Begin a : = m; F_a : = F_m ; End; End; If (it < = max_iter) then Begin Writeln (‘Toleransi terpenuhi’); Writeln (‘ hasil akhir = ‘, m : 9 : 7); End Else writeln (‘toleransi telah terpenuhi ‘); End; End. Ambil : Batas bawah = 0 Batas atas = 1 Toleransi = 0,0000001 Jumlah iter_max = 30 1. Program Regulasi Falsi sama dengan Biseksi, hanya rumus menentukan m yang diganti seperti pada Flowchart. 3.3 Metode Iterasi Bentuk lain dari metode penentuan akar persamaan adalah dengan memulai suatu perkiraan harga dari akar persamaan. Mulai x0 (perkiraan awal), x1, x2, .... xk, akhirnya konvergen pada , yaitu xk yang cukup dekat pada sesuai dengan tingkat kecermatan yang diinginkan. (metode iterasi tunggal). Dalam hal ini fungsi f(x) ditulis sbb : f (x) = x – g (x) = 0, sehingga = g () ............... (1) kemudian xk+1 = g (xk), k = 0, 1, 2, ....... (2) (1) dan (2) rumusan iterasi Contoh x3 – 3x – 20 = 0 solusi : rubah persamaan dalam bentuk f(x) = x – g(x) sebagai berikut dengan empat cara : 1) x – (3x + 20)1/3 = 0 x0 = 10 2) x – (x3 – 20) / 3 = 0 x1 = 3,68 3) x – 20 / (x2 – 3) = 0 x2 = 3,14 4) x – (3 + 20 / x)1/2 = 0 x3 = 3,08 Rumusan pertama dapat dinyatakan sebgai berikut : Xk+1 = (3xk + 20)1/3 , k = 0, 1, 2, .... Perkiraan awal x0 = 5, diperoleh : X0 = 5 X1 = (3*5 + 20)1/3 = 3,2771 X2 = (3*3,2771 + 20)1/3 = 3,1008 X3 = (3*3,1008 + 20)1/3 = 3,0830 X4 = (3*3,0830 + 20)1/3 = 3,0811 X5 = (3*3,0811 + 20)1/3 = 3,0809 X6 = (3*3,0809 + 20)1/3 = 3,0809 X7 = (3*3,0809 + 20)1/3 = 3,0809 Karena x sudah konstan pada harga 3,0809 Secara grafik :



Dari ketiga persamaan untuk mendapatkan akar persamaan menghasilkan grafik sebagai berikut :

Algoritma Program Iterasi

1. Tentukan x0, toleransi, dan jumlah iterasi maksimum
2. Hitung xbaru = g (x0)
3. Jika nilai (xbaru – x0) < toleransi tuliskan xbaru sebagai hasil perhitungan, jika tidak lanjutkan kelangkah berikutnya. 4. Jika jumlah iterasi > iterasi maksimum akhiri program
5. X0 = xbaru dan kembali kelangkah (b)

Flowchart

Program Iterasi

{Program iterassi untuk fungsi e^x + x^2 -3x - 2=0 x-(e^x+x^2-2)/3=0

dengan g(x)= (e^x+x^2-2)

Daftar Variabel

Xo = harga awal

tol = toleransi

max_iter = jumlah iterasi maksimum}

Var

xo,xb,tol,x :real;

max_iter,it :integer;

epsilon :real;

function g(x:real):real;

begin

g:= (x*x+exp(x)-2)/3;

end;

Begin

write('harga awal =');read(xo);

write('toleransi =');read (tol);

write('jumlah iterasi max =');read(max_iter);

it:=0;

writeln(' it x g(x) f(x) ');

epsilon :=tol+1;

while(ittol) Do

Begin

it :=It+1;

xb := g(xo);

epsilon := abs (x-xo);

writeln( it:3,' ',xo:8:5,' ',xb:8:5,' ',epsilon:4);

xo:=xb;

End;

if (it <=max_iter)Then Begin writeln ('Toleransi terpenuhi'); writeln('Hasil akhir =',xb:9:7); End Else writeln ('toleransi tidak terpenuhi'); readln; End. 3.4 Metode Newton – Raphson Metode yang lebih baik dalam memilih g’(x) adalah dengan membuat garis singgung dari f(x) untuk nilai x yang dipilih , dan dengan menggunakan besaran x dari perpotongan garis singgung terhadap sumbu diperoleh nilai x baru.



Dari diagram ini terlihat tangensial (garis singgung) f(x) adalah :





sehingga



Contoh :

f (x) = x3 – 3x – 20

f’(x) = 3x2 – 3

dengan demikian



perkiraan awal x0 = 5

x0 = 5

x1 = 3,75

x2 = 3,2018

x3 = 3,0859

x4 = 3,0809

x5 = 3,0809

Konvergensi Metode Newton – Raphson

Memperhatikan rumusan



dan syarat konvergensi [g’ (x) ] < 1 berarti :



Apabila nilai turunan fungsi susah untuk dicapai, nilai ini dapat didekati dengan harga – harga fungsi dari hasil dua tahapan proses sebelumnya.

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. Dalam melakukan penghitungan dengan menggunakan metode ini maka perhitungan dapat dihentikan ketika kesalahan relatif semu sudah mencapai / melampaui batas yang diinginkan.

Algoritma Program Newton – Raphson

1. Tentukan x0, toleransi dan jumlah iterasi maximum
2. Hitung xbaru =
3. Jika nilai mutlak (xbaru – x0) < toleransi tuliskan xbaru sebagai hasil perhitungan, jika tidak lanjutkan kelangkah berikutnya. 4. Jika jumlah iterasi > iterasi maksimum akhiri program
5. x = xbaru, dan kembali ke langkah b

Flowchart


Flowchart Metode SECANT


{Program Iterasi untuk fungsi}

ex + x2 – 3x – 2 = 0 x – (ex + x2 – 2) / 3 = 0

dengan g (x) = (ex + x2 – 2) / 3

Daftar Variabel

X0 = harga awal

Tol = Toleransi

Max_iter = Jumlah iterasi maximum}

Var

X0, Xb, tol : real;

Max_iter, it : integer;

Epsilon : real;

Function g (x : real ) : real;

Begin

g : = (x*x + eps^x – 2) / 3;

end;

Begin

Write (‘,Harga awal =’); read (x0);

Write (‘,Toleransi =’); read (x0);

Write (‘,Jumlah iterasi max =’); rea (max_iter);

It : = 0 ;

Writeln (‘ it x g(x) f(x)’);

Epsilon : = tol + 1;

While (it < = max_iter) and (epsilon > tol )); do

Begin

It : = it + 1;

X0 : = g (x0);

Epsilon : = abs ( xb – x0);

Writeln (it : 3,’ ‘,x0 : 8 : 5,’ ‘, xb : 8 : 5,’’,epsilon : 4);

X0 : = Xb ;

End;

If (it < = max_iter) Then Begin Writeln (‘Toleransi terpenuhi’); Writeln (‘hasil akhir = ‘, xb : 9 : 7); End; Else writeln (‘ Toleransi tidak terpenuhi ‘); End. Catatan Ambil Harga awal = 1 Toleransi = 0,0000001 Jumlah iterasi max = 20 { Program Newton – Raphson} Daftar variabel X0 = Harga awal Tol = Toleransi Max_iter = Maksimum Iterasi} Var X0, Xb, tol : real; Max_iter, it : integer; Epsilon : real; Function f(x : real ) : real; Begin f : = x*x – 3*x + exp (x) – 2; end; function f1 (x : real) : real; Begin F1 : = 2*x-3 + exp (x); End ; Begin Write (‘, Harga awal =’) ; read (x0); Write (‘, Toleransi =’) ; read (tol); Write (‘, Jumlah iterasi max =’) ; read (max_iter); It : = 0; Writeln (‘It x f(x) epsilon ‘); Epsilon : = tol + 1; While ( (‘ it < = max_iter) and (epsilon > tol));

Do

Begin

It : = it + 1

Xb : = x0 – f(x0) / f1 (x0);

Epsilon : = abs (xb – x0);

Writeln (it : 3,’’,xb : 8 : 5,’’, f(xb) : 8 : 5,’’,epsilon : 4);

X0 : = xb ;

End;

If ( it < = max_iter) then

Begin

Writeln (‘Toleransi terpenuhi ‘);

Writeln (‘Hasil akhir = ‘, xb : 9 : 7);

End;

Else writeln (‘Toleransi tidak terpenuhi ‘);

Tidak ada komentar:

Posting Komentar