SOAL
nb: untuk soal 6-9 setiap praktikan tidak boleh sama untuk persamaannya.
JAWAB :
1. Sejarah dan perkembangan MATLAB
Sejarah MATLAB
MATLAB (yang berarti "matrix laboratory") diciptakan pada akhir
tahun 1970-an oleh Cleve Moler, yang kemudian menjadi Ketua Departemen
Ilmu Komputer di Universitas New Mexico. Ia merancangnya untuk
memberikan akses bagi mahasiswa dalam memakai LINPACK dan
EISPACK tanpa harus mempelajari Fortran.
Karyanya itu segera menyebar ke universitas-universitas lain dan
memperoleh sambutan hangat di kalangan komunitas matematika terapan.
Jack Little, seorang insinyur, dipertemukan dengan karyanya tersebut selama
kunjungan Moler ke Universitas Stanford pada tahun 1983.
Menyadari potensi komersialnya, ia bergabung dengan Moler dan
Steve Bangert. Mereka menulis ulang MATLAB dalam bahasa pemrograman
C, kemudian mendirikan The MathWorks pada tahun 1984 untuk
melanjutkan pengembangannya. Pustaka yang ditulis ulang tadi kini dikenal
dengan nama JACKPAC. Pada tahun 2000, MATLAB ditulis ulang dengan
pemakaian sekumpulan pustaka baru untuk manipulasi matriks, LAPACK.
MATLAB pertama kali diadopsi oleh insinyur rancangan kontrol
(yang juga spesialisasi Little), tapi lalu menyebar secara cepat ke berbagai
bidang lain. Kini juga digunakan di bidang pendidikan, khususnya dalam
pengajaran aljabar linear dan analisis numerik, serta populer di kalangan
ilmuwan yang menekuni bidang pengolahan citra.
MATLAB banyak digunakan pada :
a. Matematika dan Komputansi
b. Pengembangan dan Algoritma
c. Pemrograman modeling, simulasi, dan pembuatan prototipe
d. Analisa Data , eksplorasi dan visualisasi
e. Analisis numerik dan statistik
f. Pengembangan aplikasi teknik
Perkembangan MATLAB
MATLAB (Matrix Laboratory) adalah sebuah program untuk analisis
dan komputasi numerik dan merupakan suatu bahasa pemrograman
matematika lanjutan yang dibentuk dengan dasar pemikiran menggunakan
sifat dan bentuk matriks. Pada awalnya, program ini merupakan interface
untuk koleksi rutin-rutin numerik dari proyek LINPACK dan EISPACK, dan
dikembangkan menggunkan bahasa FORTRAN namun sekarang merupakan
produk komersial dari perusahaan Mathworks, Inc.yang dalam
perkembangan selanjutnya dikembangkan menggunakan bahasa C++ dan
assembler (utamanya untuk fungsi-fungsi dasar MATLAB).
MATLAB telah berkembang menjadi sebuah environment
pemrograman yang canggih yang berisi fungsi-fungsi built-in untuk
melakukan tugas pengolahan sinyal, aljabar linier, dan kalkulasi matematis
lainnya. MATLAB juga berisi toolbox yang berisi fungsi-fungsi tambahan
untuk aplikasi khusus .
MATLAB bersifat extensible, dalam arti bahwa seorang pengguna
dapat menulis fungsi baru untuk ditambahkan pada library ketika fungsi-
fungsi built-in yang tersedia tidak dapat melakukan tugas tertentu.
Kemampuan pemrograman yang dibutuhkan tidak terlalu sulit bila Anda telah
memiliki pengalaman dalam pemrograman bahasa lain seperti C,
PASCAL,atau FORTRAN.
MATLAB merupakan merk software yang dikembangkan oleh
Mathworks.Inc. MATLAB merupakan software yang paling efisien untuk
perhitungan numeric berbasis matriks. Dengan demikian jika di dalam
perhitungan kita dapat menformulasikan masalah ke dalam format matriks
maka MATLAB merupakan software terbaik untuk penyelesaian numeriknya.
MATLAB yang merupakan bahasa pemrograman tingkat tinggi
berbasis pada matriks sering digunakan untuk teknik komputasi numerik,
yang digunakan untuk menyelesaikan masalah-masalah yang melibatkan
operasi matematika elemen, matrik, optimasi, aproksimasi dll.
Di kemudian hari MATLAB membeli lisensi dari MAPLE sehingga
MATLAB juga didukung komputasi simbolik. Saat ini versi terbaru
MATLAB adalah versi R2010b (versi yang digunakan penulis saat ini), dan
aplikasi ini berbayar! Saya mendapatkan MATLAB dan lisensinya dari
jaringan FTP di ITB.
MATLAB dapat digunakan untuk melakukan bermacam-macam
komputasi, mulai dari aritmatika sederhana sampai perhitungan matriks yang
sangat rumit. MATLAB juga bisa membuat grafik 2 dimensi dan 3 dimensi.
Yang unik di dalam bahasa MATLAB adalah MATLAB hanya mengenal
satu struktur data, yaitu matriks. Vektor adalah matriks kolom dan skalar
adalah matriks baris. Karena hanya mengenal satu macam struktur data, maka
variabel di dalam bahasa MATLAB tidak perlu dideklarasikan dulu dan bisa
langsung diberi nilai.
(Luyeps, 2014)
2. Kelebihan dan kekurangan matlab
Kelebihan
a. Mudah dalam memanipulasi struktur matriks dan perhitungan berbagai
operasi matriks yang meliputi penjumlahan, pengurangan, perkalian,
invers dan fungsi matriks lainnya.
b. Menyediakan fasilitas untuk memplot struktur gambar (kekuatan
fasilitas grafik tiga dimensi yang sangat memadai).
c. Script program yang dapat diubah sesuai dengan keinginan user.
d. Jumlah routine-routine powerful yang berlimpah yang terus
berkembang.
e. Kemampuan interface (misal dengan bahasa C, word dan mathematica).
Kekurangan
a. MatLab memiliki sensitivitas yang tinggi dalam mengeksekusi input
yang dimasukan.
b. Lebih lambat dalam mengeksekusi
(Michael, 2012)
3. Macam – macam program simulasi yang dipakai teknik kimia
a. QUICK BASIC
Program Quick Basic merupakan program awal yang berasal dari turunan
Bahasa C. Program ini sangat dikenal di lingkungan teknik kimia UPN
JATIM. Program ini sangat dasar baik dari Interface ( Tampilan ), Tingkat
Kerumitan, Bahasa Program ( Program Language ) sangat sederhana
sekali. Dengan menguasai program ini, user dapat menciptakan suatu skrip
program yang dapat menyelesaikan permasalahan sendiri.
b. Turbo Pascal
Pengembangan dari Quick Basic yang memudahkan user lebih
mendapatkan hasil yang baik dan akurat serta bahasa program yang tidak
terlalu panjang. Turbo Pascal memiliki sedikit kerumitan dan skrip khusus,
tapi dengan buku panduan yang telah disediakan tidaklah terlalu sulit
untuk di pahami dan di mengerti.
c. Matlab
Sudah banyak sampai saat ini yang menggunakan matlab, dikarenakan
tampilan, bahasa program, serta hasil yang di dapat lebih akurat daripada
menggunakan program Quick Basic dan Turbo Pascal. Matlab sendiri
merupakan software yang paling umum digunakan di kalangan akademisi,
banyak yang mengatakan apabila dapat menguasai Matlab, banyak
perusahaan mencari user.
d. Hysys
Merupakan software simulasi teknik kimia, untuk menghitung proses
industri kimia organik tidak mungkin menggunakan perhitungan manual
karena yang dihitung banyak sekali mulai dari bahan baku sampai hasil /
produk. Dengan Hysys dalam 1 minggu, user dapat menyelesaikan
proyeknya daripada memakan waktu 1 bulan untuk menghitung secara
manual. Hysys dapat di setting menjadi Steady State & Dynamic.
Perusahaan OMG ( Oil, Minning, Gas ) menggunakan software ini untuk
me-optimalkan proses dan hasil. Apabila user dapat menguasai program
hysys ini, banyak perusahaan OMG yang menawarkan gaji diatas 10 Juta
Rupiah.
(Christian, 2013)
4. Persamaan akar-akar kuadrat, metode biseksi, dan metode interpolasi linier.
Persamaan kuadrat adalah persamaan dengan pangkat peubah tertingginya
dua. Bentuk umum persamaan kuadrat : ax2 + bx + c = 0, a tidak sama
dengan 0. Akar persamaan kuadrat ax2 + bx + c = 0 adalah nilai x yang
memenuhi persamaan kuadrat tersebut.
(Anonim, 2012)
Metode biseksi
Metode biseksi merupakan salah satu metode tertutup untuk mentukan
solusi akar dari persamaan non linear atau disebut juga metode pembagian
Interval atau metode yang digunakan untuk mencari akar-akar persamaan
nonlinear melalui proses iterasi, dengan prinsip utama sebagai berikut:
Menggunakan dua buah nilai awal untuk mengurung salah satu
atau lebih akar persamaan non linear.
Nilai akarnya diduga melalui nilai tengah antara dua nilai awal
yang ada.
x1 + x2
𝑋𝑡 =
2
(Prihono, 2012)
Metode Interpolasi Linier merupakam metode untuk menyempurnakan
metode setengah interval. Metode interpolasi Linier disebut juga dengan
metode false position, dengan ini nilai akar dari fungsi dapat lebih cepat
diperoleh. Metode interpolasi didasarkan pada interpolasi antara dua nilai
dari fungsi yang mempunyai tanda berlawanan.
f(xi + 1)
𝑥 ∗ = 𝑥𝑖 + 1 − (xi + 1 − xi)
f(xi + 1) − f(xi)
(Jumliana, 2010)
5. Perbedaan metode biseksi dengan metode interpolasi linier
Perbedaan antara Metode Bisection dan Metode Interpolasi Linier adalah
terletak pada rumus yang digunakan untuk mencari dan memperoleh
perkiraan. Rumus yang digunakan pada metode Bisection lebih sederhana
dibandingkan dengan rumus yang digunakan pada metode Interpolasi Linier
Metode Bisection diperlukan iterasi yang cukup panjang untuk mendapatkan
hasil perkiraan yang eksak, sehingga meskipun mudah untuk digunakan
namun tidak efisien. Sedangkan dengan metode Interpolasi Linier, nilai akar
dari suatu fungsi akan lebih cepat diperoleh, sehingga lebih efisien
dibandingkan dengan metode Bisection.
Rumus Metode Biseksi :
x1 + x2
𝑥𝑡 =
2
Rumus Metode interpolasi Linier :
f(xi + 1)
𝑥 ∗ = 𝑥𝑖 + 1 − (xi + 1 − xi)
f(xi + 1) − f(xi)
(Triatmodjo, 2002)
6. Perhitungan manual akar persamaan dengan menggunakan Metode biseksi
dan Interpolasi Linier
Metode Bisection
Carilah akar dari 3x4-6x2-7x+5=0pada interval [1, 2].
Misalnya x1 = 1
x2 = 2
x1 f(x1) = 3(1)4 – 6(1)2 – 7(1) + 5 = -5
x2 f(x2) = 3(2)4 – 6(2)2 – 7(2) + 5 = 15
xt1 = (x1 + x2)/2= 1+2 / 2 = 1,5
f(xt1) = 3(1,5)4 – 6(1,5)2 – 7(1,5) + 5 = -3,8125
xt2 = (1,5+2) / 2 = 1,75
f(xt2) = 3(1,75)4 – 6(1,75)2 – 7(1,75) + 5 = 2,5117
xt3= (1,5+1,75)/2= 1,625
f(xt3) =3(1,625)4-6(1,625)2-7(1,625)+5 =-1,3001
Untuk iterasi selanjutnya perhatikan tabel berikut:
Iterasi x1 x2 x3=xt f(x1) f(x2) f(xt)
ke
1 1 2 1,5 -5 15 -3,8
2 1,5 1,75 1,75 15,0 -3,81 2,51
3 1,5 1,75 1,625 -3,812 2,511 -1,300
4 1,75 1,625 1,687 2,511 -1,300 0,429
5 1,625 1,6875 1,6562 -1,3000 0,4290 -0,4764
Interpolasi Linier
Carilah akar dari x3+x2-3x-3=0 pada interval [1, 2].
Misalnya x1 = 1 ; f(x1) = (1)3 + (1)2 – 3(1) – 3 = -4
x2 = 2 ; f(x2) = (2)3 + (2)2 – 3(2) – 3 = 3
Maka, xt = x2 - (f(x2)(x2 - x1) / (f(x2) – f(x1)))
= 2 – ((3)(1) / 7) = 1,5714
f(xt) = x*3+x*2-3(x*)-3
= (1,5714)3 + (1,5714)2 – 3(1,5714) – 3
= -1,3644
Selanjutnya dihitung x* dengan akar terletak antara
x = 1,5714 dan x = 2
x* = 2-{3}/{3-(-1,3645)}.(2-1,5714)
= 1,7054
f(x*) = (1,7054)3+(1,7054)2-3(1,7054)-3
= -0,2478
Hitungan dilanjutkan sampai akhirnya didapat nilai f(x*)~0,dapat dilihat
pada tabel berikut:
Iterasi x1 x2 x* f(x1) f(x2) f(x*)
ke
1 1 2 1,5714 -4 3 -1,3645
2 1,5714 2 1,7054 -1,3645 3 -0,2478
3 1,7054 2 1,7279 -0,2478 3 -0,0394
4 1,7279 2 1,7314 -0,0394 3 -0.,0062
(Triatmodjo, 2002)
7. a. Algoritma Metode akar-akar kuadrat
Masukkan inputan a, b, c, d.
Deklarasikan sebagai integer.
Masukkan inputan x1, x2.
Deklarasikan sebagai double.
Hitung nilai determinan dengan menggunakan rumus : d = b*b –
4*a*c.
Jika d = 0, maka x1 = x2 = -b/2*a.
Cetak x1 = x2.
Jika d lebih dari 0, maka hitung x1 = (-b+sqrt(d))/2*a. Cetak x1.
Hitung x2 = (-b-sqrt(d))/2*a. Cetak x2.
Jika d kurang dari 0, maka hitung x1 = -b/2*a+sqrt(-d)/2*a. Cetak
(x1)i.
Hitung x2 = -b/2*a – sqrt(-d)/2*a. Cetak (x2)i.
Proses selesai.
(Junantra, 2012)
b. Algoritma Metode Biseksi
Definisikan fungsi f(x) yang akan dicari akarnya.
Tentukan nilai a dan b
Tentukan torelansi e dan iterasi maksimum N
Hitung f(a) dan f(b)
Jika f(a).f(b)>0 maka proses dihentikan karena tidak ada akar, bila
tidak dilanjutkan.
Hitung f(x)
Bila f(x).f(a)<0 maka b=x dan f(b)=f(x), bila tidak a=x dan f(a)=f(x)
Jika |b-a|<e atau iterasi>iterasi maksimum maka proses dihentikan dan
didapatkan akar = x, dan bila tidak, ulangi langkah 6.
(Kusniya, 2012)
c. Algoritma Metode Interpolasi Linier
Tentukan dua titik P1 dan P2 dengan koordinatnya masing-masing
(x0,y0) dan (x1,y1)
Tentukan nilai x dari titik yang akan dicari
disp('Program persamaan
akar-akar kuadrat');
a=input('Masukkan
konstanta a= ');
b=input('Masukkan
konstanta b= ');
c=input('Masukkan
konstanta c= ');
r=(b^2)-(4*a*c);
disp(['Nilai
determinannya
adalah ',num2str(r)]);
x1=(-b/(2*a)+(((r)^0.5)/
x1=-b+(((r^0.5)/(2*a))); x1=-b/2*a;
(2*a)));
x2=-b-(((r^0.5)/(2*a))); x2=x1;
x2=(-b/(2*a)-(((r)^0.5)/(2*a)));
END
b. Program metode Bisection
clear all;
clc;
disp(' PROGRAM METODE BISECTION ');
disp('---------------------------------------------------------------');
syms x;
f= input ('masukkan persamaan=' );
x1= input ('x1=' );
x2= input ('x2=' );
fx1= subs (f,x,x1);
fx2= subs (f,x,x2);
xt= (x1+x2)/2;
fxt= subs (f,x,xt);
tol= 0.001;
disp('----------------------------------------------------------------');
disp([' x1 x2 xt fx1 fx2 fxt ']);
disp('----------------------------------------------------------------');
while abs (fxt)>=tol;
if (fx1*fxt)<0;
x2=xt;
fx2=fxt;
else
x1=xt;
fx1=fxt;
end
xt= (x1+x2)/2;
fxt= subs(f,x,xt);
disp([ x1' x2' xt' fx1' fx2' fxt' ]);
end;
HASIL PROGRAM :
FLOWCHART :
START
syms x;
disp('PROGRA
M METODE
BISECTION')
f= input ('masukkan
persamaan=' );
x1= input ('x1=' );
x2= input ('x2=' );
disp([' x1 x2
xt fx1 fx2
fxt ']);
while abs
(fxt)>=tol;
if
No else
(fx1*fxt)<0;
Yes Yes
x2=xt; x1=xt;
fx2=fxt; fx1=fxt;
disp([ x1'
x2' xt'
fx1' fx2'
fxt' ]);
No
END
c. Metode Interpolasi Linier
clear all;
syms x;
disp(' PROGRAM METODE INTERPOLASI LINIER ');
disp('==================================================
============');
y = input ('masukkan persamaan=' );
x1 = input ('x1 = ');
x2 = input ('x2 = ');
t=input('masukkan hingga iterasi ke-= ');
fx1 = subs (y,x,x1);
fx2 = subs (y,x,x2);
xt = x2-(fx2*(x2-x1)/(fx2-fx1));
fxt = subs (y,x,xt);
disp('---------------------------------------------------------------');
disp([' x1 x2 xt fx1 fx2 fxt ']);
disp('--------------------------------------------------------------');
for h=x1:t
if(fx1*fxt)<0
x1=xt;
fx1=fxt;
else
x1=x2;
fx1=fx2;
x2=xt;
fx2=fxt;
end
xt=x2-(fx2*(x2-x1)/(fx2-fx1));
fxt = subs(y,x,xt);
disp([ x1' x2' xt' fx2' fx2' fxt' ]);
end
HASIL PROGRAM :
FLOWCHART:
START
syms x;
disp('PROGRAM
METODE
INTERPOLASI
LINIER')
disp([' x1
x2 xt
fx1 fx2
fxt ']);
for
h=x1:t
if(fa*fs3)<0 No else
Yes Yes
x1=x2;
x1=xt; fx1=fx2;
fx1=fxt; x2=xt;
fx2=fxt;
Yes
xt=x2-(fx2*(x2-x1)/(fx2-
fx1));
fxt = subs(y,x,xt);
No
END
PEMBAHASAN :
Dengan menggunakan metode Interpolasi Linier, nilai akar dari suatu fungsi akan
lebih cepat diperoleh.
9. Metode Interpolasi Linier
clear all;
syms x;
disp(' PROGRAM METODE INTERPOLASI LINIER ');
disp('===================================================
=========');
y = input ('masukkan persamaan=' );
x1 = input ('x1 = ');
x2 = input ('x2 = ');
t=input('masukkan hingga iterasi ke-= ');
fa = subs (y,x,x1);
fb = subs (y,x,x2);
x3 = x2-(fb*(x2-x1)/(fb-fa));
fs3 = subs (y,x,x3);
disp('------------------------------------------------------------');
disp([' x1 x2 x3 fa fb fs3 ']);
disp('------------------------------------------------------------');
for h=x1:t;
if(fa*fs3)<0
x1=x3;
fa=fs3;
else
x1=x2;
fa=fb;
x2=x3;
fb=fs3;
end
x3=x2-(fb*(x2-x1)/(fb-fa));
fs3 = subs(y,x,x3);
disp([ x1' x2' x3' fa' fb' fs3' ]);
end
HASIL PROGRAM :
10. a. Menggunakan persamaan x3+4x2-5=3x
Metode Biseksi
clear all;
clc;
disp(' PROGRAM METODE BISECTION ');
disp('---------------------------------------------------------------');
syms x;
f= input ('masukkan persamaan=' );
x1= input ('x1=' );
x2= input ('x2=' );
fx1= subs (f,x,x1);
fx2= subs (f,x,x2);
xt= (x1+x2)/2;
fxt= subs (f,x,xt);
tol= 0.001;
disp('----------------------------------------------------------------');
disp([' x1 x2 xt fx1 fx2 fxt ']);
disp('----------------------------------------------------------------');
while abs (fxt)>=tol;
if (fx1*fxt)<0;
x2=xt;
fx2=fxt;
else
x1=xt;
fx1=fxt;
end
xt= (x1+x2)/2;
fxt= subs(f,x,xt);
disp([ x1' x2' xt' fx1' fx2' fxt' ]);
end;
HASIL PROGRAM :
FLOWCHART :
START
syms x;
disp('PROGRA
M METODE
BISECTION')
f= input ('masukkan
persamaan=' );
x1= input ('x1=' );
x2= input ('x2=' );
disp([' x1 x2
xt fx1 fx2
fxt ']);
while abs
(fxt)>=tol;
if
No else
(fx1*fxt)<0;
Yes Yes
x2=xt; x1=xt;
fx2=fxt; fx1=fxt;
Yes
xt= (x1+x2)/2;
fxt= subs(f,x,xt);
disp([ x1'
x2' xt'
fx1' fx2'
fxt' ]);
No
END
Metode Interpolasi Linier
clear all;
syms x;
disp(' PROGRAM METODE INTERPOLASI LINIER ');
disp('==============================================
==============');
y = input ('masukkan persamaan=' );
x1 = input ('x1 = ');
x2 = input ('x2 = ');
t=input('masukkan hingga iterasi ke-= ');
fa = subs (y,x,x1);
fb = subs (y,x,x2);
x3 = x2-(fb*(x2-x1)/(fb-fa));
fs3 = subs (y,x,x3);
disp('------------------------------------------------------------');
disp([' x1 x2 x3 fa fb fs3 ']);
disp('------------------------------------------------------------');
for h=x1:t;
if(fa*fs3)<0
x1=x3;
fa=fs3;
else
x1=x2;
fa=fb;
x2=x3;
fb=fs3;
end
x3=x2-(fb*(x2-x1)/(fb-fa));
fs3 = subs(y,x,x3);
disp([ x1' x2' x3' fa' fb' fs3' ]);
end
HASIL PROGRAM :
FLOWCHART :
START
syms x;
disp('PROGRAM
METODE
INTERPOLASI
LINIER')
disp([' x1
x2 xt
fx1 fx2
fxt ']);
for
h=x1:t
if(fa*fs3)<0 No else
Yes Yes
x1=x2;
x1=xt; fx1=fx2;
fx1=fxt; x2=xt;
fx2=fxt;
Yes
xt=x2-(fx2*(x2-x1)/(fx2-
fx1));
fxt = subs(y,x,xt);
No
END
b. Menggunakan persamaan 9x3+2x2-6x+2=0
Metode Biseksi
clear all;
clc;
disp(' PROGRAM METODE BISECTION ');
disp('-------------------------------------------------------------');
syms x;
f= input ('masukkan persamaan=' );
a= input ('masukkan x1=' );
b= input ('masukkan x2=' );
q=input('masukkan hingga iterasi ke-= ');
fa= subs (f,x,a);
fb= subs (f,x,b);
c= (a+b)/2;
fc= subs (f,x,c);
if(fa*fb)>0
a= input (['masukkan nilai batas bawah lain=' ]);
b= input (['masukkan nilai batas atas lain=' ]);
fa= subs (f, x, a);
fb= subs(f, x, b);
else
c= (a+b)/2;
fc= subs(f, x, c);
end
disp('-------------------------------------------------------------');
disp([' a b c fa fb fc ']);
disp('-------------------------------------------------------------');
for o=a:q;
if (fa*fc)<0
b=c;
fb=fc;
else
a=c;
fa=fc;
end
c= (a+b)/2;
fc= subs(f,x,c);
disp([ a' b' c' fa' fb' fc' ]);
end;
HASIL PROGRAM :
FLOWCHART : START
syms x;
disp('PROGRAMPMETOD
E BISECTION')
if(fa*fb)>0 No else
Yes Yes
disp([' a b c
fa fb fc ']);
for
o=a:q;
if (fa*fc)<0 No else
Yes Yes
b=c; a=c;
fb=fc; fa=fc;
Yes
c= (a+b)/2;
fc= subs(f,x,c);
No
END
Interpolasi Linier
clear all;
syms x;
disp(' PROGRAM METODE INTERPOLASI LINIER ');
disp('==============================================
==============');
y = input ('masukkan persamaan=' );
x1 = input ('x1 = ');
x2 = input ('x2 = ');
t=input('masukkan hingga iterasi ke-= ');
fa = subs (y,x,x1);
fb = subs (y,x,x2);
x3 = x2-(fb*(x2-x1)/(fb-fa));
fs3 = subs (y,x,x3);
disp('------------------------------------------------------------');
disp([' x1 x2 x3 fa fb fs3 ']);
disp('------------------------------------------------------------');
for h=x1:t;
if(fa*fs3)<0
x1=x3;
fa=fs3;
else
x1=x2;
fa=fb;
x2=x3;
fb=fs3;
end
x3=x2-(fb*(x2-x1)/(fb-fa));
fs3 = subs(y,x,x3);
disp([ x1' x2' x3' fa' fb' fs3' ]);
end
HASIL PROGRAM :
FLOWCHART : START
syms x;
disp('PROGRAM
METODE INTERPOLASI
LINIER')
fa = subs (y,x,x1);
fb = subs (y,x,x2);
x3 = x2-(fb*(x2-x1)/(fb-
fa));
fs3 = subs (y,x,x3);
disp([' x1
x2 x3
fa fb
fs3 ']);
for
h=x1:t;
if(fa*fs3)<0 No else
Yes Yes
x1=x2;
x1=x3; fa=fb;
fa=fs3; x2=x3;
fb=fs3;
Yes
x3=x2-(fb*(x2-x1)/(fb-fa));
fs3 = subs(y,x,x3);
No
END
11. PERSAMAAN VAN DER WAALS
a. Metode Bisection
clear all;
clc;
disp(' PROGRAM METODE BISECTION ');
disp('---------------------------------------------------------------');
syms x;
r=0.082054;
a=2.283;
b=0.04278;
disp('persamaan= (p*x)-((p*b)*(x^2))+(x*a)+(a*b)-((r*t)*(x^2))');
p= input('Masukkan Tekanan(P)=' );
t= input('Masukkan suhu(T(K))=' );
y= (p*x)-((p*b)*(x^2))+(x*a)+(a*b)-((r*t)*(x^2));
x1= input('x1=' );
fx1= subs(y,x,x1);
x2= input('x2=' );
fx2= subs(y,x,x2);
xt= (x1+x2)/2;
fxt= subs(y,x,xt);
tol= 0.001;
disp('----------------------------------------------------------------');
disp([' x1 x2 xt fx1 fx2 fxt ']);
disp('----------------------------------------------------------------');
while abs (fxt)>=tol;
if (fx1*fxt)<0;
x2=xt;
fx2=fxt;
else
x1=xt;
fx1=fxt;
end
xt= (x1+x2)/2;
fxt= subs(y,x,xt);
disp([ x1' x2' xt' fx1' fx2' fxt' ]);
end;
Algoritma Metode Bisecttion :
a. Menentukan dua nilai x (xa dan xb) sebagai nilai awal perkiraan.
Masukan inputan r, a dan b
b. Jika nilai awal telah didapatkan selanjutnya menentukan nilai x (misal
xt) baru menggunakan persamaan xt = (xa+xb)/2
c. Langkah selanjutnya, melakukan langkah 2 dan 3 hingga didapatkan
f(xt) = 0 atau mendekati 0..
HASIL PROGRAM 1 :
HASIL PROGRAM 2 :
HASIL PROGRAM 3 :
syms x;
disp(' PROGRAM
METODE
BISECTION ');
r=0.08205;
a=2.283;
b=0.04278;
disp('persamaan= (p*x)-
((p*b)*(x^2))+(x*a)+(a*b)-
((r*t)*(x^2))');
p= input('Masukkan Tekanan(P)=' );
t= input('Masukkan suhu(T(K))=' );
y= (p*x)-((p*b)*(x^2))+(x*a)+(a*b)-
((r*t)*(x^2));
x1= input('x1=' );
fx1= subs(y,x,x1);
x2= input('x2=' );
fx2= subs(y,x,x2);
xt= (x1+x2)/2;
fxt= subs(y,x,xt);
tol= 0.001;
disp([' x1 x2 xt
fx1 fx2 fxt ']);
while abs
(fxt)>=tol;
if (fx1*fxt)<0; No else
Yes Yes
x2=xt; x1=xt;
fx2=fxt; fx1=fxt;
Yes
xt= (x1+x2)/2;
fxt= subs(y,x,xt);
No
END
b. Metode Interpolasi Linier
clear all;
clc;
disp(' PROGRAM INTERPOLASI LINIER ');
disp('==========================================================')
;
syms x;
r=0.082054;
a=2.283;
b=0.04278;
disp('Persamaan= (p*x)-((p*b)*(x^2))+(x*a)+(a*b)-((r*t)*(x^2))');
p=input('Masukkan tekanan= ');
T=input('Masukkan suhu(K)= ');
y=(p*x)-((p*b)*(x^2))+(x*a)+(a*b)-((r*T)*(x^2));
x1=input('X1= ');
fx1=subs(y,x,x1);
x2=input('X2= ');
fx2=subs(y,x,x2);
tol=0.001;
xt=x2-(fx2*x2-x1)/(fx2-fx1);
fxt=subs(y,x,xt);
disp('************************************************************');
disp(' x1 x2 xt f(x1) f(x2) f(xt) ');
disp('************************************************************');
fprintf('%1.4f %10.4f %10.4f %10.4f %10.4f %10.4f\n',x1,x2,xt,fx1,fx2,fxt);
while abs(fxt)>tol
if (fx1*fxt)<tol
x1=xt;
fx1=fxt;
else
x1=x2;
fx1=fx2;
x2=xt;
fx2=fxt;
end;
xt=x2-(fx2*(x2-x1))/(fx2-fx1);
fxt=subs(y,x,xt);
fprintf('%1.4f %10.4f %10.4f %10.4f %10.4f %10.4f\n',x1,x2,xt,fx1,fx2,fxt);
end
Algoritma Metode interpolasi Linier :
Tentukan dua titik P1 dan P2 dengan koordinatnya masing-masing
(x0,y0) dan (x1,y1)
Tentukan nilai x dari titik yang akan dicari
START
syms x;
disp(' PROGRAM
INTERPOLASI LINIER
');
r=0.082054;
a=2.283;
b=0.04278;
disp('Persamaan= (p*x)-
((p*b)*(x^2))+(x*a)+(a*b)-
((r*t)*(x^2))');
p=input('Masukkan tekanan= ');
T=input('Masukkan suhu(K)= ');
y=(p*x)-
((p*b)*(x^2))+(x*a)+(a*b)-
((r*T)*(x^2));
x1=input('X1
= ');
fx1=subs(y,x,x1
);
x2=input('
X2= ');
fx2=subs(y,x,x2);
tol=0.001;
xt=x2-(fx2*x2-x1)/(fx2-fx1);
fxt=subs(y,x,xt);
disp(' x1 x2 xt
f(x1) f(x2) f(xt) ');
fprintf('%1.4f %10.4f %10.4f
%10.4f %10.4f %10.4f\
n',x1,x2,xt,fx1,fx2,fxt);
while
abs(fxt)>tol
if (fx1*fxt)<tol No else
Yes Yes
x1=x2;
x1=xt; fx1=fx2;
fx1=fxt; x2=xt;
fx2=fxt;
Yes
xt=x2-(fx2*(x2-x1))/(fx2-fx1);
fxt=subs(y,x,xt);
No
END
TABEL UNTUK V BISEKSI DAN INTERPOLASI :
PEMBAHASAN :
Pada metode bisection bahwa semakin tinggi tekanan maka semakin tinggi nilai V
nya, sedangkan pada metode Interpolasi Linier semakin tinggi tekanan maka
semakin kecil nilai V nya.
DAFTAR PUSTAKA