Anda di halaman 1dari 11

KOMPUTASI PROSES

KELOMPOK VII HAPPY LIANI BR KARO 110405056

DEPARTEMEN TEKNIK KIMIA FAKULTAS TEKNIK UNIVERSITAS SUMATERA UTARA MEDAN 2013

PENYELESAIAN PERSAMAAN TAK LINIER DENGAN PROGRAM MATLAB

Masukan dan Keluaran (Input dan Output) Fungsi input digunakan untuk meminta masukan ketika program dijalankan. Fungsi ini menerima parameter berupa string untuk memberikan keterangan tentang masukan yang harus diberikan, pemasukan nilai yang ditampung disuatu variabel adalah Variabel = input (keterangan maukan); Menampilkan hasil, nilai variabel atau keterangan pada saat program dijalankan dapat menggunakan salah satu dari fungsi dibawah ini. disp menampilkan nilai variabel atau string secara sederhana fprintf menampilkan nilai variabel menggunakan string format Beberapa simbol yang digunakan pada fungsi fprintf antara lain :

Pada tampilan bilangan pecahan %f, %e dan %E, presisi dapat diatur dengan menyisipkan format presisi bilangan. Format presisi adalah .p, dengan p berupa nilai yang menyatakan banyaknya angka dibelakang koma. Program berikut untuk menguji masukan dan keluaran. Setiap baris diakhiri dengan tanda titik koma ( ; ).
bilangan = input(Masukan Bilangan = ); disp (Bilangan Tersebut = ); disp (bilangan) matriks = input (Masukan matriks = ); disp (Matriks tersebut = ); disp (matriks)

Simpan dan jalankan program. Apa yang muncul dilayar? Uji untuk masukan berupa bilangan bulat dan bilangan pecahan. Program berikut untuk menguji format keluaran bilangan pecahan.
a = input (Pembilang = ); b = input (Penyebut = ); c = a / b; fprintf (%f dibagi %f sama dengan %f \n, a, b, fprintf (%.3f dibagi %.3f sama dengan %.3f \n, fprintf (%e dibagi %e sama dengan %e \n, a, b, fprintf (%.3e dibagi %.3e sama dengan %.3e \n,

c); a, b, c); c); a, b, c);

Simpan dan jalankan program tersebut. Apa yang muncul di layar?, Jalankan program sebanyak 3 kali dengan masukan yang berbeda-beda. Apa fungsi penyisipan .3 pada format tampilan bilangan? Program berikut akan menguji format keluaran bilangan bulat.
w = input (Bilangan bulat = ); fprintf (desimal: %d \t oktal: %o \t hexadesimal: %x \n, w, w, w);

Simpan dan jalankan program. Apa yang muncul dilayar? Jalankan program sebanyak 3 kali dengan masukan yang berbeda. Komentar Dan Tanda Baca Suatu program yang baik biasanya mempunyai komentar terhadap operasi, pernyataan atau perintah yang diberikan dalam program. Untuk memberikan komentar/keterangan pada perintah MATLAB, harus didahului dengan tanda %. Beberapa perintah dapat diletakkan pada baris yang sama dengan dipisahkan oleh tanda koma atau titik koma. Tanda koma memberitahu MATLAB untuk menampilkan hasil sedangkan tanda titik koma mencegah penampilan hasil. Metode Substitusi Berurut (Successive Substitution Method) Contoh 1 : Tentukan harga x dari persamaan berikut dengan metode substitusi berurut : f(x) = x4 ex + 1 = 0 Penyelesaian : Untuk menyelesaikan persamaan-persamaan tersebut dengan bantuan program komputer (Matlab), maka terlebih dahulu dibuat algoritma dari metode tersebut. Contohnya adalah sebagai berikut : Algoritma : f(x) = x4 ex + 1 = 0 1. Masukkan toleransi, iterasi = 1 2. Masukkan tebakan awal, x 3. Evaluasi fx 4. Jika : 2( fx x) /( fx x) < tol : STOP Tulis : xakar = fx 5. Jika tidak : x = fx 6. Ulangi langkah 3 7. Selesai Penyelesaian metode tersebut dengan program Matlab dapat dengan menggunakan perintah while end atau dengan menggunakan perintah for end. Kedua cara tersebut dapat dilihat di bawah ini. Cara 1 : % Program substitusi berurut : subsitusi.m % Penyelesaian persamaan : x^4 - e^x + 1 = 0 % maka : fx = (e^x - 1)^0.25 clc tol = 0.00001; x = input ('Nilai tebakan awal : '); iterasi = 0 fx = (exp(x) - 1)^0.25 while abs (2*(fx - x)/(fx + x))> tol x=fx; iterasi = iterasi + 1

fx = (exp(x) - 1)^0.25 end Iterasimaksimum = iterasi disp ('Maka akar persamaan =');x=fx Nilai tebakan awal : 1 iterasi = 0 fx = 1.1449 iterasi = 1 fx = 1.2098 iterasi = 2 fx = 1.2385 iterasi = 3 fx = 1.2512 iterasi = 4 fx = 1.2567 iterasi = 5 fx = 1.2592 iterasi = 6 fx = 1.2603 iterasi = 7 fx = 1.2607 iterasi = 8 fx = 1.2609 iterasi = 9 fx = 1.2610 iterasi = 10 fx = 1.2611 iterasi =

11 fx = 1.2611 iterasi = 12 fx = 1.2611 Maka akar persamaan = x= 1.2611 Cara 2 : % Program substitusi berurut : subs.m % Penyelesaian persamaan : x^4 - e^x + 1 = 0 % maka : fx = (e^x - 1)^0.25 clc tol = 0.00001; x = input ('Nilai tebakan awal : '); iterasi = 0 fx = (exp(x) - 1)^0.25 for i = 1:14 x=fx; iterasi = iterasi + 1 fx = (exp(x) - 1)^0.25 while abs(2*(fx-x)/(fx + x))> tol break end end disp ('Maka akar persamaan =');x=fx Nilai tebakan awal : 1 iterasi = 0 fx = 1.1449 iterasi = 1 fx = 1.2098 iterasi = 2 fx = 1.2385 iterasi = 3 fx = 1.2512 iterasi = 4 fx =

1.2567 iterasi = 5 fx = 1.2592 iterasi = 6 fx = 1.2603 iterasi = 7 fx = 1.2607 iterasi = 8 fx = 1.2609 iterasi = 9 fx = 1.2610 iterasi = 10 fx = 1.2611 iterasi = 11 fx = 1.2611 iterasi = 12 fx = 1.2611 iterasi = 13 fx = 1.2611 iterasi = 14 fx = 1.2611 Maka akar persamaan = x= 1.2611 Dari kedua cara ini dapat disimpulkan bahwa untuk menyelesaikan persamaan tersebut lebih efisien dengan menggunakan perintah while end, karena program ini secara otomatis akan bekerja sendiri mencari akar yang dicari dan akan menghentikan iterasi perhitungan jika kondisi yang diberikan sudah tercapai. Sedangkan pada cara kedua, eksekusi program akan dihentikan sampai iterasi maksimum yang diberikan selesai, walaupun kondisi yang

diberikan sudah dicapai atau belum. Pada contoh di atas, dilakukan sampai 14 kali.

for i = 1:14, artinya iterasi

Metode Newton-Raphson (Newton-Raphson method) Contoh : Tentukan harga x dari persamaan berikut dengan metode Newton Rahpson : f(x) = x4 ex + 1 = 0 Penyelesaian : Algoritma metode Newton Raphson : f(x) = x4 ex + 1 = 0 1. Masukkan toleransi, iterasi = 1 2. Masukkan tebakan awal, x 3. Evaluasi f(x), f(x) f ( x) 4. Evaluasi : x1 = x f ' ( x) 5. Jika : 2( x1 x) /( x1 x) < tol : STOP Tulis : xakar = x1 6. Jika tidak : x = x1 7. Kembali ke langkah 4 8. Selesai Penyelesaian metode tersebut dengan program Matlab dilakukan dengan menggunakan perintah while end. Di bawah ini akan diberikan 2 cara penyelesaian yang memberikan hasil yang sama. Perbedaan dan persamaan dari kedua cara tersebut dapat dilihat pada program di bawah ini. Cara 1: % Program Newton - Raphson : fnewton1.m % Penyelesaian persamaan : f(x) = x^4 - e^x + 1 = 0 % f'(x) = 4*x^3 - e^x clc tol = 0.00001; x = input ('Nilai tebakan awal : '); iterasi = 1 fx = x.^4 - exp(x) + 1; dfx = 4*x.^3 - exp(x); x1 = x -(fx/dfx) while abs (2*(x1-x)/(x1 + x))>tol x=x1; iterasi = iterasi + 1 fx = x.^4 - exp(x) + 1; dfx = 4*x.^3 - exp(x); x1 = x -(fx/dfx) end; iterasimaksimum = iterasi disp ('akar persamaan =');x=x1 fnewton1 Nilai tebakan awal : 1 iterasi = 1 x1 =

1.5604 iterasi = 2 x1 = 1.3527 iterasi = 3 x1 = 1.2731 iterasi = 4 x1 = 1.2613 iterasi = 5 x1 = 1.2611 iterasi = 6 x1 = 1.2611 iterasimaksimum = 6 akar persamaan = x= 1.2611 Cara 2: % Program utama Newton - Raphson : fnewton.m % Penyelesaian persamaan : f(x) = x^4 - e^x + 1 = 0 function [x,iterasi] = fnewton(func,dfunc,x,tol); % x = nilai awal (tebakan awal) ; tol = toleransi (keakuratan) iterasi = 0; x0 = x; d = feval (func,x0)/feval(dfunc,x0); while abs(d)>tol x1=x0-d; iterasi=iterasi+1 x0=x1 d = feval(func,x0)/feval(dfunc,x0); end; x = x0; function F= f201(x); F = x.^4 - exp(x) + 1; function F=f202(x); F = 4*x.^3 - exp(x); [x,iterasi] = fnewton('f302','f303',1,0.00001)

iterasi = 1 x0 = 1.5604 iterasi = 2 x0 = 1.3527 iterasi = 3 x0 = 1.2731 iterasi = 4 x0 = 1.2613 iterasi = 5 x0 = 1.2611 x= 1.2611 iterasi = 5 Metode tali busur (secant method) Algoritma metode tali busur/secant : f(x) = x4 ex + 1 = 0 1. Masukkan toleransi, iterasi = 1 2. Masukkan tebakan awal 1, x0 3. Masukkan tebakan awal 2, x1 4. Masukkan f(x0) & f(x1) f ( x1 ) [( x1 ) ( x 0 )] 5. Evaluasi : x2 = x1 f ( x1 ) f ( x 0 ) 6. Evaluasi : f(x2) = x2 7. Jika : 2( x2 x1 ) /( x2 x1 ) < tol : STOP Tulis : xakar = x2 8. Jika tidak : x0 = x1 ; f(x0) = f(x1) x1 = x2 ; f(x1) = f(x2) 9. Kembali ke langkah 5 10. Selesai Penyelesaian metode tersebut dengan program Matlab dilakukan dengan menggunakan perintah while end. % Program Tali Busur : tali.m % Penyelesaian persamaan : f(x) = x^4 - e^x + 1 = 0 clc tol = 0.00001; x0 = input ('Nilai tebakan awal, x0 : '); x1 = input ('Nilai tebakan awal, x1 : ');

iterasi = 1 f0 = x0.^4 - exp(x0) + 1; f1 = x1.^4 - exp(x1) + 1; x2 = x1 - f1*(x1-x0)/(f1-f0) f2=x2; while abs (2*(x2-x1)/(x2 + x1))>tol x0=x1;f0=f1; x1=x2;f1=f2; iterasi = iterasi + 1 f0 = x0.^4 - exp(x0) + 1; f1 = x1.^4 - exp(x1) + 1; x2 = x1 - f1*(x1-x0)/(f1-f0) end; iterasimaksimum = iterasi disp ('akar persamaan =');x=x2 tali Nilai tebakan awal, x0 : 1 Nilai tebakan awal, x1 : 2 iterasi = 1 x2 = 1.0695 iterasi = 2 x2 = 1.1247 iterasi = 3 x2 = 1.3340 iterasi = 4 x2 = 1.2427 iterasi = 5 x2 = 1.2589 iterasi = 6 x2 = 1.2612 iterasi = 7 x2 = 1.2611 iterasi = 8 x2 = 1.2611

iterasimaksimum = 8 akar persamaan = x= 1.2611 Metode posisi palsu (regula falsi method) Algoritma metode posisi palsu : f(x) = x4 ex + 1 = 0 1. Masukkan toleransi, iterasi = 1 2. Masukkan tebakan awal 1, x0 3. Masukkan tebakan awal 2, x1 4. Evaluasi f(x0) & f(x1) f ( x1 ) [( x1 ) ( x 0 )] 5. Evaluasi : x2 = x1 f ( x1 ) f ( x 0 ) Jika : 2( x2 x1 ) /( x2 x1 ) < tol : STOP : xakar = x2 - Evaluasi : f(x2) - Jika f(x2) < 0 ; maka x1 = x2 - Jika tidak, : x0 = x2 7. Kembali ke langkah 4 8. Selesai
6.

Metode pengetengahan selang (bisection method) Algoritma pengetengahan selang : f(x) = x4 ex + 1 = 0 1. Masukkan toleransi, iterasi = 1 2. Masukkan tebakan awal 1, x0 3. Masukkan tebakan awal 2, x1 4. Evaluasi f(x0) & f(x1) ------ syarat : f(x0)*f(x1) < 0 5. xm = (x0 + x1)/2 6. Evaluasi f(xm) 7. Jika : f(xm) = 0 : STOP : xakar = xm 8. Jika f(x1)*f(xm) < 0 x0 = xm x0 = f(xm) 9. Jika f(x1)*f(xm) > 0 x1 = xm x1 = f(xm) 10. Jika : 2( x1 x0 ) /( x1 x0 ) > tol : Kembali ke langkah 5 11. xakar = (x0 + x1)/2 12. Selesai Penyelesaian metode tersebut dengan program Matlab dilakukan dengan menggunakan perintah while end. Penyelesaian metoda posisi palsu dan pengetengahan selang ini mirip dengan penyelesaian dengan metoda tali busur.