Buku Pemrograman Komputer - MATLAB
Buku Pemrograman Komputer - MATLAB
Y.C. Danarto
Bregas Siswahjono T.S.
Paryanto
Mengetahui,
Ketua Pelaksana Kegiatan SP4 Ketua Tim Penyusun
Jurusan Teknik Kimia UNS
Mengetahui/Menyetujui,
Pembantu Rektor I UNS Dekan Fakultas Teknik UNS
Edisi Pertama
Edisi pertama, Cetakan pertama, November 2005
Tim Penulis
iv
DAFTAR ISI
» m =
1 2 3
4 5 6
di direktori c:\coba dengan nama file data1.txt, maka dapat dilakukan dengan
mengetik :
» m=[1 2 3;4 5 6]
m =
1 2 3
4 5 6
» diary 'c:\coba\data1.txt'
Apapun yang tertulis di command window setelah perintah ini akan disimpan
sampai kita menutup file ini dengan mengetikkan :
» diary off
OPERATOR MATEMATIKA
MATLAB dapat melakukan operasi-operasi aritmatika dasar berikut:
No. OPERASI SIMBOL
1 Pemangkatan ^
2 Perkalian; Pembagian * ; / atau \
3 Penambahan; Pengurangan + ; -
String
String dalam MATLAB adalah tipe data yang terdiri dari huruf-huruf
dan/atau nilai-nilai ASCII yang ditampilkan representasinya. String adalah teks
yang diawali dan diakhiri dengan tanda (‘......’).
Contoh:
» g='selamat datang'
g =
selamat datang
» size(g)
ans =
1 14
» whos
Name Size Bytes Class
ans 1x2 16 double array
g 1x14 28 char array
Grand total is 16 elements using 44 bytes
10
Setiap karakter dalam suatu string adalah satu elernen dalam array, dengan setiap
elemennya berukuran 2 byte.
Untuk melihat representasi ASCII karakter string dapat dilakukan
dengan operasi aritmetik terhadap string atau mengkonversikannya
menggunakan fungsi double.
Contoh:
» double(g)
ans =
Columns 1 through 12
115 101 108 97 109 97 116 32 100 97 116
97
Columns 13 through 14
110 103
» abs(g)
ans =
Columns 1 through 12
115 101 108 97 109 97 116 32 100 97 116
97
Columns 13 through 14
110 103
Karena string merupakan array numerik dengan atribut khusus, string dapat
dimanipulasi menggunakan sernua metode manipulasi array yang tersedia, dalam
MATLAB.
» t=g(1:5)
t =
selam
Kata ‘selam’ dapat dibalik dengan cara:
» t=g(5:-1:1)
t =
males
Fungsi disp
Fungsi disp memungkinkan untuk menampilkan string tanpa
menampilkan nama variabelnya.
» disp(nama)
jojon
atau
» disp('jojon')
jojon
Syarat menggunakan disp adalah variabelnya harus berupa strings, jadi
jika ingin menampilkan sebuah angka, terlebih dahulu. merubahnya ke dalam
bentuk strings dengan menggunakan fungsi num2stro. Fungsi num2stro
menghasilkan string, meskipun terlihat seperti angka (skalar). Perhatikan contoh
berikut.
» c=234
c =
234
» h=num2str(c)
h =
234
» double(h)
ans =
50 51 52
» h+2
ans =
52 53 54
Jelas bahwa h+2 bukan 236, karena h mewakili nilai ASCII dari string 2, 3 dan 4
yaitu masing-masing 50, 51 dan 52
Skalar
Skalar adalah sebuah bilangan tunggal yang secara matriks berukuran
1x1. Operasi skalar merupakan dasar matematika. Kalkulator biasa melakukan
perhitungan skalar. Tentu saja MATLAB bisa melakukan dengan lebih baik.
12
Namun jika dalam sekali waktu kita ingin melakukan operasi yang sama pada
beberapa bilangan, perulangan operasi skalar akan menghabiskan waktu dan
tidak praktis. Untuk itu MATLAB menyediakan operasi pada tipe data array
yang akan dibahas berikutnya.
Array
Untuk menghitung nilai, y=sin(x); 0 ≤ x ≤ π. Tidak mungkin
menghitung semua nilai pada interval tersebut. Kita bisa mengevaluasi nilainya
pada setiap jarak 0,1π. Untuk mudahnya kita membuat tabel:
atau
» x=[0:0.1:1]*pi
13
atau
» x=linspace(0,pi,11)
Matriks
Matriks merupakan bentuk utama MATLAB. Seperti haInya array,
matriks juga didefenisikan elemen demi elemen. Untuk memahami operasi
matriks dasar, perhatikan contoh-contoh berikut ini.
» a=[1 2 3] %penentuan matriks a
a =
1 2 3
» b=[1 2 1; 3 2 1; 2 1 3] %penentuan matriks b
b =
1 2 1
3 2 1
2 1 3
14
Tanda titik koma memisahkan antar baris matriks, sedangkan antar kolom cukup
dengan spasi.
Pada perkalian matriks di atas yang perlu diingat adalah jumlah kolom a harus
sama dengan jumlah baris b. Jika tidak demikian maka MATLAB akan
memberikan pesan kesalahan:
» d=b*a
??? Error using ==> *
Inner matrix dimensions must agree.
Jika b bukan matriks bujur sangkar, maka akan ada pesan kesalahan
» det(a)
??? Error using ==> det
Matrix must be square.
» inv(b) %invers b, b harus matriks bujursangkar
ans =
-0.5000 0.5000 0
0.7000 -0.1000 -0.2000
0.1000 -0.3000 0.4000
» f=a' %transpose matriks a
f =
1
2
3
Elemen pertama pada variabel ans adalah jumlah baris dan kedua adalah jumlah
kolom.
Terdapat berbagai fungsi matriks yang tersedia dalam MATLAB yang
bisa anda pelajari dengan mengetikkan:
» help matfun
Juga untuk mengetahui matrik elementer yang tersedia, ketikkan:
» help elmat
Tentu saja ini bisa dipahami jika anda sudah memahami matematika matriks.
Selain operasi matriks dasar MATLAB juga menyediakan operasi
antar elemen yang sangat berguna. Dot atau titik (.) adalah tanda yang
digunakan unutk operasi-operasi tersebut. Sebagai contoh operasi matriks X dan
matriks Y meliputi X.^Y; X.*Y dan X./Y. Pada operasi ini tiap elemen
dioperasikan dengan elemen yang bersesuaian posisinya dalam matriks. Dengan
demikian ukuran matriks X dan Y harus sama.
Bentuk ini tidak perlu digunakan dalam penjumlahan atau pengurangan
karena sudah merupakan operasi antar elemen.
» X=[1 2;3 4]
X =
1 2
3 4
» Y=[2 3;1 4]
Y =
2 3
1 4
» X.*Y % perkalian antar elemen
ans =
2 6
3 16
» X*Y % perkalian standar matriks
ans =
4 11
10 25
» Z=[2 3]
Z =
2 3
» X.*Z
??? Error using ==> .*
Matrix dimensions must agree.
1.3. M-FILE
16
Membentuk M-File
Untuk membuat M-File, klik File pada menu pull-down di MATLAB
command window, lalu pilih New dan klik M-File. Di layar akan muncul
MATLAB Editor/Debugger. Selanjutnya di layar ini dapat ditulis argumen-
argumen yang diinginkan, dapat diedit penulisannya dan sebagainya. Setelah
selesai melakukan pengetikan, klik File pada layar MATLAB Editor/Debugger
dan pilih Save As... . Beri nama yang Anda inginkan untuk file tersebut,
misalnya contoh11.m kemudian klik Save. Pastikan file yang disimpan dalam
direktori yang mudah untuk dipanggil.
Berikut ini contoh sederhana script file.
Contoh 1.1
% Script file contoh11.
% Kurva fungsi y=(sin x)/x
x = pi/100:pi/100:10*pi;
y = sin(x)./x;
plot(x,y)
grid
17
Untuk mengesekusi script file di atas maka pada Command Window ketikkan
nama file yang telah disimpan sebelumnya misal » contoh11. Dengan syarat
bahwa sebelumnya directory path-nya sudah ditujukan ke tempat file yang
disimpan. Hasil run contoh di atas, di layar akan muncul.:
0.8
0.6
0.4
0.2
-0.2
-0.4
0 5 10 15 20 25 30 35
Jika perintah MATLAB tidak diakhiri dengan titik koma, hasil perintah
serta nama variabelnya akan ditampilkan kembali dalam command window.
Supaya tampilannya lebih bagus, untuk menampilkan nama variabel digunakan
perintah disp. Perintah echo on membuat perintah-perintah yang dibuat di M-
File akan ditampilkan kembali di command window, sedangkan echo off
19
berfungsi sebaliknya. Perintah input memungkinkan untuk meminta input dari
pemakai saat M-File dijalankan.
Secara umum fungsi M-File didefinisikan menggunakan command
function. Sintaks standar untuk command function adalah:
function[output1,output2,...]=NamaFunction(inputl,input2,..)
Untuk memberi keterangan mengenai maksud dan tujuan M-File yang
kita buat, agar orang lain juga paham dengan M-File tersebut, perlu adanya suatu
keterangan (help) dan untuk membuatnya dapat dilakukan dengan menggunakan
command % dari MATLAB.
Contoh 12
function [x,y]=gerak_parabola(sudut,V0,g,t);
%[x,y]=gerak_parabola(sudut,V0,g,t)
%Menghitung jarak (x, m) dan tinggi (y, m)
%sebagai fungsi sudut lemparan (dalam radian),
%kecepatan awal (V0, m/detik),
%percepatan gravitasi (g, m/detik^2)
%dan waktu (t, detik)
x=V0*cos(sudut)*t;
y=V0*sin(sudut)*t-g/2*t.^2;
Jika kita menginginkan keterangan tentang M-file tersebut, kita ketikkan pada
Command Window:
» help gerak_parabola
[x,y]=gerak_parabola(sudut,V0,g,t)
Menghitung jarak (x, m) dan tinggi (y, m)
sebagai fungsi sudut lemparan (dalam radian),
kecepatan awal (V0, m/detik),
percepatan gravitasi (g, m/detik^2)
dan waktu (t, detik)
Menjalankan M-File
Untuk memanggil atau mengeksekusi M File, yang perlu dilakukan
adalah dengan memindahkan path search dari MATLAB compiler. Pada
dasarnya, proses eksekusi compiler MATLAB adalah dengan mencan command
atau definisi operator yang ada dan mengeksekusi definisi script atau operator
pertama yang ditulis dan ditemui direktori MATLAB (di direkton bin atau
toolbox).
20
Set Path dapat dilakukan dengan cara membuka menu pull down di
MATLAB command editor, pilih File kemudian pilih Set Path. Dari menu
tersebut arahkan current directory ke direktori tempat di mana disimpan script
yang ingin dieksekusi dengan cara mengetikkan atau browsing directory ke
tempat penyimpanan script yang akan dieksekusi.
Ada beberapa cara menjalankan fungsi M-File. Misalkan fungsi
gerak_parabola (contoh 12) dapat dijalankan dengan cara, antara lain:
» [jarak,tinggi]=gerak_parabola(pi/4,40,9.8,1)
x =
28.2843
y =
23.3843
» [jarak,tinggi]=gerak_parabola(pi/4,40,9.8,[1:3])
jarak =
28.2843 56.5685 84.8528
tinggi =
23.3843 36.9685 40.7528
[x,y]=feval('gerak_parabola',pi/4,40,9.8,1)
x =
28.2843
y =
23.3843
feval('namafungsi', input1,input2,...)
Contoh 13
» g=inline('6-x^2')
g =
Inline function:
g(x) = 6-x^2
» g(2)
ans =
2
Contoh 14
» radius=inline('sqrt(x^2+y^2)','x','y')
radius =
Inline function:
radius(x,y) = sqrt(x^2+y^2)
» radius(2,3)
ans =
3.6056
PERSAMAAN ALJABAR
2 LINIER
⎛ a 11 a 12 a 13 | b 1 ⎞
⎜ ⎟
⎜ a 21 a 22 a 23 | b 2 ⎟
⎜a a 33 | b 3 ⎟⎠
⎝ 31 a 32
⎛ a 11 a 12 a 13 | b1 ⎞
⎜ ⎟
⎜ a '22 a '23 | b '2 ⎟
⎜ ''
| b 3'' ⎟⎠
⎝ a 33
b 3''
x3 = ''
,
a 33
x2 =
(b '
2 − a '23 x 3 ),
a '22
x1 =
(b 1 − a 12 x 2 − a 13 x 3
.
)
a 11
Persamaan dasar
a11x1 + a12x2 + a13x3 = b1 .... (2.1)
a21x1 + a22x2 + a23x3 = b2 .... (2.2)
a31x1 + a32x2 + a33x3 = b3 .... (2.3)
Normalisasi pers. (2.1) dengan cara membagi a11
1 1 1
x1 + a12x2 + a13x3 = b1 .... (2.4)
a 11 a 11 a 11
1 1
x2 + a '23 x 3 = b '2 .... (2.7)
a '22 a '22
'
[Pers.(2.6) - a 32 x Pers.(2.7)]
b 3''
x3 = ''
a 33
Solusi x2 dari pers. (2.5)
x2 =
(b '
2 − a '23 x 3 )
a '22
Solusi x1 dari pers. (2.1)
x1 =
(b 1 − a 12 x 2 − a 13 x 3 )
a 11
% Eliminasi Gauss
for k=1:n
for i=k+1:n
m(i,k)=A(i,k)/A(k,k);
for j=k:n
A(i,j)=A(i,j)-m(i,k)*A(k,j);
end
B(i)=B(i)-m(i,k)*B(k);
end
end
% Substitusi Balik
x(n)=B(n)/A(n,n);
for i=n-1:-1:1
sum=B(i);
for k=i+1:n
sum=sum-A(i,k)*x(k);
end
x(i)=sum/A(i,i);
end
clear all
clc
% Penyusunan Matriks A
A = [1 1 1 1
2 10 5 7
5 6 3 3
2 3 1 1];
% Penyusunan Matriks B
B = [1 6.1 4.3 1.8]';
n = 4; % Orde matriks
x = elimgauss(A,B,n);
disp(' ')
disp('Fraksi masing-masing type batubara')
disp('----------------------------------')
x1 = x(1)
x2 = x(2)
x3 = x(3)
x4 = x(4)
Keluaran program
Penyelesaian :
Persamaan (2.2.1)
x 1 + x2 + x3 = 1
Substitusi persamaan (2.2.3) ke persamaan (2.2.2)
P1O PO PO
x1 + 2 x2 + 3 x3 = 1
PT PT PT
clear all
clc
% Data-data
P = [5/2 5/3 5/4]; % atm
H = [20 30 55]; % kcal
Pt = 2; % atm
Ht = 30; % kcal
% Penyusunan Matriks A
A = [1 1 1
P(1)/Pt P(2)/Pt P(3)/Pt
H(1) H(2) H(3)];
% Penyusunan Matriks B
B = [1 1 Ht]';
n = 3; % Orde matriks
x = elimgauss(A,B,n);
disp(' ')
disp('Fraksi Mol masing-masing komponen')
disp('---------------------------------')
x1 = x(1)
x2 = x(2)
x3 = x(3)
Jika matriks identitas tersebut dikalikan dengan matriks lain maka akan
dihasilkan matriks itu sendiri. Contohnya jika matriks tersebut dikalikan dengan
B yaitu suatu matriks yang berukuran 1 x 3.
⎡1 0 0 ⎤ ⎡ b 1 ⎤ ⎡ b1 ⎤
⎢0 1 0⎥ ⎢ b ⎥ = ⎢ b ⎥
⎢ ⎥ ⎢ 2⎥ ⎢ 2⎥
⎢⎣0 0 1⎥⎦ ⎢⎣ b 3 ⎥⎦ ⎢⎣ b 3 ⎥⎦
I B = B
Inversi matriks A adalah jika inversi matriks A tersebut dikalikan dengan A
maka akan diperoleh matriks identitas.
A-1 A = I
⎡a a 12 ⎤
Inversi matriks A ukuran 2 x 2 ⎢ 11
a 22 ⎥⎦
dapat ditentukan dengan cara
⎣a 21
1 ⎡ a 22 − a 12 ⎤
A-1 = ⎢
a 11a 22 − a 12 a 21 ⎣− a 21 a 11 ⎥⎦
Contoh 2.3. Konstanta Kecepatan Reaksi Phase Gas Nitrit Oksida dengan
Oksigen
Data konstanta kecepatan reaksi phase gas nitrit oksida dengan oksigen
T, K 10-9 k , cc/ (mol det)
300 7,1
413 4,0
564 2,8
m
Jika k sesuai dengan persamaan k = A T exp (-E/T)
Tentukan A, m, dan E
Penyelesaian
k = A Tm exp (-E/T)
ln k = ln A + m ln T – E/T
Dari data-data di atas
22,68336 = ln A + 5,70378 m – 0,00333 E
22,10956 = ln A + 6,02345 m – 0,00242 E
21,75289 = ln A + 6,33505 m – 0,00177 E
untuk ln A = x1
m = x2
32
E = x3
x1 + 5,70378 x2 – 0,00333 x3 = 22,68336
x1 + 6,02345 x2 – 0,00242 x3 = 22,10956
x1 + 6,33505 x2 – 0,00177 x3 = 21,75289
Dalam bentuk matriks
⎡1 5,70378 − 0,00333⎤ ⎡ x 1 ⎤ ⎡22,68336⎤
⎢1 6,02345 − 0,00242 ⎥ ⎢ x ⎥ = ⎢ 22,10956 ⎥
⎢ ⎥⎢ 2 ⎥ ⎢ ⎥
⎢⎣1 6,33505 − 0,00177 ⎥⎦ ⎢⎣ x 3 ⎥⎦ ⎢⎣ 21,75289 ⎥⎦
clear all
clc
% Data-data
T = [ 300 413 564]; % K
k = [ 7.1 4.0 2.8]*10^9; % cc/(mol.det)
% Penyusunan Matriks AA
AA = [ 1 log(T(1)) 1/T(1)
1 log(T(2)) 1/T(2)
1 log(T(3)) 1/T(3)];
% Penyusunan Matriks BB
BB = log(k);
CC = inv(AA)*BB';
disp(' ')
disp('Parameter konstanta kecepatan reaksi')
disp('------------------------------------')
A = exp(CC(1))
m = CC(2)
E = -CC(3)
Penyelesaian
Sh = K1 (Re)K2 (Sc)K3
log (Sh) = log (K1) + K2 log (Re) + K3 log (Sc)
Dari tabel-tabel di atas, diperoleh
1,64048 = x1 + 4,03342 x2 – 0,22185 x3
1,33244 = x1 + 3,72346 x2 – 0,22185 x3
1,38382 = x1 + 3,49415 x2 + 0,25527 x3
disusun dalam bentuk matriks
34
Program Penyelesaian
% Parameter Transfer Massa
% Sh=k1*(Re)^k2*(Sc)^k3
% log(Sh) = log(k1) + k2*log(Re) + k3*log(Sc)
% Penyelesaian dilakukan dengan Inversi Matriks
%
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
clear all
clc
% Data-data
Sh = [43.7 21.5 24.2];
Re = [10800 5290 3120];
Sc = [0.6 0.6 1.8];
% Penyusunan Matriks A
A = [1 log10(Re(1)) log10(Sc(1))
1 log10(Re(2)) log10(Sc(2))
1 log10(Re(3)) log10(Sc(3))];
% Penyusunan Matriks B
B = [log10(Sh(1))
log10(Sh(2))
log10(Sh(3))]
k = A\B;
disp(' ')
disp('Konstanta Parameter Transfer Massa ')
disp('-----------------------------------')
k1 = 10^k(1)
k2 = k(2)
k3 = k(3)
Keluaran Program
Konstanta Parameter Transfer Massa
-----------------------------------
k1 =
0.0058
k2 =
0.9938
k3 =
0.5853
Contoh 2.5. Neraca Massa Steady State pada Kolom Distilasi Bertingkat
Xylena, styrena, toluena, dan benzena dipisahkan dengan kolom distilasi seperti
ditunjukkan pada gambar 2.1.
Tentukan kecepatan alir D1, D2, B1, B2, D, dan B.
36
D1 7 % Xylena
4 % Styrena
54 % Toluena
35 % Benzena
D
#2
18 % Xylena
B1 24 % Styrena
42 % Toluena
16 % Benzena
F = 70 mol/menit
#1
D2
15 % Xylena 15 % Xylena
25 % Styrena 10 % Styrena
40 % Toluena 54 % Toluena
20 % Benzena 21 % Benzena
B
#3
B2 24 % Xylena
65 % Styrena
10 % Toluena
1 % Benzena
Program Matlab
% Neraca Massa Steady State pada Kolom Distilasi Bertingkat
% Xylena, styrena, toluena, dan benzena
% dipisahkan dengan kolom distilasi bertingkat
%
% Penyelesaian dilakukan dengan Dekomposisi LU
%
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
clear all
clc
37
% Penyusunan Matriks A
A = [0.07 0.18 0.15 0.24
0.04 0.24 0.10 0.65
0.54 0.42 0.54 0.1
0.35 0.16 0.21 0.01];
% Penyusunan Matriks B
B = [0.15*70 0.25*70 0.40*70 0.20*70]';
disp(' ')
disp('Penyelesaian untuk D1 B1 D2 B2 adalah : ')
% Dekomposisi Matriks A
[L,U] = lu(A);
% Membentuk Matriks B*
Bstar = inv(L)*B;
% Menentukan Matriks x
X = inv(U)*Bstar
disp('Umpan kolom 2')
D1 = X(1);
B1 = X(2);
D = D1 + B1
X_Dx = (A(1,1)*D1+A(1,2)*B1)/D
X_Ds = (A(2,1)*D1+A(2,2)*B1)/D
X_Dt = (A(3,1)*D1+A(3,2)*B1)/D
X_Db = (A(4,1)*D1+A(4,2)*B1)/D
disp('Umpan kolom 3')
D2 = X(3);
B2 = X(4);
B = D2 + B2
X_Dx = (A(1,3)*D2+A(1,4)*B2)/B
X_Ds = (A(2,3)*D2+A(2,4)*B2)/B
X_Dt = (A(3,3)*D2+A(3,4)*B2)/B
X_Db = (A(4,3)*D2+A(4,4)*B2)/B
Keluaran program :
Penyelesaian untuk D1 B1 D2 B2 adalah :
X =
26.2500
17.5000
8.7500
17.5000
Umpan kolom 2
D =
43.7500
X_Dx =
0.1140
X_Ds =
0.1200
X_Dt =
0.4920
X_Db =
0.2740
Umpan kolom 3
38
B =
26.2500
X_Dx =
0.2100
X_Ds =
0.4667
X_Dt =
0.2467
X_Db =
0.0767
Program Matlab
% Persamaan Virial
% PV = a + bP + cP^2
% Untuk mengevaluasi konstanta-konstanta a, b, dan c,
% telah dilakukan percobaan dengan data-data di bawah ini
%
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
clear all
clc
% Data-data
P = [1 2 3]; % atm
V = [4 9/2 16/3]; % L/mol
% Matriks A
A = [1 P(1) (P(1))^2
1 P(2) (P(2))^2
1 P(3) (P(3))^2];
% Matriks B
B = [P(1)*V(1)
39
P(2)*V(2)
P(3)*V(3)];
C = A\B;
disp(' ')
disp('Konstanta persamaan virial adalah : ')
disp('------------------------------------')
a = C(1)
b = C(2)
c = C(3)
Keluaran Program
Konstanta persamaan virial adalah :
------------------------------------
a =
1
b =
2
c =
1
% Data-data
Ca = [0.7 0.9 1.6];
Cb = [0.2 0.3 0.2];
ra = [0.4567 1.0707 2.5917];
% Matriks A
A = [1 log10(Ca(1)) log10(Cb(1))
1 log10(Ca(2)) log10(Cb(2))
1 log10(Ca(3)) log10(Cb(3))];
% Matriks B
B = [log10(ra(1))
log10(ra(2))
log10(ra(3))];
konst = A\B;
disp(' ')
disp('Konstanta adalah : ')
disp('-------------------')
k = 10^konst(1)
a = konst(2)
b = konst(3)
Keluaran Program
% Persamaan Virial
% ra=k*(Ca)^a*(Cb)^b
% log(ra) = log(k) + a*log(Ca) + b*log(Cb)
% Untuk mengevaluasi konstanta-konstanta a, b, dan k,
% telah dilakukan percobaan dengan data-data di bawah ini
%
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
echo off
Konstanta adalah :
-------------------
k =
3.4990
a =
2.1000
b =
0.7998
PERSAMAAN ALJABAR
3 NON LINIER
Secara umum ada 2 metode yang digunakan, yaitu metode akolade dan metode
terbuka.
Metode akolade adalah metode yang menggunakan 2 titik awal tebakan, yang
kedua titik tersebut harus mengapit jawaban yang dimaksud. Termasuk metode
ini adalah metode Bisection (bagi dua).
Berbeda dengan metode akolade, metode terbuka hanya menggunakan satu
tebakan awal. Termasuk metode ini adalah metode Newton-Raphson.
Langkah penyelesaian :
1. Tentukan interval perkiraan awal, misalkan antara xA dan xB
2. Hitung f(xA) dan f(xB)
3. Interval yang benar akan menghasilkan f(xA) dan f(xB) pada daerah yang
berbeda (sebelah kanan dan kiri akar persamaan yang dicari)
Akar persamaan
xA xB
Uji apakah [f(xA)]x[f(xB)] < 0. Jika salah, maka ulangi langkah (1) dan
(2).
4. Hitung xM, yaitu titik tengah interval
xA + xB
xM = …. (3.1)
2
5. Hitung f(xM)
a. Jika [f(xA)]x[f(xM)] > 0, maka xA baru = xM dan xB tetap
45
xA xM xB
= xA baru
x M = xA Baru
xA xB
6. Uji apakah f(xm) < Toleransi. Jika tidak, ulangi langkah (4) untuk
menentukan xm yang baru.
x=[xa:(xb-xa)/50:xb];
plot(x,contoh31(x));
xlabel('x')
ylabel('f(x)')
grid on
xm=(xa+xb)/2;
fm=contoh31(xm);
while abs(xa-xb)>tol
xm=(xa+xb)/2;
fm=contoh31(xm);
if fa*fm<0
xb=xm;
fb=contoh31(xb);
else
xa=xm;
fa=contoh31(xa);
end
end
t =['f(x)=0 untuk x = 'num2str(xm)];
disp (t)
p = 0.2; %atm
kp = 0.4568;
f_x = x./(1-x).*sqrt(2*p./(2+x))-kp;
Dalam memberikan masukan untuk batas bawah dan atas, secara teori nilai
konversi berkisar antara 0 – 0,99. Untuk x = 1, nilai kp akan tak terdefinisi.
Keluaran program :
Masukkan Perkiraan Batas Bawah dan Batas Atas
batas bawah = 0
batas atas = 0.99
f(x)=0 untuk x = 0.53487
dengan y = b/4v, untuk b adalah koreksi van der Waals dan v adalah volum
molar. Jika z = 0,892 berapakah y ?
z = 0.892;
f_y = (1-y+y.^2-y.^3)-z.*(1-y.^3);
Secara umum ada 3 nilai yang memenuhi persamaan di atas karena f(y)
merupakan persamaan orde 3. Tetapi nilai untuk y yang tepat adalah antara 0 – 1.
f(xi)
Akar persamaan
Garis
f(xi+1) singgung
xi+1 xi
Slope (kemiringan) garis singgung pada titik xi adalah turunan pertama fungsi
f(x), didekati dengan
f’(x) = f ( x i ) − 0
x i − x i +1
xi+1 = xi - f ( x i ) ….(3.2)
f ' (x i )
Langkah penyelesaian
1. Tentukan tebakan awal xi
2. Hitung f(xi) dan f’(xi)
3. Hitung xi+1 dengan persamaan (26)
4. Uji apakah | xi+1 - xi | < toleransi atau
49
| f(xi) | < toleransi,
Jika ya, maka selesai.
Jika tidak, xi baru = xi+1, ulangi langkah (2)
Adakalanya f’(x) sulit dicari dengan analitis. Untuk itu dapat dilakukan
pendekatan secara numeris
f’(x)= f ( x 0 + ε) − f ( x 0 − ε) …. (3.3)
2ε
Contoh 3.3. Temperatur Dew Point untuk Campuran Benzena dan Toluena
Tentukan temperatur dew point (Titik Embun) dan komposisi liquid dari suatu
campuran gas benzena dan toluena pada tekanan 1 atm (760 mmHg). Komposisi
uap adalah 0,77 fraksi mol benzena dan 0,23 fraksi mol toluena.
Campuran gas dan liquid diasumsikan sebagai campuran ideal. Kondisi
kesetimbangan sesuai dengan Hukum Roult-Dalton, yiP=xiPiO Tekanan uap
B
murni dihitung dengan persamaan log p O = A − untuk pO dalam mmHg
T+C
dan T dalam OC
Benzena Toluena
A 6,89745 6,95334
B 1206,35 1343,94
C 220,237 219,377
clc
clear all
xnew=input(' Nilai untuk tebakan awal = ');
xold=0;
tol=0.0001;
eps=0.0001;
Proram penyelesaian
function fT=contoh33(T)
% Temperatur Dew Point untuk Campuran Benzena dan Toluena
% Komposisi uap y1 = 0,77 dan y2 = 0,33
% Tekanan uap murni
% o ( B )
% Pi = 10^( A + ------- )
% ( (T + C) )
% Hukum Roult-Dalton
% yi * P
% xi = --------
% o
% Pi
% x1 + x2 = 1
% Nama File : contoh33.m
% Surakarta, Oktober 2005
% ---------------------------------------------------------------
Keluaran program
Nilai untuk tebakan awal = 85
x-old f(x-old)
51
85 0.17029
89.639 0.014053
90.0946 0.0001176
90.0985 8.4065e-009
akar persamaan, x = 90.0985 f(x) = 8.4065e-009
Sehingga T = 90,0985 OC
1 ⎛1⎞
( ) ⎛
= ⎜ ⎟ ln Re f + ⎜14 −
⎝k⎠ ⎝
5,6 ⎞
k ⎠
⎟
f
Re = 3750;
k = 0.28;
f_f = ((1/k)*log(Re*sqrt(f))+(14-5.6/k))*sqrt(f)-1;
Keluaran program
Nilai untuk tebakan awal = 0.01
x-old f(x-old)
0.01 0.51676
0.0044847 -0.080152
0.005105 -0.0020744
0.0051219 -1.4377e-006
akar persamaan, x = 0.0051219 f(x) = -1.4377e-006
52
sehingga f = 0,0051219
% Persamaan Peng-Robinson
%
% Penyelesaian dilakukan dengan fungsi fzero
%
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
53
% ***************************************************************
% Data-data
clear all
clc
global R T P
R=8.3137; % m^3.kPa/(kgmol.K)
T=340; % K
P=10^4; % kPa
% R.T a
% P = ------ - -------------------
% V - b V(V + b) + b(V - b)
% Parameter utk CO2
fV=R*T/(V-b)-a/(V*(V+b)+b*(V-b))-P;
Keluaran program
V =
1.6792e-001
function fT=contoh36(T)
% Penurunan temperatur karena pelepasan panas
% Cp = 7,053 + 1,2242.10(-3) T - 2,6124.10(-7) T^2
% q = integral(cp dT)
% Data
% q = -2616 BTU/lbmol
% To = 550 oF
q = -2616; % BTU/lbmol
To = 550; % oF
T =
1.9992e+002
Contoh-contoh lain
Contoh 3.7. Debit Aliran dengan Pompa pada Pipa
Suatu cairan akan dialirkan dari tangki 1 ke tangki 2 melalui pipa berdiameter D,
dengan bantuan pompa. Panjang ekuivalen pipa, Le. Dari persamaan Bernoulli
antara titik 1 dan titik 2 diperoleh persamaan berikut :
f.Le.v 2
z 2 − z1 + − Hm = 0
2.g.D
faktor friksi didekati dengan persamaan empiris :
0,0596 dengan
f=
Re 0,215
ρ .v.D
Re =
µ
55
Karakteristik pompa sentrifugal yang dapat dipakai berupa hubungan antara head
pompa ( Hm, cm) dengan debit ( Q, cm3/dtk) dapat didekati dengan persamaan :
Hm = 3718,5 – 2,34967.Q + 7,8474.10-4.Q2 – 9,5812.10-8.Q3
Debit aliran dihitung dengan persamaan :
π
Q= .D 2 .v
4
Data-data yang diketahui : ρ = 1 g/cm3; µ = 0,01 g/cm.dtk; g = 981 cm/dtk2; z1 =
300 cm; z2 = 800 cm; D = 4 cm; Le = 20.000 cm. Hitung berapa kecepatan aliran
dalam pipa (v) dan debitnya (Q).
% Data-data
rho=1; % Densitas, g/cm^3
myu=0.01; % Viskositas, g/cm.dtk
g=981; % grafitasi, cm/dtk^2
z1=300; % tinggi titik 1, cm
z2=800; % tinggi titik 2, cm
D=4; % diameter pipa, cm
Le=20000; % panjang ekivalen, cm
% Perhitungan
vhit=fzero(@F37,200)
Qhit=pi/4*D^2*vhit
Program terkait
function fv = F37(v)
% Langkah perhitungan
% tebak v ---> hitung bil. Reynold ---> hitung faktor friksi
% ---> hitung debit ---> hitung head pompa --->
% hitung pers. Bernoulli
% f Le v^2
% z2 - z1 + -------- - Hm = 0
% 2 g D
% Nama File : F37.m
% Surakarta, Oktober 2005
% ---------------------------------------------------------------
Qhit =
2.8610e+003
Terhitung kecepatan aliran 227,6735 cm/detik dengan debit 2.861 cm3/detik.
0,25.z. ∆H FR
T = TF -
0,25.(1 - z).C pA + (0,75 − 0,5.z).C pB + 0,25.C pC
dengan :
B PC
dengan K =
T= 2
⎛K⎞ PA .PB
ln⎜ ⎟
⎝A⎠
0,25.(1 − z)
PA = .P
(1 − 0,5.z)
(0,75 − 0,5.z)
PB = .P
(1 − 0,5.z)
0,25.z
PC = .P
(1 − 0,5.z)
57
Data-data yang diketahui : ∆HRo = - 20.000 cal/gmol; TF = 400 K; P = 20 atm;
-6
Tref = 298 K; A = 8.10 atm; B = 4500 K; CpA = 7 cal/mol.K; CpB = 8
cal/gmol.K; CpC = 12 cal/gmol.K
Program Matlab
% Reaktor Adiabatis untuk Reaksi Eksotermis Fase Gas
% Reaksi A + 2B --> C
%
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
% Data-data
dHr=-20000; % Panas reaksi, kal/gmol
Tf=400; P=20; % Temperatur umpan, K
Tref=298; % Temperatur referensi, K
% Parameter temperatur kesetimbangan
A=8e-6; % atm
B=4500; % K
% Kapasitas panas
Cpa=7; % kal/mol.K
Cpb=8; % kal/mol.K
Cpc=12; % kal/mol.K
% Perhitungan konversi kesetimbangan
konversi=fzero(@F38,0.6)
Program terkait
function fz = F38(z)
% Langkah perhitungan
% tebak konversi kesetimbangan z ---> hitung tekanan parsial
% komponen a, b, dan c ---> hitung panas reaksi
% ---> hitung temperatur reaktor ---> hitung temperatur
% kesetimbangan ---> bandingkan T reaktor dan T ktmbgn
% T kesetimbangan - T reaktor = 0
%
% Panas reaksi
dHrf=dHr+(Cpc-Cpa-2*Cpb)*(Tf-Tref);
% Temperatur reaktor
T=Tf-0.25*z*dHrf/(0.25*(1-z)*Cpa+(0.75-0.5*z)*Cpb+0.25*z*Cpc);
% Temperatur kesetimbangan
K=Pc/Pa/Pb^2;
Tstb=B/log(K/A);
58
fz=Tstb-T;
Keluaran program
konversi =
0.4143
⎛ 3764 ⎞ ⎛ 4497 ⎞
PAo = exp⎜14,95 − ⎟ PBo = exp⎜16,07 − ⎟
⎝ T ⎠ ⎝ T ⎠
⎛ 4934 ⎞
PCo = exp⎜16,27 − ⎟
⎝ T ⎠
Pengembunan terjadi jika
y A .Pt y B .Pt y C .Pt
+ + −1 = 0
PAo PBo PCo
Penyelesaian
% Temperatur Titik Embun untuk Campuran Benzena,
% Toluena, dan Ortho-xylena
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
global ya yb yc Pt
% Perhitungan temperatur
T=fzero(@F39,300)
Program terkait
59
function fT=F39(T)
% Tekanan uap murni
% o ( B )
% Pi = 10^( A + --- )
% ( T )
% Hukum Roult-Dalton
% yi * P
% xi = --------
% o
% Pi
% x1 + x2 + x3 = 1
global ya yb yc Pt
Pao=exp(14.95-3764/T);
Pbo=exp(16.07-4497/T);
Pco=exp(16.27-4934/T);
fT=Pt*(ya/Pao+yb/Pbo+yc/Pco)-1;
Keluaran program
T =
390.2252
( )
⎛ 4g ρ p − ρ D p ⎞ …(3.10.1)
v t = ⎜⎜ ⎟
⎟
⎝ 3C D ρ ⎠
CD =
24
Re
(
1 + 0,14 Re 0,7 ) untuk 0,1 ≤ Re ≤ 1000
60
CD = 0,44 untuk 1000< Re ≤ 35000
4
CD = 0,19 – 8.10 /Re untuk 35000 ≤ Re
Tentukan terminal velocity untuk partikel batubara dengan ρP = 1800 kg/m3 dan
Dp = 0,208.10-3 m yang jatuh dalam air pada T = 298,15 K dengan ρ = 994,6
kg/m3 dan µ = 8,931.10-4 kg/mdetik.
Penyelesaian
Tebak vt Æ hitung Re Æ Tentukan CD Æ Cek vt dengan persamaan (3.10.1 )
Program Matlab
function fv_t = contoh310(v_t)
% Terminal Velocity untuk Partikel Jatuh dalam Fluida
% Tebak vt --> hitung Re --> Tentukan CD --> Cek vt
% / 4.g.(rhop - rho).Dp
% vt = / -------------------
% \/ 3.CD.rho
% Nama File : contoh310.m
% Surakarta, Oktober 2005
% ---------------------------------------------------------------
% Data-data
rho_p = 1800; %kg/m^3
D_p = 0.208*10^-3; %m
T = 298.15; %K
rho = 994.6; %kg/m^3
mu = 8.931*10^-4; %kg/m/s
g = 9.80665; %m/s^2
v_t =
61
1.5782e-002
dengan
P = tekanan (atm)
V = volum molar (L/gmol)
T = temperatur (K)
R = konstanta gas = 0,08206 atmL/gmolK
TC = temperatur kritis (405,5 K untuk ammonia)
PC = tekanan kritis (111,3 atm untuk ammonia)
P
Tekanan tereduksi dinyatakan sebagai Pr =
PC
PV
Faktor kompressibilitas dinyatakan sebagai Z=
RT
a. Tentukan volum molar dan faktor kompressibilitas untuk gas ammonia pada
tekanan P = 56 atm dan temperatur T = 450 K menggunakan persamaan van
der Waals !
b. Ulangi perhitungan untuk Pr = 1, 2, 4, 10, dan 20 !
62
c. Bagaimanakah hubungan faktor kompressibilitas untuk berbagai nilai Pr ?
Penyelesaian
% Volum Molar dan Faktor Kompressibilitas utk Pers van der Waals
% Varibel berubah P
% Pr = -----
% Pr
% Dari data-data yang ada
% Hitung P
% Hitung V dengan terlebih dahulu menebak V,
% lalu hitung dengan pers. van der Waals
% Hitung Z P.V
% Z = ------
% R.T
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
clear all
format short e
global P a b R T
% Data-data
Pc = 111.3; % atm
Tc = 405.5; % K
R = 0.08206; % atm.L/gmol.K
T = 450; % K
P = 56; % atm
Pr = [P/Pc 1 2 4 10 20];
a = 27/64*R^2*Tc^2/Pc;
b = R*Tc/(8*Pc);
% Perhitungan
for j = 1:6
P = Pc*Pr(j);
Vtebak = R*T/P;
V = fzero('waals',Vtebak);
z = P*V/(R*T);
hasil(j,1)=Pr(j);
hasil(j,2)=V;
hasil(j,3)=P*V/(R*T);
end
Hasil perhitungan
Faktor kompresibilitas
T lingkungan
Panas yang dilepaskan
I, kuat arus
D, diameter
L, panjang pipa
Gambar 3.6. Batang Konduktor
NI = 21;
I = linspace(0,10,NI);
Tss = zeros(size(I));
Isq = I(1)*I(1);
Tg = Tinf;
Tss(1) = fzero('neracaenergi',Tg);
% Perhitungan Temperatur
for n=2:NI
Isq = I(n)*I(n);
Tss(n) = fzero('neracaenergi',Tss(n-1));
end
Tssa = Tinf +I.*I*R_L/(h*pi*D);
% Menampilkan hasil
fprintf(1,'\n\n')
fprintf(1,' HASIL PERHITUNGAN \n')
fprintf(1,' Parameter perancangan \n')
fprintf(1,' Diameter kawat (m) = %8.3f \n',D)
fprintf(1,' Emisivitas = %8.3f
\n',emiss)
fprintf(1,' Resistansi (ohm/m) = %8.3f
\n',R_L)
fprintf(1,' Konstanta Stefan-Bolzmann (W/m^2K^4)= %9.2e
\n',sig)
fprintf(1,' Koefisien Transfer Panas (W/m^2K) = %8.3f \n',h)
fprintf(1,' Temperatur Fluida (C) = %8f
\n',Tinf-273.15)
fprintf(1,' Temperatur Lingkungan (C) = %8f
\n',Tsur-273.15)
fprintf(1,'\n')
fprintf(1,' Komponen Neraca Energi vs Arus \n')
fprintf(1,' I Energi yg Muncul Konveksi Radiasi Neraca
Temperatur \n')
fprintf(1,' (A) (W/m) (W/m) (W/m) (W/m)
C \n')
for n = 1:NI
fprintf(1,' %4.1f %8.2f %8.2f %8.2f %8.4f %8.2f
\n',...
I(n),gen(n),conv(n),rad(n),bal(n),Tss(n)-273)
end
A = pi*D;
% Panas yang dibangkitkan arus listrik
gen = Isq*R_L;
% Panas konveksi
conv = h*A*(T-Tinf);
% Panas radiasi
rad = emiss*sig*A*(T^4-Tsur^4);
% Neraca energi
F = (gen-conv-rad);
67
Keluaran program
HASIL PERHITUNGAN
Parameter perancangan
Diameter kawat (m) = 0.001
Emisivitas = 0.800
Resistansi (ohm/m) = 0.400
Konstanta Stefan-Bolzmann (W/m^2K^4)= 5.67e-008
Koefisien Transfer Panas (W/m^2K) = 100.000
Temperatur Fluida (C) = 25.000000
Temperatur Lingkungan (C) = 25.000000
L
D
Persamaan menjadi
V2 LV 2
= h+L−f
2g D 2g
2g(h + L )
V2 =
⎛ L⎞
⎜1 + f ⎟
⎝ D⎠
Pemograman Matlab
70
% Pengaruh Friksi pada Aliran Pipa
%
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
clear all
global DD h LL g visc rough
ND = length(D);
V = zeros(NL,ND);
% Perhitungan
for n=1:ND
DD = D(n);
Vo = sqrt(2*g*h);
LL = L(1);
V(1,n) = fzero('friksi_pipa',Vo);
for i=2:NL
LL = L(i);
V(i,n) = fzero('friksi_pipa',V(i-1,n));
end
end
% Bilangan Reynolds
Re = V*DD/visc;
% Kekasaran relatif
RR = rough/DD;
% Faktor friksi
f = 0.25/(log10(RR/3.7+5.74/Re^0.9))^2;
F = V^2-2*g*(h+LL)/(1+f*LL/DD);
Keluaran program
71
x
a b
x
a Dx b
∆x
= [f (a ) + 2f (x 1 ) + 2f ( x 2 ) + ...... + 2f (x n −1 ) + f (b)]
2
(b − a )
= [f (a ) + 2f (x 1 ) + 2f (x 2 ) + ...... + 2f (x n −1 ) + f (b)]
2n
….(4.2)
Dalam Matlab, metode perhitungan integrasi dengan aturan trapesium dapat
menggunakan fungsi trapz.
77
Penggunaan fungsi trapz adalah
Z = trapz(x,y)
yang menghitung integral y terhadap x menggunakan metode trapesium. x dan y
merupakan vektor yang sama panjang.
Penyelesaian
Neraca massa total
F – D = dM = 0
dt
D = F = 10 lbmol/jam
78
Neraca massa benzena
dx w
F xF – D yD = M
dt
M
dt = dx w
F x F − D yD
Program penyelesaian
% Distilasi Batch di laboratorium
% Distilasi secara batch
%
% xwn [ M ]
% t = Integral [------------- ] dxw
% xwo [ F xf - D yd ]
% yd adalah fraksi mol benzena pada destilat
% xw adalah fraksi mol benzena pada labu destilasi
% Hubungan yd dan xw mengikuti Hukum Roult
% alpha xw
% yd = --------------------
% 1 - (alpha - 1)xw
%
%
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
% Data-data
F = 10 ; %laju alir umpan, lbmol/jam
D = F ; %laju alir destilat, lbmol/jam
M = 20 ; %massa labu destilasi, lbmol
xf = 0.32; %fraksi mol benzena pada umpan
xwo = xf ; %fraksi mol benzena pada labu destilasi mula-mula
alpha = 2.48; %konstanta Roult
ydn = 0.4; %fraksi mol benzena pada destilat akhir
% Nilai-nilai xw
n = 100; %jumlah interval
xw=linspace(xwn,xwo,n);
79
% Nilai t pada berbagai xw
yd = alpha.*xw./(1+(alpha-1).*xw);
ti=-M./(F.*xf-D.*yd);
Penyelesaian
10 10
v(10) = ∫
0
a(t) dt + v(0) = ∫
0
a(t) dt
Program Matlab
% Kecepatan accelerometer
% Hubungan waktu (t) dengan percepatan a (m^2/detik)
% ditunjukkan pada tabel
% Kecepatan secara numeris
% v = int ( a dt)
%
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
% Data-data
t=[0:10]; % detik
a=[0 2 4 7 11 17 24 32 41 48 51]; % m^2/detik
% Cetak Hasil
disp(' ')
disp(' t(detik) v(m/detik)')
disp([t' v' ])
Keluaran Program
t(detik) v(m/detik)
0 0
1.0000 1.0000
2.0000 4.0000
3.0000 9.5000
4.0000 18.5000
5.0000 32.5000
6.0000 53.0000
7.0000 81.0000
8.0000 117.5000
9.0000 162.0000
10.0000 211.5000
f(x0)
f(x1)
f(x2)
h
x
x0 x1 x2
Aplikasi aturan Simpson pada seluruh pasangan interval dalam kisaran x0 sampai
xn
b
h
∫ f (x) dx = (f 0 + 4f1 + f 2 ) + h (f 2 + 4f3 + f 4 ) + ...... + h (f 2n − 2 + 4fx 2n −1 + f 2n )
3 3 3
a
h
= [f 0 + 4(f1 + f 3 + ...... + f 2n −1 ) + 2(f 2 + f 4 + ...... + f 2n −2 ) + f 2n )]
3
….(4.4)
Untuk menggambarkan penggunaan aturan Simpson, akan ditampilkan dua
alternatif yaitu fungsi simp1 dan simp2.
simp1 menggunakan vektor koefisien v dan vektor fungsi nilai y serta
mengalikan kedua vektor. simp2 menggunakan aturan Simpson secara
konvensional (menggunakan loop).
Alternatif 1
function q = simp1(func,a,b,m)
% Integrasi Numeris
%
% Penyelesaian dilakukan dengan Aturan Simpson
% Menggunakan vektor
% q = simp1(func,a,b,m)
% integrasi fungsi func dr a sampai b dg m pembagian
%
% Nama File : simp1.m
% Surakarta, Oktober 2005
82
% ---------------------------------------------------------------
if (m/2)~= floor(m/2)
disp('m harus genap '); break
end
h = (b-a)/m;
x = [a:h:b];
y = feval(func,x);
v = 2*ones(m+1,1);
v2 = 2*ones(m/2,1);
v(2:2:m) = v(2:2:m) + v2;
v(1) = 1;
v(m+1) = 1;
q = y*v;
q = q*h/3;
Alternatif 2
function q = simp1(func,a,b,m)
% Integrasi Numeris
%
% Penyelesaian dilakukan dengan Aturan Simpson
% Menggunakan loop
% q = simp2(func,a,b,m)
% integrasi fungsi func dr a sampai b dg m pembagian
%
% Nama File : simp2.m
% Surakarta, Oktober 2005
% ---------------------------------------------------------------
if (m/2)~= floor(m/2)
disp('m harus genap '); break
end
h = (b-a)/m;
s = 0;
y1 = feval(func,a);
for j = 2:2:m
x = a+(j-1)*h;
ym = feval(func,x);
x = a+j*h;
yh = feval(func,x);
s = s+y1+4*ym+yh;
y1=yh;
end
q = s*h/3;
fv = x.^7;
n = 2; i = 1;
t = clock;
disp(' n nilai integral')
while n<51200
simpval=simp1('f43',0,1,n);
fprintf('%3.0f%14.9f\n',n,simpval);
n=2*n; i=i+1;
end
fprintf('\nwaktu = %4.2f detik ',etime(clock,t));
Keluaran program
n nilai integral
2 0.171875000
4 0.129150391
8 0.125278473
16 0.125017703
32 0.125001111
64 0.125000070
128 0.125000004
256 0.125000000
512 0.125000000
1024 0.125000000
2048 0.125000000
4096 0.125000000
8192 0.125000000
16384 0.125000000
32768 0.125000000
n = 2; i = 1;
t = clock;
disp(' n nilai integral')
while n<51200
simpval=simp2('F43',0,1,n);
fprintf('%3.0f%14.9f\n',n,simpval);
n=2*n; i=i+1;
end
fprintf('\nwaktu = %4.2f detik ',etime(clock,t));
Keluaran program
n nilai integral
2 0.171875000
4 0.129150391
8 0.125278473
16 0.125017703
32 0.125001111
64 0.125000070
128 0.125000004
256 0.125000000
512 0.125000000
1024 0.125000000
2048 0.125000000
4096 0.125000000
8192 0.125000000
16384 0.125000000
32768 0.125000000
untuk n = 2, kita harus menentukan 4 parameter yaitu c1, c2, x1, dan x2.
1
I = ∫ f ( x ) dx = c1f(x1) + c2f(x2)
−1
Aturan integrasi akan tepat untuk fungsi polinomial 1, x, x2, dan x3.
1
f(x) = 1 memberikan =2 = c1 + c2
∫ 1 dx
−1
1
f(x) = x memberikan =0 = c1x1 + c2x2
∫ x dx
−1
1
f(x) = x3 memberikan =0 = c1x13 + c2x23
∫x
3
dx
−1
86
f (x)
x
(a)
f (x)
(b)
2 c1 = 1,000000000 x1 = -0,577350269
c2 = 1,000000000 x2 = 0,577350269
3 c1 = 0,555555556 x1 = -0,774596669
c2 = 0,888888889 x2 = 0
c3 = 0,555555556 x3 = 0,774596669
4 c1 = 0,347854845 x1 = -0,861136312
c2 = 0,652145155 x2 = -0,339981044
c3 = 0,652145155 x3 = 0,339981044
c4 = 0,347854845 x4 = 0,861136312
5 c1 = 0,236926885 x1 = -0,906179846
c2 = 0,478628670 x2 = -0,538469310
c3 = 0,568888889 x3 = 0
c4 = 0,478628670 x4 = 0,538469310
c5 = 0,236926885 x5 = 0,906179846
6 c1 = 0,171324492 x1 = -0,932469514
c2 = 0,360761573 x2 = -0,661209386
c3 = 0,467913935 x3 = -0,238619186
c4 = 0,467913935 x4 = 0,238619186
c5 = 0,360761573 x5 = 0,661209386
c6 = 0,171324492 x6 = 0,932469514
Contoh 4.4. Program Penggunaan fungsi quad8.
% Integrasi Numeris dengan menggunakan fungsi quad8
% Integral x^p dari a sampai b
%
% Pengunaan fungsi quad8
% integral = quad8('func', a, b)
% dengan func ... nama fungsi yang diintegralkan,
% harus dalam bentuk fungsi x
% a ... batas bawah integrasi (input)
% b ... batas atas integrasi (input)
88
%
% Variabel lain
% p ... exponent/pangkat
%
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
global p
disp(' ')
disp('Perhitungan integral dari a sampai b (x^p dx)')
disp(' ')
% Input parameter
p=input('Masukan nilai pangkat p: ');
a=input('Masukan batas integrasi bawah a : ');
b=input('Masukan batas integrasi atas b : ');
% integral
s = quad8('F44', a, b);
% cetak hasil
disp(['Hasil perhitungan secara numeris : ', num2str(s)])
disp(['Hasil perhitungan secara analitis : ',
num2str(b^(p+1)/(p+1)-a^(p+1)/(p+1))])
Keluaran program
Perhitungan integral dari a sampai b (x^p dx)
Contoh-contoh lain
% Cetak Hasil
disp(['Waktu yang diperlukan menurunkan konsentrasi dari Co = ',
num2str(Co), ' mol/gr katalis'])
disp([' menjadi Cn = ', num2str(Cn), ' mol/gr katalis'])
disp([' adalah ', num2str(t), ' detik'])
Keluaran program
Waktu yang diperlukan menurunkan konsentrasi dari Co = 2 mol/gr
katalis
menjadi Cn = 1 mol/gr katalis
adalah 0.89188 detik
Persoalan ini sama dengan contoh 3.6, namun integral untuk menghitung kalor
yang dilepaskan diperoleh secara numeris.
function fq=contoh46(Tn)
% Penurunan temperatur karena pelepasan panas
% Cp = 7,053 + 1,2242.10(-3) T - 2,6124.10(-7) T^2
% q = integral(cp dT)
% Data
% q = -2616 BTU/lbmol
% To = 550 oF
q = -2616; % BTU/lbmol
To = 550; % oF
199.9225
k = A.exp ⎛⎜ − E ⎞⎟
⎝ RT ⎠
Diketahui Fv = 200 L/menit; CAo = 5 gmol/L; ρ = 1,1 kg/L; Cp = 0,8 kcal/kg/K;
A = 3,12E+08 L/gmol/menit; E = 18.600 cal/gmol; ∆HR = -15 kal/gmol; R =
1,987 cal/gmol/K; dan volum reaktor, Vol = 8000 L. Ingin dicari temperatur
masuk To yang memberikan konversi keluar xout = 0,8.
k = A.exp ⎛⎜ − E ⎞⎟
⎝ RT ⎠
T = To − CAo∆H R x
ρCp
% Data-data
Fv=200; % laju alir volum, L/menit
Cao=5; % konsentrasi umpan, gmol/L
rho=1.1; % densitas, kg/L
Cp=0.8; % kapasitas panas, kcal/kg/K
A=3.12*10^8; % konstanta Arrhenius, L/gmol/menit
E=18600; % konstanta Arrhenius, cal/gmol
Hr=-15; % panas reaksi, kcal/gmol
R=1.987; % konstanta gas ideal, cal/gmol/K
Vol=8000; % volume reaktor, L
xin=0; % konversi masuk reaktor
xout=0.8; % konversi keluar reaktor
% Perhitungan Volume
x=linspace(xin,xout,1000);
T=To-Cao*Hr/rho/Cp*x ;
k=A*exp(-E/R./T);
eq=1./k./(1-x).^2;
V=Fv/Cao*trapz(x,eq);
To =
360.2898
ρ Ro
dr
t=
kX ∫ (x
0 S − x)
Program penyelesaian
% Pelarutan Butiran Padat
%
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
% Data-data
Ro=0.5; % jari-jari awal, cm
rho=2; % densitas, g/mL
Nb=40000; % jumlah padatan
To=350; % Temperatur awal, K
lamda=100; % panas pelarutan, kal/g
W=100000; % gram solvent
Cp=1; % kapasitas panas solvent
kx=0.01; % konstanta pelarutan, g/(cm2.dtk)
% Perhitungan
waktu=quad(@F48,0,Ro)
Program terkait
function area = F48(r)
% Integral
% Hitung berat mula-mula ---> hitung berat pada r
% ---> hitung T ---> hitung x ---> hitung t
%
% rho [Ro dr
% t = ----- int [ --------
% kx [0 (xs - x)
% Nama File : F48.m
% Surakarta, Oktober 2005
% ---------------------------------------------------------------
mo=4*pi*Ro^3*rho*Nb/3;
m=4*pi*r.^3*rho*Nb/3;
T=To+lamda*(mo-m)/(W+mo)/Cp;
x=(mo-m)/W;
xs=exp(8.8053-3333./T);
area=rho/kx./(xs-x);
Keluaran program
94
waktu =
180.0717
⎛ 3333 ⎞
x S = exp ⎜ 8,8053 - ⎟
⎝ T ⎠
Waktu yang diperlukan padatan untuk melarut dinyatakan dengan persamaan
ρ Ro
dr
t=
kX ∫ (x
0 S − x)
Program Penyelesaian
% Temperatur Pelarutan Butiran Padat
%
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
Program terkait
function fTo = F49(To)
% tebak To ---> Hitung berat mula-mula
% ---> hitung berat pada r ---> hitung T
% ---> hitung x ---> hitung t
% rho [Ro dr
% t = ----- int [ --------
% kx [0 (xs - x)
% ---> bandingkan dg t data
Keluaran program
To =
347.2318
Program penyelesaian
% Waktu Pengosongan Tangki
%
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
za=200;
zf=600;
t=quad(@F410,za,zf);
waktu=Dt^2*t/D^2
Program terkait
function fz=F410(z)
%
% Nama File : F410.m
% Surakarta, Oktober 2005
% ---------------------------------------------------------------
Program lain
function fv=F410F(v,z)
%
% Nama File : F410F.m
% Surakarta, Oktober 2005
% ---------------------------------------------------------------
Keluaran program
waktu =
1.9688e+004
Data–data yang dimiliki sering berupa harga-harga yang diskrit dari suatu
garis yang kontinyu. Sering kita membutuhkan data-data yang terletak di antara
harga-harga yang diskrit tersebut. Bagian ini akan mempelajari bagaimana cara
kita memperkirakan data-data untuk harga-harga yang terletak di antara harga-
harga yang diskrit.
Ada dua pendekatan yang umum dilakukan, yaitu :
1. Regresi Kuadrat Terkecil
Pendekatan regresi dilakukan jika data-data yang ada menunjukkan tingkat
kesalahan yang berarti ( misal data hasil penelitian ). Metode ini berusaha
mencari persamaan yang mempunyai kecenderungan melewati titik-titik
tersebut.
2. Interpolasi
Pendekatan interpolasi dilakukan jika data-data yang ada telah diketahui
dengan teliti dan valid ( misal data dari buku-buku referensi/handbook ).
Persamaan yang dibuat harus melalui titik-titik yang telah diketahui
tersebut.
100
5.1. REGRESI KUADRAT TERKECIL
Tetapi kriteria ini kurang baik. Gambar 5.1 yang melukiskan pencocokan
kurva terhadap dua titik. Sembarang garis lurus yang melalui titik tengah
dari garis penghubung itu akan meminimalkan harga pers (3.2) menjadi
nol, karena kesalahan akan saling meniadakan.
o
o
o
o
Ei2 = ∑ (y i − a o − a1x i )
n n
∑
2
SSE = …(5.4)
i=1 n =1
( )2
n
SSE = ∑ y data − y pers … (5.6)
n =1
SSE = ∑ E i2 = ∑ (y i − a 0 − a1x i )2
n n
… (5.7)
i =1 n =1
102
∂SSE = -2 ∑ ( yi – ao – a1xi ) = 0
∂a 0
∑ yi - ∑ ao - ∑ a1xi = 0
∑ yi - n ao - a1 ∑ xi = 0
n ao + a1 ∑ xi = ∑ yi … (5.8)
∂SSE = -2 ∑ [( yi – ao – a1xi )xi] = 0
∂a 1
a1 = n ∑ x i y i − ∑ x i ∑ y i … (5.10)
n ∑ x i2 − (∑ x i ) 2
a0 = y − a 1 x … (5.11)
KUANTIFIKASI KESALAHAN
Kuantifikasi kesalahan dalam regresi kuadrat terkecil dapat dinyatakan dengan
persamaan
St − Sr
R2 = ...(5.12)
St
dengan R adalah koefisien korelasi, dan R2 adalah koefisien determinasi.
St = ∑ (yi - y )2 ...(5.13)
q maks d C
q=
⎡ ⎤
(CS − C )⎢1 + (d − 1) C ⎥
⎣ C S⎦
Penyelesaian
q maks d C
q=
⎡ ⎤
(C S − C )⎢1 + (d − 1) C ⎥
⎣ CS ⎦
⎛ ⎞
(C S − C )⎜⎜1 + (d − 1) C ⎟
1 ⎝ C S ⎟⎠
=
q q maks dC
⎛ C ⎞
⎜⎜1 + (d − 1) ⎟⎟
=⎝
1 CS ⎠
q(C S − C ) q maks dC
C
=
1
+
(d − 1)C
q(C S − C ) q maks d q maks dC S
y = a0 + a1x
106
dengan y = C
q (C S − C )
x =C
a0 = 1
q maks d
a1 = (d − 1)
q maks d C S
Program Matlab
% Persamaan BET untuk proses adsorpsi
% qmaks d C
% q = -------------------------------
% (Cs - C)[ 1 + (d - 1)*C/Cs ]
% Linierisasi
% C 1 (d-1)C
% --------- = ------- + ----------
% q(Cs - C) qmaks d qmaks d Cs
% C
% y = --------- x = C
% q(Cs - C)
% 1 (d - 1)
% a0 = ------- a1 = ----------
% qmaks d qmaks d Cs
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
% Data - data
C = [0.8 4.88 8.04 16.1 19.25]; % Konsentrasi, mg/L
q = [17.23 32.09 46.75 62.90 64.73]; % Logam terjerap, mg/g
adsorben
% Linierisasi
y = C./(Cs-C)./q;
x = C;
% Parameter BET
d=a1/a0*Cs+1
qmaks=1/a0/d
% Plot hasil
q=a0+a1*x;
plot(x,y,'k*',x,q,'k-','lineWidth', 2)
107
title('Perbandingan Data Percobaan dan Perhitungan')
Keluaran program
d =
32.0593
qmaks =
42.9100
dipilih n = 1, maka akan dihasilkan persamaan garis lurus yaitu regresi linier.
Program Matlab dengan penggunaan fungsi polyfit untuk contoh yang sama
% Persamaan BET untuk proses adsorpsi
% qmaks d C
% q = -------------------------------
% (Cs - C)[ 1 + (d - 1)*C/Cs ]
% Linierisasi
% C 1 (d-1)C
% --------- = ------- + ----------
% q(Cs - C) qmaks d qmaks d Cs
% C
% y = --------- x = C
108
% q(Cs - C)
% 1 (d - 1)
% a0 = ------- a1 = ----------
% qmaks d qmaks d Cs
% Penyelesaian dengan fungsi polyfit
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
% Data - data
C = [0.8 4.88 8.04 16.1 19.25]; % Konsentrasi, mg/L
q = [17.23 32.09 46.75 62.90 64.73]; % Logam terjerap, mg/g
adsorben
% Linierisasi
y = C./(Cs-C)./q;
x = C;
% fungsi polyfit
p=polyfit(x,y,1);
% Parameter BET
d=p(1)*Cs/p(2)+1
qmaks=1/p(2)/d
Keluaran program
d =
32.0593
qmaks =
42.9100
ln(p) = a + b
T + 273,2
109
y=a+bx
% Data - data
p = [ 1 5 10 20 40 60]; % dalam C
T = [ -26.7 -4.4 6.4 18.4 31.8 40.3]; % dalam Torr
% Linierisasi
y = log(p);
x = 1./(T+273.15);
kons = polyfit(x,y,1);
a = kons(2)
b = kons(1)
Keluaran program
a =
19.1905
b =
-4.7260e+003
⎛ 4726,0 ⎞
Sehingga p = exp⎜⎜19,1905 − ⎟
⎝ T + 273,2 ⎟⎠
Dari persamaan Torricelli terlihat hubungan laju alir dan volume cairan dalam
tangki adalah pangkat ½. Sehingga jika diplotkan log10(f) dan log10(V) akan
dihasilkan persamaan garis lurus.
111
Program Matlab
% Resistansi Hidrolik
% persamaan Torricelli adalah
% f = r*V^(1/2)
% f = laju alir cairan melalui katup (L/detik)
% V = volum cairan di dalam tangki (L)
% r = konstanta
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
% Data - data
V = [6 9 12 15]; % volume, L
waktu = [9 8 7 6 ]; % waktu pengisian, detik
laju_alir = 1./waktu; % laju alir, 1/detik
% Penggunaan polyfit
p = polyfit(log10(V),log10(laju_alir),1);
m = p(1);
r = 10^p(2)
% Ekstrapolasi untuk V = 36
subplot(2,1,2)
plot(x,1./y,'k-',V,waktu,'ko','linewidth',2)
xlabel('Volum')
ylabel('Waktu')
axis([5 36 0 10])
Keluaran program
112
Laju alir
waktu
Jika pada regresi linier, data-data didekati dengan persamaan garis y = a1x
+ a0, maka pada regresi polinomial, data-data didekati dengan persamaan
polinomial, yaitu :
y = a0 + a1x + a2x2 + .... + amxm ....(5.15)
sehingga
i
n n
(
SSE = ∑ E2 = ∑ y i − a 0 − a1x i − a 2 x i2 − .... − a m x im
n =1
)
2
....(5.17)
i =1
∂SSE = -2 2
∑ ( yi – ao – a1xi - a2 x i - .... - am x im ) = 0
∂a 0
113
∂SSE = -2 2
∑xi( yi – ao – a1xi - a2 x i - .... - am x im ) = 0
∂a 1
∂SSE = -2 2 2
∑ x i ( yi – ao – a1xi - a2 x i - .... - am x im ) = 0
∂a 2
.
.
.
.
∂SSE m 2
= -2 ∑ xi ( yi – ao – a1xi - a2 x i - .... - am x im ) = 0
∂a m
2
a0n + a1∑xi + a2∑ xi + .... + am∑ xim = ∑yi
.
.
.
.
% Data - data
% tekanan, mmHg
vp = [ 1 5 10 20 40 60 100 200 400 760];
% temperatur, oC
T =[-36.7 -19.6 -11.5 -2.6 7.6 15.4 26.1 42.2 60.6 80.1];
% Cetak hasil
plot(T,z,'k-',T,vp,'ko','linewidth',2)
xlabel('T(C)')
ylabel('vp(mmHg)')
Keluaran program
vp(mmHg)
% Data - data
% tekanan, mmHg
vp = [ 1 5 10 20 40 60 100 200 400 760];
% temperatur, oC
T =[-36.7 -19.6 -11.5 -2.6 7.6 15.4 26.1 42.2 60.6 80.1];
% Linierisasi
y = log10(vp);
x = 1./(T+273.15);
% Evaluasi persamaan
z = 10.^(p(2)+(p(1)./(T+273.15)));
% Cetak hasil
plot(T,z,'k-',T,vp,'ko','linewidth',2)
xlabel('T(C)')
ylabel('vp(mmHg)')
Keluaran program
117
vp(mmHg)
Dari kedua grafik terlihat persamaan polinomial memberikan hasil yang lebih
baik.
Program Matlab
%Regresi Polinomial
118
% Berikut data-data percobaan Konversi dan Kecepatan Reaksi
% Persamaan empiris polinomial sederhana
% ra = a0 + a1*X + a2*X^2 + a3*X^3 + ... + an*X^n
% Penyelesaian dengan menggunakan fungsi polyfit
% Persamaan polinomial tersebut kemudian dievaluasi
% dengan fungsi polyval
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
% Data-data
X=[0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.85];
ra=[0.0053 0.0052 0.005 0.0045 0.004 0.0033 ...
0.0025 0.0018 0.00125 0.001];
Keluaran program
2
a0∑x2,i + a1∑x2,ix1,i + a2∑ x 2, i + .... + ak∑x2,ixk,i = ∑yix2,i
.
.
.
2
a0∑xk,i + a1∑xk,ix1,i + a2∑xk,ix2,i + .... + ak∑ x k , i = ∑yixk,I
Program Matlab
% Breaking strength dan komposisi logam
% Regresi Multivariabel
% Gaya tensi y diperlukan untuk mematahkan batang besi
% komposisi persentase x1dan x2
% y = a0 + a1*y1 + a2*y2
% Penyelesaian dengan menggunakan matriks
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
% Data-data
x1=[0:3]';
x2=[5 7 8 11]';
y=[7.1 19.2 31 45]';
% Matriks X
X=[ones(size(x1)) x1 x2];
% Perhitungan konstanta
a=X\y
% Evaluasi persamaan
yp=X*a;
max_persen_error = 100*max(abs((yp-y)./y))
Keluaran program
121
a =
0.8000
10.2429
1.2143
max_persen_error =
3.2193
5.2. INTERPOLASI
INTERPOLASI LINIER
Interpolasi linier dilakukan dengan menghubungkan dua titik yang telah
diketahui dengan sebuah garis lurus. Secara grafis dapat dilihat pada gambar 5.9.
f(x1)
f(x)
f(x0)
x0 x x1
f (x) − f (x 0 ) = f (x1 ) − f (x 0 )
x − x0 x1 − x 0
INTERPOLASI KUADRATIK
Interpolasi kuadratik adalah interpolasi polinomial versi 2, yang
membutuhkan 3 titik yang diketahui.
Bentuk umum
f(x) = b0 + b1(x-x0) + b2(x-x0)(x-x1) ....(5.22)
dengan
b0 = f(x0)
b1 = f ( x 1 ) − f ( x 0 )
( x1 − x 0 )
f ( x 2 ) − f ( x1 ) f ( x1 ) − f ( x 0 )
−
( x 2 − x1 ) ( x1 − x 0 )
b2 =
(x 2 − x 0 )
INTERPOLASI POLINOMIAL
Bentuk umum interpolasi polinomial Newton
f(x) = b0 + b1(x-x0) + b2(x-x0)(x-x1) + .... + bn(x-x0)(x-x1)(x-x2)....(x-xn) ....(5.23)
dengan
b0 = f(x0)
b1 = f[x1,x0]
b2 = f[x2,x1,x0]
.
.
.
bn = f[xn,xn-1, ....,x1,x0]
Differensiasi terbagi pertama
123
f[xi,xj] = f ( x i ) − f ( x j )
(x i − x j )
.
.
.
Differensiasi terbagi ke-n
sehingga
f(x) = f(x0)+(x-x0)f[x1,x0]+(x-x0)(x-x1)f[x2,x1,x0]+....+
(x-x0)(x-x1)(x-x2)....(x-xn)f[xn,xn-1,....,x1,x0] ....(5.24)
0 x0 f(xi)
f[x1,x0]
1 x1 f(x1) f[x2,x1,x0]
f[x2,x1] f[x3,x2,x1,x0]
2 x2 f(x2) f[x3,x2,x1]
f[x3,x2]
3 x3 f(x3)
Penyelesaian
% Densitas Asam Asetat pada 25 oC
% Interpolasi Polinomial Newton
%
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
format long
% Data-data
x=[60 70 80 90 100]; % konsentrasi, %
rho = [1.06 1.064 1.065 1.061 1.044]; % Densitas, g/cm^3
% orde 1
for i= 1 :n
frho(i,1)=rho(i);
end
% orde selanjutnya
for j=1:n-1
k=j+1;
for i=1 :n-j
frho(i,k)=(frho(i+1,j)-frho(i,j))/(x(i+j)-x(i));
end
end
% Menampilkan matriks
rho=frho
xi=65;
t=['Hasil interpolasi polinomail Newton untuk x = ' num2str(xi)];
125
disp(t)
disp '----------------------------'
fa=1;
p=0;
for j=1:n
p=p+frho(1,j)*fa;
t=['Nilai densitas dengan Polinomial Newton orde ' num2str(j-1)
' = ' num2str(p)];
disp(t)
fa=fa*(xi-x(j));
end
disp ' '
Keluaran program
rho =
1.0600 0.0004 -0.0000 -0.0000 -0.0000
1.0640 0.0001 -0.0000 -0.0000 0
1.0650 -0.0004 -0.0001 0 0
1.0610 -0.0017 0 0 0
1.0440 0 0 0 0
Dalam matlab dapat digunakan fungsi interp1 untuk interpolasi satu dimensi.
YI = interp1 (X,Y,XI,’metode’) adalah interpolasi untuk menentukan nilai
YI jika X = X1, dengan menggunakan data-data hubungan Y terhadap X.
Metode yang dapat digunakan antara lain :
‘nearest‘ - interpolasi dengan tetangga terdekat
‘linier‘ - interpolasi linier
‘spline‘ - interpolasi spline kubik
‘cubic‘ - interpolasi kubik
k
T (OF)
[BTU/jam.ft.OF]
0,0057 32
0,0074 115
0,0099 212
0,0147 363
Program penyelesaian
% Konduktivitas termal aseton
% Hubungan ln(k) dan ln(T) mendekati garis lurus
% Tentukan k pada T = 300 oF
% Diselesaikan dengan fungsi interp1
%
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
% Data-data
k = [0.0057 0.0074 0.0099 0.0147]; % BTU/jam.ft.oF
T = [32 115 212 363]+460; % temperatur, R
% Interpolasi Linier
Tx = log(300+460);
kx = interp1(ln_T,ln_k,Tx,'linier');
% Hasil
k_pd_300 = exp(kx)
Keluaran program
k_pd_300 =
0.0126
SPLINE LINIER
Sambungan paling sederhana adalah sebuah garis lurus. Spline orde
pertama untuk sekumpulan susunan titik data dapat didefinisikan sebagai
sekumpulan fungsi linier yang menghubungkan titik-titik :
f(x) = f(x0) + m0(x – x0) x0 # x # x1
f(x) = f(x1) + m1(x – x1) x1 # x # x2
…
f(x) = f(xn-1) + m0(x – xn-1) xn-1 # x # xn
f ( x i +1 ) − f ( x i )
dengan mi =
x i +1 − x i
Persamaan-persamaan ini dapat dipakai untuk mengevaluasi fungsi
tersebut pada sembarang titik di antara x0 dan xn, pertama-tama dengan menaruh
interval di dalam tempat titik itu terletak. Metode ini identik dengan interpolasi
linier.
128
SPLINE KUADRATIK
a3x2 + b3x + c
a1x2 + b1x + c a2x2 + b2x + c
x0 x1 x2 x3
i=0 i=1 i=2 i=3
Gambar 5.10. Konsep Dasar Spline Kuadratik
Tujuan spline kuadratik adalah untuk menurunkan sebuah polinomial
orde kedua untuk setiap interval di antara titik-titik data. Polinomial untuk setiap
interval secara umum dapat dinyatakan sebagai :
fi(x) = aix2 + bix + ci
SPLINE KUBIK
Tujuan spline kubik ialah menurunkan suatu polinomial orde ketiga
untuk setiap interval di antara simpul seperti :
fi(x) = aix3 + bix2 + cix + di
Untuk n + 1 titik data ( i = 0, 1, 2, …, n ) terdapat n interval dan konsekuensinya
diperlukan 4n konstanta yang tidak diketahui untuk dievaluasi.
Penyelesaian
% Viskositas larutan MDEA
% B2
% ln miu = B1 + ----- + B3*T
% T
% dengan miu = viskositas, poise
% T = temperatur, K
% Bi = parameter viskositas sebagai fungsi konsentrasi, x
% (data dalam bentuk tabel)
% viskositas MDE pada konsentrasi x = 0,43 dan T = 45 oC
%
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
% Cetak Hasil
disp(' ')
disp(['Viskositas MDEA pada x = ',num2str(x_i), ' dan T =
',num2str(T_i)])
disp(['jika parameter viskositas pada x = ',num2str(x_i), '
dihitung dulu'])
viskositas = viscA
disp(['jika viskositas pada T = ',num2str(T_i),' dihitung dulu'])
viskositas = viscB
Keluaran program
Viskositas MDEA pada x = 0.43 dan T = 318.15
jika parameter viskositas pada x = 0.43 dihitung dulu
viskositas =
3.2302
jika viskositas pada T = 318.15 dihitung dulu
viskositas =
3.2093
dari fungsi Z pada titik XI dan YI dari matriks X dan Y. Metode yang ditampilkan
pada interpolasi 1 dimensi dapat juga digunakan pada interpolasi 2 dimensi.
Program penyelesaian
% Beda entalpi uap yang didinginkan
% uap mula-mula adalah 640 oF dan 92 psia
% menjadi 480 oF dan 52 psia
% Digunakan interpolasi 2 dimensi
%
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
% Kondisi awal
To = [600 700]; % Temperatur, oF
po = [90 95]; % Tekanan, psia
Ho = [1328.7 1378.1
1328.4 1377.8]; % Entalphi, BTU/lb
H1 = interp2(To,po,Ho,640,92) % Interpolasi 2 dimensi
% Kondisi akhir
Tn = [400 500]; % Temperatur, oF
pn = [50 55]; % Tekanan, psia
Hn = [1258.7 1282.6
1258.2 1282.2]; % Entalphi, BTU/lb
H2 = interp2(Tn,pn,Hn,480,52) % Interpolasi 2 dimensi
Keluaran program
H1 =
1.3483e+003
H2 =
1.2777e+003
del_H =
-70.6880
6 OPTIMASI
Optimasi adalah suatu proses untuk mencari kondisi optimum dalam arti
yang paling menguntungkan. Optimasi bisa berupa proses mencari nilai
maksimum (maksimasi) atau proses mencari nilai minimum (minimasi).
Variabel yang dimaksimumkan atau diminimimkan disebut objective
function, sedangkan variabel yang dicari nilainya sehingga objective function
menjadi maksimum atau minimum disebut design variabel.
Proses optimasi secara analitis dilakukan dengan cara melihat turunan
(derivatif) objective function terhadap design variabel. Dalam prakteknya, proses
optimasi sangat sulit diselesaikan dengan cara analitis (kalkulus). Jika demikian
maka dapat dilakukan proses optimasi dengan cara direct search, yaitu
melakukan perhitungan harga objective function untuk berbagai nilai design
variabel.
function [xsol,basic]=proglin(A,b,c,tol)
% Program ini bertujuan mencari nilai minimum
% untuk pemograman linier c'x
% subyek Ax = b
%
% A adalah matriks koefisien untuk batasan-batasan
% b adalah vektor kolom sisi kanan
% c adalah vektor baris koefisien biaya
% xsol adalah vektor hasil penyelesaian
% basic adalah urutan variabel dasar (basic)
% Perhitungan
[xsol,ind]=proglin(a,b,c,1e-10);
% Cetak hasil
i=1;fprintf('\Penyelesaian adalah : ');
for j=ind
fprintf('\nx(%1.0f)=%8.4f\',j,xsol(i));
i=i+1;
end
fprintf('\nNilai variabel lain adalah nol\n')
Keluaran program
objective =
-110.0000
x(1)= 10.0000
x(2)= 20.0000
Nilai variabel lain adalah nol
Golden section adalah salah satu optimasi secara numeris yang dapat
digunakan untuk fungsi yang bersifat unimodal (hanya mempunyai 1 nilai
maksimum/minimum).
Pada metode ini interval awal (XA sampai XB) dievaluasi di dua titik,
yaitu XP dan XQ.
Maksimasi : YP < YQ maka XA baru = XP lama
XB tetap
XP baru = XQ lama
XQ dicari
YP > YQ maka XA tetap
XB baru = XQ lama
XP dicari
XQ baru = XP lama
Minimasi : YP < YQ maka XA tetap
137
XB baru = XQ lama
XP dicari
XQ baru = XP lama
YP > YQ maka XA baru = XP lama
XB tetap
XP baru = XQ lama
XQ dicari
Jarak interval l = (√5 – 1)/2 = 0,618
if p(1)<p(2)
a=p(1); b=p(2);
else
a=p(2); b=p(1);
end
g=(-1+sqrt(5))/2;
r=b-a;
iter=0;
while r>tol
x=[a+(1-g)*r a+g*r];
y=feval(func,x);
if y(1)<y(2)
b=x(2);
else
a=x(1);
end
r=b-a;
iter=iter+1;
end
iter
f=feval(func,a);
138
l = 0,618
l
l
XA XP XQ XB
XA XP XQ XB
XA XP XQ XB
Phase benzena
y lb as. benzoat/lb
benzena
Phase air
x lb as.benzoat / (lb air + lb benzena larut)
Penyelesaian
a. Fraksi massa Asam Benzoat pada fase air
Neraca massa komponen Asam Benzoat
input – output = akumulasi
As. Benzoat umpan – As. Benzoat fase benzena – As. Benzoat fase air = 0
As. Benzoat umpan – (jumlah benzena x fraksi As. Benzoat pada fase
benzena) – (jumlah benzena dan air x fraksi As. Benzoat pada fase
air) = 0
F x0 – (W – 0,07 F) y – (F + 0,07 F) x = 0
F x0 – (W – 0,07 F) 4 x – (1,07 F) x = 0
F x0 – 4 W x – 0,79 F x = 0
Fxo
x=
(4W + 0,79F)
b. Keuntungan (P)
Keuntungan ( P ) = harga jual As. Benzoat fase benzena – harga beli benzena
= As. Benzoat fase benzena x $ 0,4 – Benzena x $0,001
140
= (x0 F – x F) $ 0,4 – (W) $0,001
= 0,4F(xo – x) –0,001W
P = 0,4F(xo – x) – 0,001W
Fxo
= 0,4F(xo – ) – 0,001W
(4W + 0,79F)
= 0,4.10000 (0,002 - 10000.0,002 ) – 0,001.W
(4W + 0,79.10000)
80000
=8- - 0,001W
(4W + 7900)
function fw=contoh62(w)
% Ekstraksi asam benzoat dari limbah industri
% Program bertujuan menentukan jumlah benzena yang ditambahkan
% untuk pengambilan asam benzoat dari limbah industri
% w adalah benzena yang ditambahkan
% Data-data
xo=0.002; % Konsentrasi asam benzoat pada limbah
F=10000; % Laju alir limbah
% Perhitungan asam benzoat yang dapat diambil
x=F.*xo./(4.*w+0.79.*F);
% Perhitungan keuntungan yang diperoleh
P=0.4.*F.*(xo-x)-0.001.*w;
iter =
35
f =
0.9702
x =
2.4971e+003
141
Matlab menyediakan fungsi untuk menentukan nilai minimasi satu variabel yaitu
fungsi fminbnd. Cara memanggil fungsi ini adalah
x = fminbnd(fun,x1,x2) dimulai pada x0 dan menentukan nilai minimasi x
dari fungsi fun pada interval x1 < x < x2. fun adalah fungsi dengan input x
Penyelesaian
a. dC A
− = k.C 2A
dt
Ca dC A t
− ∫ 2
= k ∫ dt
Cao C A 0
1 - 1 = kt
C A C Ao
142
1 -
1 = kt
C Ao (1 − x A ) C Ao
xA = kt
C Ao (1 − x A )
xA
tr =
kC AO (1 − x A )
b. CB C Ao x A
=
ts 1 ⎛ xA ⎞
⎜⎜ ⎟⎟ + tp
kC Ao ⎝1− xA ⎠
= C Ao x A kC Ao (1 − x A )
x A + tp kC Ao (1 − x A )
0,1.x A (1 − x A )
=
x A + 2,25(1 − x A )
c. Program matlab
% Optimasi konversi pada reaktor batch
% reaksi orde 2 pada reaktor batch
% A --> B
% optimasi konversi untuk mendapatkan
% B maksimal per waktu siklus
% Penyelesaian dengan fungsi fminbnd
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
%
clear all
clc
global Cao k tp
% Data-data
Cao = 2; % gmol/L
k = 0.025; % L/(gmol.menit)
tp = 45; % menit
% Interval konversi
xo=0.01; % konversi minimal yang mungkin terjadi
xn=0.99; % konversi maksimal yang mungkin terjadi
Fungsi matlab
function Cb_ts_min=F63(x)
% Program ini berisi fungsi untuk menghitung
143
% B terbentuk per satuan waktu siklus
global k Cao tp
Keluaran program
x_opt =
0.6000
Konversi optimal adalah 0,6
d. xA
tr =
kC AO (1 − x A )
= 30 menit
Cara klasik untuk mendapatkan suatu nilai yang optimal adalah dengan mencoba
semua titik yang mungkin. Cara ini lebih lama tetapi cukup menarik untuk
optimasi proses yang sederhana.
Keluaran program
145
Profit ($)
global vp T
% Data-data
vp = [ 1 5 10 20 40 60 100 200 400 760];
T = [-36.7 -19.6 -11.5 -2.6 7.6 15.4 26.1 42.2 60.6 80.1];
% Perhitungan optimasi
K = fminsearch('F65',Ko)
% Evaluasi parameter
z = 10.^(K(1)-(K(2)./(T+K(3))));
% Menampilkan hasil
plot(T,z,'k-',T,vp,'ko','linewidth',2)
set(gca,'fontsize',14)
xlabel('T(C)')
ylabel('vp(mmHg)')
Fungsi terkait
function ff=F65(K)
% Program ini bertujuan mencari nilai minimum
% program non linier
% Persamaan Antoine
% K(1) = A
% K(2) = B
% K(3) = C
%
% Nama File : F65.m
% Surakarta, Oktober 2005
% ---------------------------------------------------------------
global vp T
Keluaran program
K =
5.7673 677.0928 153.8852
Artinya A = 5,7673
147
B = 677,0928
C = 153,8852
vp(mmHg)
H2 + C2H4 → C2H6
terjadi dengan katalis cobalt molybdenum. Dari data-data yang ditunjukkan pada
tabel di bawah ini, tentukan parameter-parameter persamaan kecepatan reaksi
dengan menggunakan analisa kuadrat terkecil.
-rA =
kPE PH
1 + K A PEA + K E PE
Penyelesaian
% Hidrogenasi Etilen menjadi Etana
% Reaksi hidrogenasi etilen menjadi etana
% H2 + C2H4 --> C2H6
% Regresi Non Linear
% kPePh
% ra = ------------------
% 1 + KaPea + KePe
% Ingin menghitung nilai k, Ka, dan Ke
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
%
clear all
clc
global ra Pe Ph Pea n
% Data-data Percobaan
ra=[1.04 3.13 5.21 3.82 4.19 2.391 3.867 2.199 0.75];
% Kecepatan reaksi
% mol/kgkat.detik
Pe=[1 1 1 3 5 0.5 0.5 0.5 0.5]; % Tekanan, atm
Pea=[1 1 1 1 1 1 0.5 3 5]; % Tekanan, atm
Ph=[1 3 5 3 3 3 5 3 1]; % Tekanan, atm
% Jumlah data
n=9;
% Data-data
global ra Pe Ph Pea n
% Minimasi SSE
f=0;
for i=1:n
f=f+(ra(i)-(x(1)*Pe(i)*Ph(i))/(1+x(3)*Pea(i)+x(2)*Pe(i)))^2;
end
Hasil program
>> Harga k, Ka, dan Ke hasil minimasi
ans =
3.3479 2.2111 0.0429
-rA = 3,3479PE PH
1 + 2,2111PEA + 0,0429PE
Gambar 6.5 menunjukkan cross section dari kanal saluran air. Analisa awal
menunjukkan bahwa luas penampang saluran harus 100 ft3 untuk dapat
menampung kecepatan aliran air. Untuk meminimasi biaya digunakan kanal
lurus dengan cara meminimasi panjang perimeter kanal. Tentukan d, b, dan θ
untuk meminimasi panjang kanal ini.
b θ
L = b + 2d
sin θ
2
A = db + d = 100 b = 100 − d
tan θ d tan θ
100 d 2d
L= − +
d tan θ sin θ
Program Matlab
% Optimasi Kanal Saluran Air
% menentukan d dan sudut tetha
% 100 d 2d
% L = ---- - ---------- + ----------
% d tan(tetha) sin(tetha)
% Ingin menghitung nilai k, Ka, dan Ke
% ---------------------------------------------------------------
--
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
%
*****************************************************************
%
clear all
clc
% Tebakan awal
d_tebakan = 20; % ft
teta_tebakan = 1;
% Perhitungan optimasi
x =fminsearch('F67',[d_tebakan teta_tebakan]);
% Hasil perhitungan
d = x(1)
teta = x(2)*180/pi % konversi ke derajat
Program perhitungan L
function L = F67(x)
% Program ini berisi fungsi untuk menghitung L
% sebagai fungsi d dan tetha
%
% Nama File : F67.m
% Surakarta, Oktober 2005
% ---------------------------------------------------------------
d = x(1);
teta = x(2);
Keluaran program
>>
d =
7.5983
teta =
60.0004
clear all
global xDataz yDataz
% Header Program
disp('Demonstrasi regresi nonlinear')
disp(' y = alpha*exp(beta*x)')
% Data-data
xDataz = [ 0 2 3 5 7 8 9 ]';
yDataz = [ 10 8 5 3 2 1 1 ]';
% Tebakan
guess = [15 -0.5];
% Perhitungan
param = fminsearch('F68', guess);
% Cetak hasil perhitungan
alpha = param(1);
beta = param(2);
disp('Koefisien adalah: ')
disp([ 'alpha = ', num2str(alpha) ])
disp([ 'beta = ', num2str(beta) ])
% Evaluasi hasil
yfit = alpha.*exp(beta.*xDataz);
% Mengubah variabel
alpha = param(1);
beta = param(2);
% Perhitungan SSE
error = yDataz - alpha.*exp(beta.*xDataz);
sse = sum(error.^2);
Keluaran Program
S1 S2 S3
F F F F
1 2 3
x0 x1 x2 x3=xR
S1 S2 S3
y1 y2 y3
− F + F 2 + 4F.S1 .k.x o
x1 =
2S1 .k
− F + F 2 + 4F.S 2 .k.x 1
x2 =
2S 2 .k
− F + F 2 + 4F.S3 .k.x 2
xR = x3 =
2S3 .k
S3 = S – S1 – S2
Data-data yang diketahui adalah F = 100 kg A/mnt; S = 180 kg B/mnt; xo = 0,2
kg C/ kg A; dan k = 20
Program Penyelesaian
% Ekstraktor Tiga Tingkat
%
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
global Stot xo F S3 k
% Data-data
Stot=180; % Laju alir solvent total, kg B/menit
xo=0.2; % Konsentrasi umpan, kg C/kg A
F=100; % Laju alir umpan, kg A/menit
k=20; % Konstanta kesetimbangan
% Perhitungan
[S,xR]=fminsearch(@F69,So);
154
% Hasil perhitungan
S1=S(1)
S2=S(2)
S3=Stot-S1-S2
xR_min=xR
Program terkait
function xR=F69(S)
% Program ini berisi fungsi untuk menghitung XR
% fungsi konstanta-konstanta yang ingin dicari
% S(1) & S(2) ---> S(3) akan terhitung
%
% Nama File : F69.m
% Surakarta, Oktober 2005
% ---------------------------------------------------------------
global Stot xo F S3 k
S3=Stot-S(1)-S(2);
x1= (-F+sqrt(F^2+4*F*S(1)*k*xo))/(2*S(1)*k);
x2= (-F+sqrt(F^2+4*F*S(2)*k*x1))/(2*S(2)*k);
xR= (-F+sqrt(F^2+4*F*S3*k*x2))/(2*S3*k);
Keluaran program
S1 =
47.3733
S2 =
59.8036
S3 =
72.8231
xR_min =
0.0382
[ ]
Pt hit = x A .PAo .exp β(1 − x A ) 2 + (1 − x A ).PBo .exp(βe 2A )
Penyelesaian
% Koefisien Aktivitas Campuran Biner
% Koef(A) = exp (beta.xB^2 )
% Koef(B) = exp (beta.xA^2 )
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
% Data-data
xa=[0.1 0.2 0.3 0.4 0.6 0.7 0.8 0.9];
Ptdat=[65.8 70.3 73.9 76.5 79.9 80.9 81.3 81];
% Tekanan uap murni
Pao=80; Pbo=60;
% Perhitungan beta
beta=fminsearch(@F610,0.7)
Program terkait
function fP=F610(B)
% Program ini berisi fungsi untuk menghitung SSE
%
% SSE = sigma [ P data - P hit ]^2
%
% Nama File : F610.m
% Surakarta, Oktober 2005
% ---------------------------------------------------------------
Pt=xa*Pao.*exp(B*(1-xa).^2)+(1-xa)*Pbo.*exp(B*xa.^2);
fP=sum((Ptdat-Pt).^2);
Keluaran program
beta =
0.4584
(
⎝ jam . kg katalisator ⎠ 22,414. 1 + K 2 .PSO 2 + K 3 .PSO 3 ) 2
dengan :
⎛ 5473 ⎞
k 1 = exp⎜12,16 − ⎟
⎝ T ⎠
⎛ 8619 ⎞
K 2 = exp⎜ − 9,953 + ⎟
⎝ T ⎠
⎛ 52956 ⎞
K 3 = exp⎜ − 71,745 − ⎟
⎝ T ⎠
⎛ 11300 ⎞
K P = exp⎜ − 10,68 + ⎟
⎝ T ⎠
(1 − x)
PSO 2 = .Pt
(12,82 − 0,5.x)
(1 − x)
PO 2 = .Pt
(12,82 − 0,5.x)
x T = TF + 241,7.(x – xF)
PSO3 = .Pt
(12,82 − 0,5.x)
xF xin
xout
Tin Tin
Tout
W kg katalis
F gmol N2 / j
SO2 = 7,8%
O2 = 10,8%
N2 = 81,4%
R gmol N2 / j
157
W = 137,3.⎜1 + ⎟. ∫ . dx
⎝ F ⎠ x in r
⎛R⎞
x F + ⎜ ⎟.x out
x in = ⎝R⎠
R
1+
F
Diketahui data-data sebagai berikut, xF = 0; xout = 0,64; TF = 660 K
Program penyelesaian
% Reaktor Adiabatis untuk Reaksi Fase Gas Bolak-balik Eksotermis
%
% SO2 + ½ O2 ---> SO3
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
global xf xout Tf
% Data-data
xf=0; % Konversi umpan
xout=0.64; % Konversi keluar reaktor
Tf=660; % Temperatur umpan, K
% Perhitungan
[RperF,Wmin]=fminsearch(@F611,4)
Program terkait
158
function W=F611(RperF)
% Program ini berisi fungsi untuk menghitung berat katalis
%
% Nama File : F611.m
% Surakarta, Oktober 2005
% ---------------------------------------------------------------
global xf xout Tf
Keluaran program
RperF =
2.2554
Wmin =
4.4758e+003
Sehingga pada R/F = 2,25 akan diperoleh berat katalis minimum yaitu 4475,8 kg.
⎛ E ⎞
k = A. exp ⎜ - ⎟
⎝ RT ⎠
C Ao ∆H R
T = TF - xA
ρ .Cp
C Ao .x R
B = VR
(t R + t p )
Data-data yang diketahui adalah VR = 10.000 L; CAo = 1 gmol/L; ρ = 1,0
kcal/(kg.K); A = 107 L/(gmol.mnt); E = 14 kcal/gmol; ∆HR = - 6 kcal/gmol; R =
0,001987 kcal/(gmol.K); TF = 350 K; tp = 120 mnt; xRo = 0.
Program penyelesaian
% Reaktor Batch Adiabatis untuk Reaksi Cair Orde 2
% A --> B
%
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
% Data-data
Tf=350; % Temperatur umpan, K
Cao=1; % Konsentrasi umpan, gmol/L
dHr=-6; % Beda entalphi reaksi, kkal/gmol
rho=1; % Densitas larutan, kg/L
Cp=1; % Kapasitas panas larutan, kcal/kg.K
A=1e7; % Konstanta Arrhenius, L/gmol.menit
Ea=14; % Konstanta Arrhenius, kkal/gmol
R=0.001987; % Konstanta gas ideal, kkal/gmol.K
xro=0; % Konversi mula-mula
Vr=10000; % Volume reaktor, L
tp=120;
% Perhitungan konversi
konversi=fminsearch(@F612,0.5)
Program terkait
function fxr=soal_15b(xr)
% Program ini berisi fungsi untuk menghitung konversi
%
% Nama File : F612.m
% Surakarta, Oktober 2005
% ---------------------------------------------------------------
160
Program lain
function fx=F612F(x)
% Program ini berisi fungsi untuk menghitung integral
% waktu reaksi
% Nama File : F612F.m
% Surakarta, Oktober 2005
% ---------------------------------------------------------------
global Tf Cao dHr rho Cp A Ea R xro Vr tp
T=Tf-Cao*dHr*x/(rho*Cp);
k=A*exp(-Ea./(R*T));
fx=1./(Cao*k.*(1-x).^2);
Keluaran program
konversi =
0.6267
⎛ E ⎞
k = A. exp ⎜ - ⎟
⎝ RT ⎠
⎛β⎞
K = α. exp ⎜ ⎟
⎝T⎠
λ.C Ao
T = To + (x - x o )
ρ .Cp
Data-data yang diketahui adalah : A = 25; E = 10.000; R = 1,987; α = 1750; β = -
5.000; ρ = 1100; Cp = 1,2; CAo = 1; xo = 0; xN = 0,3.
161
Program penyelesaian
% Reaktor Batch Adiabatis Reaksi Fase Cair Bolak-balik
% A <---> B
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
% Data-data
alpa=1750;
rho=1100;
Cp=1.2;
Cao=1;
xo=0;
xn=0.3;
beta=-5e3;
A=25;
Ea=1e4;
R=1.987;
lamda=-8e4;
% Perhitungan temperatur awal optimum
[To,waktu]=fminsearch(@F613,700)
Program terkait
function ft=F613(To)
% Program ini berisi fungsi untuk menghitung waktu reaksi
%
% Nama File : F613.m
% Surakarta, Oktober 2005
% ---------------------------------------------------------------
global alpa rho Cp Cao xo xn beta A Ea R lamda
Keluaran program
To =
736.3329
waktu =
25.6426
T = TR −
[(1 − x in ).Cp A + x in .(Cp B + Cp C )].(TR − Tin ) + ( x − x in ).∆H oR
(1 − x ).Cp A + x.(Cp B + Cp C )
x0, T0
W1 W2
HE HE
Program penyelesaian
% Dua Reaktor Adiabatis Tersusun Seri
% Reaksi endotermis order 1 fasa gas
% A ---> B + C
% dengan katalisator padat dalam 2 reaktor adiabatis
% yang disusun seri
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
% Data-data
xin=0; % Konversi masuk rangkaian reaktor
xout=0.6; % Konversi keluar rangkaian reaktor
163
Tr=298; % Temperatur referensi, K
Tin=1200; % Temperatur masuk reaktor, K
Cpa=4; % Kapasitas panas A, kal/gmol.K
Cpb=5.5; % Kapasitas panas B, kal/gmol.K
Cpc=7; % Kapasitas panas C, kal/gmol.K
dHr=2000; % Beda entalphi reaktsi, kal/gmol
P=2; % Tekanan reaktor, atm
R=0.082; % Konstanta gas ideal, L.atm/gmol.K
Fao=10; % Kecepatan umpan masuk,gmol/detik
Program terkait
function fw=F614(x1)
% Program ini berisi fungsi untuk menghitung berat katalis
%
% Nama File : F614.m
% Surakarta, Oktober 2005
% ---------------------------------------------------------------
global xin xout Tr Tin Cpa Cpb Cpc dHr R P Fao
Keluaran program
x1 =
0.2506
W =
560.4560
Sehingga konversi dari reaktor 1 yang optimal adalah 0,2506 dengan berat
katalis total minimal 560,456 kg.
164
⎛ E ⎞
k = A. exp ⎜ - ⎟
⎝ RT ⎠
T = To + CAo.β.x
Tentukan nilai β dengan cara regresi linear kemudian tentukan nilai A dan B
dengan mencari SSE minimum, SSE dinyatakan dengan persamaan berikut,
Penyelesaian
% Reaktor Batch untuk Reaksi Gas Cair
% Reaksi fasa cair eksotermis
% A ---> B
% reaktor tangki berpengaduk yang bekerja
% secara batch dan adiabatis
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
% Tebakan konstanta
165
Ao=[2e18 1.8e4];
% Penentuan konstanta
[A]=fminsearch(@F615,Ao);
% Menampilkan hasil perhitungan
Ar=A(1)
B=A(2)
Program terkait
function ft=F615(A)
% Program ini berisi fungsi untuk menghitung SEE
%
% Nama File : F615.m
% Surakarta, Oktober 2005
% ---------------------------------------------------------------
% Data-data
Cao=1.6; To=340;
tdat=[0 30 60 90 120 150];
Tdt=[340 344 350 359 369 373];
xdt=[0 0.11 0.28 0.53 0.78 0.9];
% Penentuan Beta
p=polyfit(xdt,Tdt,1);
beta=p(1)/Cao;
% Perhitungan waktu
for i=1:6
x=linspace(0,xdt(i),100);
T=To+beta*Cao*x;
k=A(1)*exp(-A(2)./T);
y=1./(Cao*k.*(1-x).^2);
wkt(i)=trapz(x,y);
end
% Perhitungan SEE
ft=sum((tdat-wkt).^2);
Keluaran program
Ar =
9.9683e+017
B =
1.6204e+004
PERSAMAAN
7 DIFFERENSIAL ORDINER
slope
xi xi+1
steps=(tspan(2)-tspan(1))/step+1;
y=startval;t=tspan(1);
yvals=startval;tvals=tspan(1);
for i=2:steps
y1=y+step*feval(func,t,y);t1=t+step;
tvals=[tvals,t1]; yvals=[yvals,y1];
t=t1;y=y1;
end
Contoh 7.1.
Selesaikan dengan Metode Euler
dy/dt = y – 20 dengan y(0) = 100
Program Matlab
% Demonstrasi penggunaan metode euler
% Program ini bertujuan menyelesaikan
% dy
% ---- = y - 20 y(0) = 100
% dt
% Tentukan y sebagai fungsi t
% Penyelesaian dengan Metode Euler
% Dicoba untuk berbagai besaran step yang berbeda
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
v= y - 20;
Keluaran program
y
Contoh 7.2.
Selesaikan dy/dt = 2yt dengan y = 2 untuk t = 0
Penyelesaian secara analitis y = 2exp(t2)
Program penyelesaian
% Demonstrasi penyelesaian Persamaan Differensial Ordiner
% Program ini bertujuan menyelesaikan
% dy
% ---- = 2*t*y y(0) = 2
% dt
% Tentukan y sebagai fungsi t
% Penyelesaian dengan
% Metode Runge-Kutta dan Prediktor-Korektor
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
%
t0=0; tf=2; tinc=0.25; steps=floor((tf-t0)/tinc+1);
[t,y1]=rkgen(‘F72’,[t0 tf],2,tinc);
[t,y2]=abm(‘F72’,[t0 tf],2,tinc);
disp(‘ t Runge-Kutta Prediktor-Korektor Eksak ‘)
for I=1:steps
fprintf(‘%8.2f%14.7f%18.7f%16.7f\n’,t(i),y1(i),y2(i),...
2*exp(t(i)*t(i)));
end
Program terkait
function v=F72(t,y)
% Program ini berisi fungsi untuk menghitung v
% dy
% v = ---- = 2*y*t
% dt
% Nama File : F72.m
% Surakarta, Oktober 2005
% --------------------------------------------------------------
v=2*t*y;
Keluaran program
176
t Runge-Kutta Prediktor-Korektor Eksak
0.00 2.0000000 2.0000000 2.0000000
0.25 2.1289876 2.1289876 2.1289889
0.50 2.5680329 2.5680329 2.5680508
0.75 3.5099767 3.5099767 3.5101093
1.00 5.4357436 5.4340314 5.4365637
1.25 9.5369365 9.5206761 9.5414664
1.50 18.9519740 18.8575896 18.9754717
1.75 42.6424234 42.1631012 42.7618855
2.00 108.5814979 106.2068597 109.1963001
clear all
global Alpha Beta
% Data-data
Alpha = -5.;
Beta = 2.;
% Nilai awal
y0(1) = 1. ;
y0(2) = 0.1;
% Batasan waktu
t0 = 0.; % waktu mulai
tf = 1.; % waktu akhir
% Plot hasil
plot(t, y, 'k-','linewidth',2)
Program perhitungan
function dydt = F73(time, y)
% Program ini berisi fungsi untuk menghitung v
% dc/dt = 1 - c - xk*c ... neraca massa
% dT/dt = 1 - T - alpha*xk*c ... neraca entalpi
% Nama File : F73.m
% Surakarta, Oktober 2005
% --------------------------------------------------------------
% Variabel sesungguhnya
c = y(1);
T = y(2);
dydt = dydt';
Keluaran program
Recycle
Tangki I
Tangki II
Produk
Program penyelesaian
% Dua Tangki Seri Larutan Garam
% Tentukan konsentrasi larutan garam pada Tangki I dan II
% sebagai fungsi waktu
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
%
% Batasan waktu
to = 0; % waktu awal, menit
tn = 30; % waktu akhir, menit
n = 31; % jumlah data
datat = linspace(to,tn,n);
% Perhitungan
[t,C]= ode45('F74',datat,Co);
% Plot hasil
plot(t,C(:,1),'k-',t,C(:,2),'k+','LineWidth',2);
legend('C1','C2')
% Menampilkan hasil
t = t(n)
C1 = C(n,1)
C2 = C(n,2)
Program terkait
function dCdt = F74(t,C)
% Program ini berisi fungsi untuk menghitung
% konsentrasi garam tangki I dan II
% sebagai fungsi waktu
% Neraca massa tangki I
% dC1/dt = (q0*C0 + qR*C2 - q1*C1)/V1
% Neraca massa tangki II
% dC2/dt = (q1*C1 - q2*C2)/V2
% Nama File : F74.m
% Surakarta, Oktober 2005
% --------------------------------------------------------------
% Data-data
V1 = 100; % Volume tangki I, L
V2 = 100; % Volume tangki II, L
q0 = 5; % Laju alir umpan, L/menit
q1 = 8; % Laju alir keluar tangki I, L/menit
q2 = 8; % Laju alir keluar tangki II, L/menit
qR = 3; % Laju alir recycle, L/menit
qproduk = 5; % Laju alir produk, L/menit
C0 = 0; % konsentrasi umpan, L/menit
% Persamaan differensial
dCdt1 = (q0*C0 + qR*C(2) - q1*C(1))/V1;
dCdt2 = (q1*C(1) - q2*C(2))/V2;
dCdt = [dCdt1
dCdt2];
Keluaran program
180
To = 20 C T1 T1 T2 T2 T3 T3
W = 100 kg/menit
Penyelesaian
Neraca panas pada tangki 1
dT1
MCp = WCpTo + UA(Tsteam – T1) – WCpT1
dt
dT1
= [WCp(To – T1) + UA(Tsteam – T1)]/ (MCp)
dt
analog untuk tangki 2 dan 3
dT2
= [WCp(T1 – T2) + UA(Tsteam – T2)]/ (MCp)
dt
dT3
= [WCp(T2 – T3) + UA(Tsteam – T3)]/ (MCp)
dt
Program Matlab
% Penukar Panas dalam Tangki Seri
% Larutan minyak multikomponen dipanaskan dalam
% tiga tangki tersusun seri.
% Sebagai pemanas digunakan steam jenuh yang
% terkondensasi dalam koil
% Tentukan suhu di dalam tangki sebagai fungsi waktu
% Penyelesaian dengan fungsi ode45
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
%
182
clear all
clc
global W UA M Cp Tsteam Jml_Tangki To
% Data-data
Jml_Tangki = 3; % Jumlah tangki
W = 100; % Laju alir minyak, kg/menit
UA = 10; % Koef. transfer panas & luas koil, kJ/menit.C
M = 1000; % massa minyak dalam tangki, kg
Cp = 2.0; % kapasitas panas minyak, kj/kg
Tsteam = 250; % temperatur steam jenuh, C
To = 20; % temperatur minyak masuk, C
% Setting waktu
t_mulai = 0; % menit
t_akhir = 90; % menit
tspan = [t_mulai t_akhir];
Program terkait
function dTdt = F75(t,T)
% Program ini berisi fungsi untuk menghitung
% temperatur di dalam tangki sebagai fungsi waktu
% Neraca panas di setiap tangki
% dTi W Cp (To - Ti) + UA (Tsteam - Ti)
% ----- = -----------------------------------
% dt M Cp
% Nama File : F75.m
% Surakarta, Oktober 2005
% ---------------------------------------------------------------
for j =1:Jml_Tangki
if j==1
dTdt(j)=(W*Cp*(To-T(j))+UA*(Tsteam-T(j)))/(M*Cp); % Tangki 1
else
dTdt(j)=(W*Cp*(T(j-1)-T(j))+UA*(Tsteam-T(j)))/(M*Cp);
% Tangki 2 & 3
end
end
dTdt=dTdt';
Keluaran program
183
clear all
clc
global k1 k2 k3
% Batasan waktu
to = 0;
tn = 10;
tspan = [to tn];
% Perhitungan
[t C] = ode45('F76',tspan,Co);
% Plot Hasil
plot(t,C(:,1),'k-',t,C(:,2),'k+',t,C(:,3),'ko','LineWidth',2)
title('Tiga Reaksi Simultan','FontSize',14)
xlabel('waktu','FontSize',14)
ylabel('konsentrasi','FontSize',14)
legend('Ca','Cb','Cc',14)
Program terkait
function dC_dt=F76(t,C)
% Program ini berisi fungsi untuk menghitung Ca, Cb, Cc
% ra = -k1*Ca
% rb = k1*Ca - k2*Cb*Cc - k3*Cb^2
% rc = k3*Cb^2
% Nama File : F76.m
% Surakarta, Oktober 2005
% --------------------------------------------------------------
global k1 k2 k3
% Variabel awal
Ca = C(1);
Cb = C(2);
Cc = C(3);
185
Keluaran program
konsentrasi
Etilen oksida (A) dan O2 (B) masuk reaktor pada temperatur 260 OC. Etilen
masuk dengan kecepatan 0,3 lbmol/detik dan tekanan 10 atm. Reaksi dijalankan
pada sepuluh unit pipa yang masing-masing unit terdiri 100 pipa diameter 1 ½ in
schedule 40.
186
Akibatnya laju alir 3.10-4 lbmol/detik. Sifat fisis fluida bereaksi dipertimbangkan
sebagai udara pada tekanan dan temperatur yang sama. Densitas katalis yang
berdiameter ¼ in 120 lb/ft3 dan bed void fraction 0,45.
Kecepatan reaksi –rA’ = kPA1/3PB2/3 dengan k = 0,0141 lbmol/(atm.lbkatalis.jam)
pada 260 OC. Tentukan konversi dan penurunan tekanan sebagai fungsi berat
katalis ! Diketahui βo = 0,0775 atm/ft.
Penyelesaian
FAo = 3.10-4 lbmol/detik = 1,08 lbmol/jam
FBo = 1,5.10-4 lbmol/detik = 0,54 lbmol/jam
FI = 1,5.10-4 lbmol/detik x 0,79/0,21 = 5,64.10-4 lbmol/detik = 2,03 lbmol/jam
FTo = 3,65 lbmol/jam
PAo = yAoPo = (FAo / FTo)Po
PAo = (1,08/2,03).10 atm = 3 atm
-rA’ = kPA1/3PB2/3
-rA’ = k(CART)1/3(CBRT)2/3 = kRT CA1/3CB2/3
v = vo (1+εX)(Po/P)
CA = FA = C Ao (1 − x ) P
v 1 + εx Po
CB = FB = C Ao (1 / 2 − x / 2) P
v 1 + εx Po
α = 0,0166 / lbkat
⎡150(1 − φ)µ ⎤
βo = G (1 − φ) ⎢ + 1,75G ⎥
ρc g c D P φ3 ⎣⎢ Dp ⎦⎥
untuk pipa1 ½ in schedule 40 , Ac = 0,01414 ft2
G = m / Ac
G = 104,4 =7383,3 lbm/(jam.ft2)
0,01414
% Perhitungan
[W,x]=ode45('F77',Wspan,xo);
f=(1+eps.*x(:,1))./x(:,2);
% Plot hasil
188
figure(1)
plot(W,x,'k+',W,f,'k-','linewidth',2)
title('Reaksi Pembentukan Etilen Oksida','fontsize',14)
xlabel('W (lb)','fontsize',14)
legend('X','y','f','fontsize',14)
rate=kprime*((1-x(:,1))/(1+eps*x(:,1)))*x(:,2);
figure(2)
plot(W,rate,'k-','linewidth',2)
title('Kecepatan Reaksi Pembentukan Etilen Oksida','fontsize',14)
xlabel('W (lb)','fontsize',14)
Program lain
function dx_dW=F77(W,x)
% Nama File : F77.m
% Surakarta, Oktober 2005
% --------------------------------------------------------------
Keluaran program
q Ta
Fao X
To T
q Ta
Penyelesaian
Neraca massa untuk reaktor katalitik
Fao
dX = -r’
a
dW
⎡ ⎤
-r’a = k ⎢Ca 2 − Cc ⎥
⎣ KC ⎦
dengan konstanta kecepatan reaksi reaktan A mengikuti persamaan Arrhenius
Ca = Cao ⎛⎜ 1 − X ⎞⎟ P To = Cao ⎛⎜ 1 − X ⎞⎟ y To
⎝ 1 + εX ⎠ Po T ⎝ 1 + 0,5X ⎠ T
Cc = ⎛⎜ 0,5CaoX ⎞⎟ y To
⎝ 1 + 0,5X ⎠ T
Penurunan tekanan dapat dinyatakan sebagai
191
d(P / Po) − α(1 + εX) Po T
=
dW 2 P To
dy − α(1 + εX) T
=
dW 2y To
Secara umum neraca energi dapat ditulis sebagai berikut
dT Ua (Ta − T) + r ' a ∆Hr
=
dW FaoCpa
% Reaksi Phase Gas Reversibel dan Eksotermis dlm Reaktor Katalitik
% Reaksi elementari phase gas 2A --> C
% dijalankan pada reaktor packed bed
% Reaktor dilengkapi dengan penukar panas
% terjadi penurunan tekanan sepanjang reaktor
% Tentukan konveri, penurunan tekanan, dan temperatur
% sebagai fungsi berat katalis
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
%
global Ta delH CPA FAO
% Data-data
Ta = 500; % temperatur, K
delH = -40000; % panas reaksi, J/gmol
CPA = 40; % kapasitas panas A, J/(gmol.K)
FAO = 5; % laju alir A, gmol/menit
% Kondisi awal
var0(1) = 0; % konversi
var0(2) = 450; % temperatur
var0(3) = 1.0; % penurunan tekanan
Wspan = [0 20];
% Perhitungan
[W var]=ode45('F78',Wspan,var0);
% Plot hasil
tt = var(:,2)/1000;
x=var(:,1);
T=var(:,2);
y=var(:,3);
figure(1)
plot(W,x,'k-',W,y,'k+',W,tt,'ko','LineWidth',2)
title('Model Reaktor','FontSize',14)
xlabel('W','FontSize',14)
legend('konversi A', 'Tekanan ternormalisasi', 'T/1000')
temp=0.271*(450./T).*y./(1-0.5*x);
CA=temp.*(1-x);
CC=temp.*0.5.*x;
figure(2)
plot(W,CA,'k-',W,CC,'k+','LineWidth',2)
title('Konsentrasi','FontSize',14)
xlabel('W','FontSize',14)
legend('Konsentrasi A','Konsentrasi C')
192
Program terkait
function der=F78(W,var)
% Program ini berisi fungsi untuk menghitung x, T, y
% dx/dW = -ra'/Fao
% dT Ua*(Ta-T) + ra'*delH
% ---- = ----------------------
% dW Fao*Cpa
% dy - alpha*(1+eps*x) T
% ---- = ------------------ * ----
% dW 2*y To
% Nama File : F78.m
% Surakarta, Oktober 2005
% --------------------------------------------------------------
% perhitungan
k = 0.5*exp(5032*(1/450-1/T));
temp = 0.271*(450/T)*y/(1-0.5*x);
CA = temp*(1-x);
CC = temp*0.5*x;
Kc = 25000*exp(delH/8.314*(1/450-1/T));
rA = -k*(CA*CA-CC/Kc);
% persamaan differensial
der(1) = -rA/FAO;
der(2) = (0.8*(Ta-T)+rA*delH)/(CPA*FAO);
der(3) = -0.015*(1-0.5*x)*(T/450)/(2*y);
der=der';
Keluaran program
193
q = CdA 2gh
Tentukan waktu tangki menjadi kosong jika tinggi cairan mula-mula 9 ft. Tangki
mempunyai jari-jari r = 5 ft dan lubang mempunyai diameter 1 in di dasar tangki.
Gunakan g = 32,2 ft/second2.
dV
= -q
dt
195
dh dh
2πrh - πh2 = - CdA 2gh
dt dt
dh = C d A 2gh
−
dt π( 2rh − h 2 )
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
%
clear all
% kondisi awal
ho = 9; % ft
% Batasan waktu
to = 0; % menit
tn = 2475; % menit
tspan = [to tn];
% Perhitungan
[t,h]=ode45('F79',tspan,ho);
% Plot hasil
plot(t,h,'k-','LineWidth',2)
xlabel('Waktu (detik)','FontSize',14)
ylabel('Tinggi (ft)','FontSize',14)
Program terkait
function hdot = F79(t,h)
% dh Cd*A*(2*g*h)^0.5
% ---- = - -------------------
% dt phi*(2*r*h - h^2)
% Nama File : F63.m
% Surakarta, Oktober 2005
% --------------------------------------------------------------
%Data-data
Cd = 0.6;
r = 5; % jari-jari tangki, ft
dhole = 1/12; % diameter lubang, konversi ke ft
A = pi*(dhole)^2; % luas lubang pengeluaran
g = 32.2; % ft/det^2
hdot = -Cd*A*(2*g*h)^0.5/(pi*(2*r*h-h^2));
Keluaran program
Tinggi(ft)
196
rA = - kCA = - k’ CA ρC (1 - φ)
CA = CAo ⎛⎜ 1 − x ⎞⎟ y
⎝ 1 + εx ⎠
ε = yAoδ = 1 x (1+1-1) = 1
y = P/Po
Persamaan untuk penurunan tekanan
dy β
= − o (1 + εx )
dz Po y
G = m / Ac
Reaktor sperikal
Ac = π [R2 – (z – L)2]
βo = [98,87G + 25630G2]0,01
w = ρC (1 - φ) π [R2z – 1/3(z – L)3 - 1/3 L3]
% Reaksi Dehidrogenasi dalam Reaktor Sperikal
% Reaksi dehidrogenasi
% Parafin --> olefin + H2
% Reaksi orde satu terhadap parafin.
% Tentukan konsentrasi dan penurunan tekanan
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
%
global eps kprime
198
% Data awal
Xo = 0;
yo = 1;
xo = [Xo yo];
% batasan jarak
zspan = [0 54];
%Perhitungan
[z,x]=ode45('F710',zspan,xo);
% Plot hasil
plot(z,x,'k-','linewidth',2)
title('Reaksi Dehidrogenasi pada Reaktor Bola')
xlabel('z (dm)','FontSize',12)
legend('X','y',12)
axis([0 54 0 1.2])
Program terkait
function dx_dz=F710(z,x)
% Nama File : F710.m
% Surakarta, Oktober 2005
% --------------------------------------------------------------
% Variabel awal
X = x(1);
y = x(2);
% Data-data
Fa0 = 440;
P0 = 2000;
Ca0 = 0.32;
R = 30;
phi = 0.4;
kprime = 0.02;
L = 27;
rhocat = 2.6;
m = 44;
% Perhitungan
Ca = Ca0*(1-X)*y/(1+X);
Ac = pi*(R^2-(z-L)^2);
V=pi*(z*R^2-1/3*(z-L)^3-1/3*L^3);
G=m/Ac;
ra=-kprime*Ca*rhocat*(1-phi);
beta=(98.87*G+25630*G^2)*0.01;
W=rhocat*(1-phi)*V;
% Differnsial
dx_dz(1,:)=-ra*Ac/Fa0;
dx_dz(2,:)=-beta/P0/y*(1+X);
Keluaran program
199
dx1 ⎡
= 6,089 ⎢(1 − x1 − x 2 )2 −
(12 x1 − x 2 )(12 x1 + x 2 )⎤
⎥
d (V F) ⎣⎢ 0,312 ⎦⎥
dx 2 ⎡
( )
= 3,529 ⎢(1 − x1 − x 2 ) 12 x1 − x 2 −
(
x 2 12 x1 + x 2 )⎤⎥
d(V F) ⎢⎣ 0,480 ⎥⎦
Penyelesaian
% Reaksi Dehidrogenasi Phase Uap Benzena dlm Reaktor Alir Tubular
% Reaksi
% 2C6H6 ---> C12H10 + H2
% C6H6 + C12H10 ---> C18H14 + H2
% Tentukan konversi reaksi 1 dan 2 sbg fungsi (V/F)
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
%
global T K1 K2
% Data-data
T = 1033; % Temperatur, K
K1 = 0.312; % konstanta kesetimbangan reaksi 1
K2 = 0.480; % konstanta kesetimbangan reaksi 2
% Kondisi awal
x1o = 0;
x2o = 0;
xo = [x1o x2o];
% Batasan V/F
V_Fo = 0; % V/F awal, ft^3.jam/lbmol
V_Ff = 0.5; % V/F awal, ft^3.jam/lbmol
V_Fspan = [V_Fo V_Ff];
% Perhitungan
[V_F,x]=ode45('F711',V_Fspan,xo);
% Plot hasil
plot(V_F,x(:,1),'k-',V_F,x(:,2),'k+','Linewidth',2)
title('Dehidrogenasi Benzena','FontSize',12)
xlabel('V/F dlm ft^3.jam/lbmol','FontSize',12)
ylabel('konversi Benzena','FontSize',12)
legend('reaksi 1', 'reaksi 2')
Program terkait
function dx_dVF = F711(V_F,x)
% Program ini berisi fungsi untuk menghitung
201
% konversi reaksi 1 dan reaksi 2
% dx1 [ (0,5x1-x2)(0,5x1+x2) ]
% ------- = 0,6089 [ (1-x1-x2)^2 - -------------------- ]
% d(V/F) [ 0,312 ]
% dx2 [ x2(0,5x1+x2) ]
% ------- = 3,529 [ (1-x1-x2)(0,5x1-x2) - ------------ ]
% d(V/F) [ 0,480 ]
% Nama File : F11.m
% Surakarta, Oktober 2005
% --------------------------------------------------------------
global T K1 K2
dx_dVF(1) = 14.96*10^6*exp(-15200/T)*((1-x(1)-x(2))^2-...
(0.5*x(1)-x(2))*(0.5*x(1)+x(2))/K1);
dx_dVF(2) = 8.67*10^6*exp(-15200/T)*((1-x(1)-x(2))*...
(0.5*x(1)-x(2))-x(2)*(0.5*x(1)+x(2))/K2);
dx_dVF=dx_dVF';
Keluaran program
konversi Benzena
Pi = 10^ ⎛⎜ A − B ⎞⎟
⎝ T +C⎠
Temperatur dalam batch distilasi mengikuti kurva bubble point. Temperatur
bubble point didefinisikan sebagai
k1x1 + k2x2 = 1
Untuk sistem biner dengan komponen benzena (komponen ke-1) dan toluena
(komponen ke-2) diasumsikan berada pada kesetimbangan. Konstanta Antoine
untuk benzena A1 = 6,90565, B1 = 1211,033, dan C1 = 220,79. Sedang untuk
toluena A2 = 6,95464, B2 = 1344,8, dan C2 = 219,482. P adalah tekanan (mmHg)
dan T adalah temperatur (OC).
Hitunglah jumlah liquid tersisa dalam distilasi saat konsentrasi toluena
mencapai 80 %, jika diketahui 100 mol liquid umpan terdiri 60% benzena dan
40% toluena (fraksi mol) pada tekanan 1,2 atm.
Penyelesaian
% Distilasi Secera Batch Komponen Biner
% Proses distilasi secara biner melibatkan komponen 1 dan 2
% Hitunglah jumlah liquid tersisa dalam distilasi
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
%
clear all
clc
global A B C P
% Data-data proses
P = 1.2*760; % mmHg
Lo = 100; % mol
x2_awal = 0.4; % mol toluena awal
x2_akhir = 0.8; % mol toluena akhir
203
% Penyelesaian PD Ordiner
x2span = [x2_awal x2_akhir];
[x2 L] = ode45('F712',x2span,Lo);
% Plot hasil
plot(x2,L,'k-','linewidth',2)
title('Distillasi Batch','fontsize',14)
xlabel('Fraksi mol toluena','fontsize',14)
ylabel('Mol cairan','fontsize',14)
% Save hasil
output = [x2 L];
save batch.dat output -ascii
Program terkait 1
function dLdx2 = F712(x2,L)
% Program ini berisi fungsi untuk menghitung PD ordiner
% dL L
% ----- = ---------------
% dx2 x2 ( k2 - 1 )
% Nama File : F712.m
% Surakarta, Oktober 2005
% --------------------------------------------------------------
global A B C P x2
Program terkait 2
function f = F712F(T)
% Program ini berisi fungsi untuk menentukan T
% ( B )
% Pi = 10^(A - -------)
% ( T + C )
% Pi
% ki = ----
% P
% k1*x1 + k2*x2 = 1
% Nama File : F712F.m
% Surakarta, Oktober 2005
% --------------------------------------------------------------
global A B C P x2
x1 = 1-x2;
P_i = 10.^(A-B./(T+C));
k = P_i/P;
f = 1-k(1)*x1-k(2)*x2;
Keluaran program
204
Mol cairan
Contoh 7.13
Selesaikan persoalan nilai batas 2 titik dengan shooting method
d2y
+ 3xy + 7 y = cos(2 x )
dt 2
dengan y(0) = 1 dan y(π) = 0
Penyelesaian
Persamaan di atas disubstitusi menjadi
z1’ = z2
z2’ = -3xz2 – 7z1 + cos(2x)
207
Program matlab
% Demonstrasi penyelesaian Persamaan Differensial Ordiner
% Masalah Nilai Batas
% Program ini bertujuan menyelesaikan
% y'' + 3xy' + 7y = cos(2x)
% y(0) = 1 and y(pi) = 0
% Penyelesaian dengan Metode Shooting
% File prepared by J. R. White, UMass-Lowell (Aug. 2003)
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
%
Program terkait
function zp = odefile(x,z)
% Persamaan Differensial Ordiner
% y'' + 3xy' + 7y = cos(2x)
% Nama File : F713.m
% Surakarta, Oktober 2005
% File prepared by J. R. White, UMass-Lowell (March 2003)
% ---------------------------------------------------------------
zp = zeros(length(z),1);
zp(1) = z(2);
zp(2) = -3*x*z(2) - 7*z(1) + cos(2*x);
Keluaran program
208
clear all
Keluaran program
Contoh 7.14
Selesaikan persoalan nilai batas 2 titik dengan finite difference method
d2y
+ 3xy + 7 y = cos(2 x )
dt 2
dengan y(0) = 1 dan y(π) = 0
Penyelesaian
x → xi dan xi+1 = xi + ∆x
y(x) → y(xi) = yi y’(x) → y’(xi) = y’i
xf − xo
h = ∆x =
N +1
y i −1 − 2 y i + y i +1
yi” =
∆x 2
yi’ = yi +1 − yi −1
2∆x
Substitusi pada persamaan differensial awal
d2y
+ 3xy + 7 y = cos(2 x )
dt 2
⎛ y i −1 − 2 y i + y i +1 ⎞ ⎛ y − y i −1 ⎞ + 7y = cos(2x )
⎜⎜ ⎟⎟ +3xi ⎜⎜ i +1 ⎟⎟ i i
⎝ ∆x 2
⎠ ⎝ 2∆x ⎠
211
⎛ 3x i ∆x ⎞ 2 ⎛ 3x ∆x ⎞ 2
⎜1 − ⎟ yi-1 + (-2 + 7∆x )yi + ⎜⎜1 + i ⎟⎟ yi+1 = ∆x cos(2xi)
⎝ 2 ⎠ ⎝ 2 ⎠
selanjutnya
3x i ∆x
A(i,i-1) = 1 −
2
A(i,i) = -2 + 7∆x2
A(i,i+1) = 1 + 3x i ∆x
2
2
b(i) = ∆x cos(2xi)
untuk i = 1, yi-1 = yo = yxo
⎛ 3x ∆x ⎞ ⎛ 3x 1 ∆x ⎞ yxo
(-2 + 7∆x2)y1 + ⎜1 + i ⎟ y2 = ∆x2cos(2x1) – ⎜⎜1 − ⎟
⎝ 2 ⎠ ⎝ 2 ⎟⎠
Kasus B
y i +1 − y i
Pendekatan y’ =
∆x
d2y
+ 3xy + 7 y = cos(2 x )
dt 2
⎛ y i −1 − 2 y i + y i +1 ⎞ yi +1 − yi + 7y = cos(2x )
⎜⎜ 2 ⎟⎟ +3xi ∆x i i
⎝ ∆x ⎠
% Kondisi batas
xo = 0;
xf = pi;
yxo = 1;
yxf = 0;
% Metode 1 : central
a = zeros(N,N); b = zeros(N,1);
% titik awal
a(1,1) = -2+7*dx2;
a(1,2) = 1+3*x(1)*dx/2;
b(1) = dx2*cos(2*x(1))-(1-3*x(1)*dx/2)*yxo;
% titik ke 2 sampai ke N-1
for i = 2:N-1
a(i,i-1) = 1-3*x(i)*dx/2;
a(i,i) = -2+7*dx2;
a(i,i+1) = 1+3*x(i)*dx/2;
b(i) = dx2*cos(2*x(i));
end
% titik ke N
a(N,N-1) = 1-3*x(N)*dx/2;
a(N,N) = -2+7*dx2;
b(N) = dx2*cos(2*x(N))-(1-3*x(N)*dx/2)*yxf;
% penyelesaian persamaan aljabar simultan
y = a\b;
za = [yxo y' yxf];
xa = [xo x xf];
% Metode 2 : forward
a = zeros(N,N); b = zeros(N,1);
% titik awal
a(1,1) = -(2+3*x(i)*dx-7*dx2);
a(1,2) = 1+3*x(i)*dx/2;
b(1) = dx2*cos(2*x(1))-yxo;
% titik ke 2 sampai ke N-1
for i = 2:N-1
a(i,i-1) = 1;
a(i,i) = -(2+3*x(i)*dx-7*dx2);
a(i,i+1) = 1+3*x(i)*dx;
b(i) = dx2*cos(2*x(i));
end
% titik ke N
a(N,N-1) = 1;
a(N,N) = -(2+3*x(N)*dx+7*dx2);
b(N) = dx2*cos(2*x(N))-(1-3*x(N)*dx)*yxf;
% penyelesaian persamaan aljabar simultan
y = a\b;
213
zb = [yxo y' yxf];
xb = [xo x xf];
% plot hasil
t = '220+n';
subplot(eval(t)),plot(xa,za,xb,zb,'LineWidth',2)
axis([0 3.2 -2 1]);
title(['Metode Finite Difference (',num2str(N),' titik)'])
legend('Metode Central','Metode Forward')
end
Keluaran hasil
qr qr+ r
qc = 0
dT dT
k 2πrδ − k 2πrδ
dr dr
r + ∆r r – 2π[2r+∆r]h(T - T∞) = 0
∆r
limit ∆r → 0
d ⎡ dT ⎤
⎢ k 2πrδ ⎥ – 4πrh(T – T∞) = 0
dr ⎣ dr ⎦
2
d T dT
r2 dr 2 + r – 2h r2(T – T∞) = 0
dr kδ
dT
T(rw) = Tw dan =0
dr rs
du du dr rs dT
= =
dx dr dx Tw − T∞ dr
d 2 u d ⎛ du ⎞ dr rs2 d 2T
= ⎜ ⎟ =
dx 2 dr ⎝ dx ⎠ dx Tw − T∞ dr 2
⎛ Tw − T∞ ⎞ d2u ⎛ Tw − T∞ ⎞ du 2h
2⎜
(rsx) ⎜ ⎟⎟ ⎜ ⎟ 2
⎝ rs
2
⎠ dx 2 + (rsx) ⎜⎝ rs ⎟⎠ dx – kδ (rsx) (T – T∞)u = 0
2d2u du 2hrs2
x +x – α2x2u = 0 2
dengan α =
dx 2
dx kδ
x2 u” + x u’ – α2x2u = 0
Kondisi batas
215
rw
x= =a u(a) = 1
rs
rs
x= =b=1 u’(b) = 0
rs
rw = 1 in rs = 1,5 in δ = 0,0625 in
O O
Tw = 200 F T∞ = 70 F
h = 20 BTU/jam.ft2.oF h = 75 BTU/jam.ft.oF
Tentukan distribusi panas, total hilang panas fin, dan hitung effisiensi, η, yaitu
transfer panas aktual
η=
transfer panas jika fin masuk pada Tw
Penyelesaian
x2 u” + x u’ – α2x2u = 0
Kondisi batas
rw
x= =a u(a) = 1
rs
rs
x= =b=1 u’(b) = 0
rs
Shooting Method
z1’ = z2
1
z2’ = – z2 + α2z1
x
kondisi awal yang diberikan
⎡1⎤
z(a) = ⎡ u (a ) ⎤ = ⎢ ⎥
⎢ u ' (a ) ⎥ α
⎣ ⎦ ⎣ ⎦
216
Program penyelesaian
% Transfer Panas dalam Circular Fin
% Program ini bertujuan menyelesaikan
% x2 u" + x u' - a2x2u = 0
% z1' = z2
% z2' = - (1/x) z2 + a2z1
% u(a) = 1 u'(b) = 0
% Penyelesaian dengan Metode Shooting
% File prepared by J. R. White, UMass-Lowell (Aug. 2003)
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
%
clear all
clc
global alpha
a = rw/rs;
b = rs/rs;
alf2 = (2*h*rs*rs)/(k*thk);
alpha = sqrt(alf2);
Qideal = 2*pi*h*(rs*rs-rw*rw)*(Tw-Tinf);
fid = fopen('cylfinsh.out','w');
fprintf(fid,'\n Data dan Hasil Perhitungan \n');
fprintf(fid,'\n \n Data \n');
fprintf(fid,'Jari-jari inside, rw = %6.2f ft \n',rw);
fprintf(fid,'Jari-jari outside, rs = %6.2f ft \n',rs);
fprintf(fid,'Tebal fin, thk = %6.2f ft \n',thk);
fprintf(fid,'Temperatur inside, Tw = %6.2f F \n',Tw);
fprintf(fid,'Temperatur ambient, Tinf = %6.2f F \n',Tinf);
fprintf(fid,'Koef. transfer panas, h = %6.2f BTU/jamft^2F \n',h);
fprintf(fid,'Konduktivitas termal, k = %6.2f BTU/jamftF \n',k);
zbc = [1 0 1.0
0 1 0.0];
[x,z] = bvp2sh('F715',[a b],zbc);
[nr,nc] = size(z);
Qactual = -k*(2*pi*a*thk)*(Tw-Tinf)*z(1,2);
Ttip = Tinf+(Tw-Tinf)*z(nr,1);
fineff = Qactual/Qideal;
fprintf(fid,'\n \n-------------------------------\n');
fprintf(fid, 'Temperatur dinding (F) = %8.3f \n',Tw);
fprintf(fid, 'Temperatur ambient (F) = %8.3f \n',Tinf);
fprintf(fid, 'Temperatur tip (F) = %8.3f \n',Ttip);
fprintf(fid, 'Q ideal (BTU/jam) = %8.3f \n',Qideal);
fprintf(fid, 'Q actual (BTU/jam) = %8.3f \n',Qactual);
fprintf(fid, 'Eff fin = %8.3f \n',fineff);
subplot(2,1,1)
plot(x,z(:,1),'k','LineWidth',2)
title('Profil Temperatur pd Fin Lingkaran dg Metode Shooting')
grid, ylabel('Temperatur')
217
subplot(2,1,2)
plot(x,z(:,2),'k','LineWidth',2)
title('Gradien Temperatur pd Fin Lingkaran dg Metode Shooting')
grid, xlabel('jarak'), ylabel('grandien temperatur')
fclose(fid)
Program terkait
function zp = odefile(x,z)
% Persamaan Differensial Ordiner
% x2 u" + x u' - a2x2u = 0
% Nama File : F715.m
% Surakarta, Oktober 2005
% File prepared by J. R. White, UMass-Lowell (March 2003)
% ---------------------------------------------------------------
global alpha
zp = zeros(length(z),1);
zp(1) = z(2);
zp(2) = -z(2)/x+alpha*alpha*z(1);
Keluaran program
Temperatur
Gradien temperatur
⎛ u i −1 − 2u i + u i +1 ⎞ + x ⎛ u i +1 − u i −1 ⎞ – α2x 2u = 0
xi2 ⎜ ⎟ i⎜ ⎟ i i
⎝ ∆x 2 ⎠ ⎝ 2 ∆x ⎠
2hrs2
dengan α2 =
kδ
⎛ ∆x ⎞ ⎛ ∆x ⎞ u = 0
⎜⎜1 − ⎟⎟ ui-1 – (2 + α2∆x2)ui + ⎜⎜1 + ⎟⎟ i+1
⎝ 2x i ⎠ ⎝ 2x i ⎠
∆x
A(i,i-1) = 1 −
2x i
A(i,i) = – (2 + α2∆x2)
∆x
A(i,i+1) = 1 +
2x i
b(i) = 0
untuk i = 1, u0 = u(a) = 1
⎛ ∆x ⎞ ⎛ ∆x ⎞
– (2 + α2∆x2)u1 + ⎜⎜1 + ⎟⎟ u2 = – ⎜⎜1 − ⎟⎟ u0
⎝ 2x 1 ⎠ ⎝ 2x 1 ⎠
untuk ujung yang terisolasi
qxN-1/2 – qxN – qc = 0 qxN = 0
dT
- kAr – hAc(TN - T∞) = 0
dr r = rs − ∆r / 2
219
∆r
Ar = 2π(rs - )δ
2
⎡ ⎛ ∆r ⎞
2
⎤ ⎡ ∆r 2 ⎤
Ac =2π ⎢ rs − ⎜ rs −
2
⎟ ⎥ = 2π ⎢sr ∆ r − ⎥
⎢⎣ ⎝ 2 ⎠ ⎥⎦ ⎣ 4 ⎦
dT h∆r
= − f N (TN − T∞ )
dr r = rs − ∆r / 2
kδ
(rs − ∆r / 4)
dengan fN =
(rs − ∆r / 2)
du rs dT
= − 2hrs ⎛⎜ 1 ⎞⎟⎛⎜ ∆r ⎞⎟f (TN − T∞ )
2
=
dx Tw − T∞ dr kδ ⎝ 2 ⎠⎜⎝ rs ⎟⎠ (Tw − T∞ )
N
xN − ∆x / 2 rs − ∆r / 2
du ⎛ ∆x ⎞
= – α2 ⎜ 2 ⎟ fNuN
dx xN − ∆x / 2
⎝ ⎠
∆x
untuk evaluasi pada x = xN –
2
du u N − u N −1
atau =
dx xN − ∆x / 2 ∆x
⎛ ∆x 2 ⎞
− ⎜⎜1 + α 2 f N ⎟⎟ uN + uN-1 = 0
⎝ 2 ⎠
Program Matlab
% Transfer Panas dalam Circular Fin
% Program ini bertujuan menyelesaikan
% x2 u" + x u' - a2x2u = 0
% z1' = z2
% z2' = - (1/x) z2 + a2z1
% u(a) = 1 u'(b) = 0
% Penyelesaian dengan Metode Finite Difference
% File prepared by J. R. White, UMass-Lowell (Aug. 2003)
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
%
clear all
clc
a = rw/rs;
b = rs/rs;
alf2 = (2*h*rs*rs)/(k*thk);
alpha = sqrt(alf2);
Qideal = 2*pi*h*(rs*rs-rw*rw)*(Tw-Tinf);
fid = fopen('cylfinfd.out','w');
fprintf(fid,'\n Data dan Hasil Perhitungan \n');
fprintf(fid,'\n \n Data \n');
fprintf(fid,'Jari-jari inside, rw = %6.2f ft \n',rw);
fprintf(fid,'Jari-jari outside, rs = %6.2f ft \n',rs);
fprintf(fid,'Tebal fin, thk = %6.2f ft \n',thk);
fprintf(fid,'Temperatur inside, Tw = %6.2f F \n',Tw);
fprintf(fid,'Temperatur ambient, Tinf = %6.2f F \n',Tinf);
fprintf(fid,'Koef. transfer panas, h = %6.2f BTU/jamft^2F \n',h);
fprintf(fid,'Konduktivitas termal, k = %6.2f BTU/jamftF \n',k);
u0 = 1;
N = input('Enter nilai N yg diinginkan (tekan 0 untuk keluar) = ');
while N ~= 0
clear A B u x xx zz zzp
A = zeros(N,N);
B = zeros(N,1);
dx = (b-a)/N;
dx2 = dx*dx;
x = linspace(a+dx,b,N);
fn = (b-dx/4)/(b-dx/2);
for n = 2:N-1
A(n,n-1) = 1-dx/(2*x(n));
A(n,n) = -(2+alf2*dx2);
A(n,n+1) = 1+dx/(2*x(n));
B(n) = 0;
end
A(1,1) = -(2+alf2*dx2);
A(1,2) = 1+dx/(2*x(1));
B(1) = -(1-dx/(2*x(1)))*u0;
A(N,N-1) = 1;
A(N,N) = -(1+alf2*dx2*fn/2);
B(N) = 0;
u = A\B;
xx = [a x];
zz = [u0 u'];
zzp(1) = (zz(2)-zz(1))/dx;
zzp(N+1) =0;
for n=2:N
zzp(n) = (zz(n+1)-zz(n-1))/(2*dx);
end
Qactual1 = -k*(2*pi*a*thk)*(Tw-Tinf)*zzp(1);
dr=dx*rs;
Qactual2 = h*2*pi*((rw+dr/2)^2-rw^2)*(Tw-Tinf)*zz(1) + ...
h*2*pi*(rs^2-(rs-dr/2)^2)*(Tw-Tinf)*zz(N+1);
for n = 2:N
r2 = (xx(n)+dx/2)*rs;
r1 = (xx(n)-dx/2)*rs;
area = 2*pi*(r2^2-r1^2);
Qactual2=Qactual2+h*area*(Tw-Tinf)*zz(n);
221
end
Ttip = Tinf+(Tw-Tinf)*zz(N+1);
fineff = Qactual2/Qideal;
fprintf(fid,'\n \n-------------------------------\n');
fprintf(fid, 'Temperatur dinding (F) = %8.3f \n',Tw);
fprintf(fid, 'Temperatur ambient (F) = %8.3f \n',Tinf);
fprintf(fid, 'Temperatur tip (F) = %8.3f \n',Ttip);
fprintf(fid, 'Q ideal (BTU/jam) = %8.3f \n',Qideal);
fprintf(fid, 'Q actual (BTU/jam) = %8.3f (konduksi)\n',
Qactual1);
fprintf(fid, 'Q actual (BTU/jam) = %8.3f (konveksi)\n',
Qactual2);
fprintf(fid, 'Eff fin = %8.3f \n',fineff);
subplot(2,1,1)
plot(xx,zz,'LineWidth',2)
title(['Profil Temperatur pd Fin Lingkaran dg Metode FD . . .
untuk N = ', num2str(N)])
grid, ylabel('Temperatur')
subplot(2,1,2)
plot(xx,zzp,'LineWidth',2)
title(['Gradien Temperatur pd Fin Lingkaran dg Metode FD . . .
untuk N = ', num2str(N)])
grid, xlabel('jarak'), ylabel('grandien temperatur')
fclose(fid)
Temperatur
Gradien temperatur
- Persamaan Poisson
∂ 2u ∂ 2u ⎛ ∂u ∂u ⎞
A +C + D⎜⎜ x, y, u, , ⎟⎟ = 0 … (8.3)
∂x 2
∂y 2 ⎝ ∂x ∂y ⎠
∂ 2u ∂ 2u
+ =0 … (8.4)
∂x 2 ∂y 2
Penyelesaian persamaan Laplace adalah metode beda hingga.
∂ 2u ∂ 2u 1
+ = [ ui+1,j + ui-1,j + ui,j+1 + ui,j-1 – 4ui,j] = 0 … (8.6)
∂x 2
∂y 2
h2
clear;
N=30;
for j=0:N-2
for i=1:N-2
X(i+j*(N-1))=0;
end
end
for i=1:N-1
X(i*(N-1))=-100*sin(i*pi/N);
end
% Penyusunan matriks A
for i=1:(N-1)*(N-1)
A(i,i)=-4;
end
for i=1:N-2
for k=0:N-2
A(i+k*(N-1),i+1+k*(N-1))=1;
end
end
for k=0:N-3
for i=1:N-1
A(i+k*(N-1),i+(k+1)*(N-1))=1;
end
end
for i=1:(N-1)*(N-1)
for j=1:i
A(i,j)=A(j,i);
end
end
[i,j]=meshgrid(1:1:N-1,1:1:N-1);
[c,h]=contourf(i,j,x);
Penyelesaian
∂ 2u ∂ 2u
+ =0
∂x 2
∂y 2
dengan u(x,0) = 0,
u(x,10) = 0,
u(0,y) = 0,
231
u(20,y) = 100.
Program Matlab
% Profil Temperatur pada Plat Rektanguler
% Persamaan Laplace
% d^2 U d^2 U
% ----- + ----- = 0
% d x^2 d y^2
% Plat ukuran 10cm x 20cm
% Temperatur salah satu sisi = 100
% sedang ketiga sisi yang lain = 0
% Penyelesaian dengan Metode Finite Difference
%
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
%
clear;
N=20;
M=10;
for j=0:N-2
for i=1:M-2
X(i+j*(M-1))=0;
end
end
for i=1:M-1
X(i*(N-1))=-100;
end
% Penyusunan matriks A
for i=1:(N-1)*(M-1)
A(i,i)=-4;
end
for i=1:N-2
for k=0:M-2
A(i+k*(N-1),i+1+k*(N-1))=1;
end
end
for k=0:M-3
for i=1:N-1
A(i+k*(N-1),i+(k+1)*(N-1))=1;
end
end
for i=1:(N-1)*(M-1)
for j=1:i
A(i,j)=A(j,i);
end
end
Keluaran program
nmax=(nx-1)*(ny-1); r=hy/hx;
a=zeros(ny+1,nx+1); p=zeros(ny+1,nx+1);
if nargin==6
ncase=0;mode=F;
end
if nargin==10
233
test=0;
if F==zeros(ny+1,nx+1), test=1; end
if bx0==zeros(1,ny+1), test=test+1; end
if bxn==zeros(1,ny+1), test=test+1; end
if by0==zeros(1,nx+1), test=test+1; end
if byn==zeros(1,nx+1), test=test+1; end
if test==5
disp(' WARNING ')
disp(' ')
break
end
bx0=bx0(1,ny+1:-1:1); bxn=bxn(1,ny+1:-1:1);
a(1,:)=byn; a(ny+1,:)=by0;
a(:,1)=bx0'; a(:,nx+1)=bxn';ncase=1;
end
for i=2:ny
for j=2:nx
nn=(i-2)*(nx-1)+(j-1);
q(nn,1)=i; q(nn,2)=j; p(i,j)=nn;
end
end
C=zeros(nmax,nmax); e=zeros(nmax,1); om=zeros(nmax,1);
if ncase==1, g=zeros(nmax,1); end
for i=2:ny
for j=2:nx
nn=p(i,j); C(nn,nn)=-(2+2*r^2); e(nn)=hy^2*G(i,j);
if ncase==1, g(nn)=g(nn)+hy^2*F(i,j); end
if p(i+1,j)~=0
np=p(i+1,j); C(nn,np)=1;
else
if ncase==1, g(nn)=g(nn)-by0(j); end
end
if p(i-1,j)~=0
np=p(i-1,j); C(nn,np)=1;
else
if ncase==1, g(nn)=g(nn)-byn(j); end
end
if p(i,j+1)~=0
np=p(i,j+1); C(nn,np)=r^2;
else
if ncase==1, g(nn)=g(nn)-r^2*bxn(i); end
end
if p(i, j-1)~=0
np=p(i,j-1); C(nn,np)=r^2;
else
if ncase==1, g(nn)=g(nn)-r^2*bx0(i); end
end
end
end
if ncase==1
C=C+diag(e); z=C\g;
for nn=1:nmax
i=q(nn,1); j=q(nn,2); a(i,j)=z(nn);
end
else
[u,lam]=eig(C,-diag(e));
[om,k]=sort(diag(lam)); u=u(:,k);
for nn=1:nmax
i=q(nn,1); j=q(nn,2);
a(i,j)=u(nn,mode);
end
end
clear all
% Jumlah titik arah x, y
nx=6; ny=6;
Keluaran program
235
∂ 2u ∂ 2u ⎛ ∂u ∂u ⎞
A +C = F⎜⎜ x, y, u , , ⎟⎟
∂x 2
∂y2
⎝ ∂x ∂y ⎠
% Plot hasil
surfl(a)
axis([1 7 1 7 0 0.1])
xlabel('titik-titik arah x');
ylabel('titik-titik arah y ');
zlabel('tebal');
Keluaran program
∂ 2u cρ ∂u
= … (8.7)
∂x 2 k ∂t
u ij+1 =
k∆t
(u j
) ⎛
+ u ij−1 + ⎜1 −
2k∆t
⎜ cρ(∆x )2
⎞ j
⎟u
⎟ i
… (8.10)
cρ(∆x ) 2 i +1
⎝ ⎠
u ij+1 =
2
(
1 j
u i +1 + u ij−1 ) … (8.11)
Contoh 8.5
Selesaikan persamaan 8.10. untuk M = 4. Ditentukan uin = 0,5, uA = 1,0, uB =
0,2, L = 1, N = 10.
Program Matlab
% Persamaan Differensial Parsial
% Persamaan Parabolik
% d^2 u d u
% ------- = -----
% d x^2 d t
% Penyelesaian dengan Finite Difference
% Metode Eksplisit
%
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
%
clc
clear all
238
uin = 0.5; % nilai u untuk seluruh x pada t = 0
uA =1; % nilai u untuk x = 0 (bagian atas) pada t > 0
uB = 0.2; % nilai u untuk x = 1 (bagian bawah) pada t > 0
% Modulus
AM = 4;
%Kondisi awal
for i=1:N+1
x(i)= (i-1)*delx;
u(i,1)= uin;
end
for j=1:Jend
for i=2:N
u(1,j+1)=uA;
u(N+1,j+1)=uB;
u(i,j+1)=(u(i-1,j)+(AM-2)*u(i,j)+u(i+1,j))/AM;
end
end
Keluaran program
>> kondisi awal t = 0
x =
0
0.0400
0.0800
0.1200
0.1600
0.2000
0.2400
0.2800
0.3200
0.3600
0.4000
0.4400
0.4800
0.5200
0.5600
0.6000
239
0.6400
0.6800
0.7200
0.7600
0.8000
0.8400
0.8800
0.9200
0.9600
1.0000
u0 =
0.5000
0.5000
0.5000
0.5000
0.5000
0.5000
0.5000
0.5000
0.5000
0.5000
0.5000
0.5000
0.5000
0.5000
0.5000
0.5000
0.5000
0.5000
0.5000
0.5000
0.5000
0.5000
0.5000
0.5000
0.5000
0.5000
kondisi t >= 0
x =
0
0.0400
0.0800
0.1200
0.1600
0.2000
0.2400
0.2800
0.3200
0.3600
0.4000
0.4400
0.4800
0.5200
0.5600
0.6000
0.6400
0.6800
0.7200
0.7600
0.8000
0.8400
0.8800
0.9200
0.9600
1.0000
240
t =
0.0080 0.0160 0.0240 0.0320 0.0400
un =
1.0000 1.0000 1.0000 1.0000 1.0000
0.8714 0.9099 0.9267 0.9366 0.9432
0.7557 0.8244 0.8558 0.8748 0.8876
0.6620 0.7472 0.7896 0.8160 0.8341
0.5939 0.6810 0.7298 0.7614 0.7836
0.5494 0.6272 0.6776 0.7121 0.7369
0.5235 0.5855 0.6335 0.6684 0.6943
0.5100 0.5550 0.5974 0.6307 0.6562
0.5038 0.5337 0.5689 0.5988 0.6226
0.5013 0.5197 0.5470 0.5722 0.5931
0.5004 0.5109 0.5304 0.5502 0.5673
0.5001 0.5055 0.5179 0.5319 0.5447
0.5000 0.5021 0.5083 0.5163 0.5244
0.5000 0.4996 0.5001 0.5023 0.5057
0.4999 0.4971 0.4922 0.4889 0.4879
0.4998 0.4937 0.4835 0.4751 0.4700
0.4992 0.4882 0.4728 0.4600 0.4513
0.4977 0.4798 0.4592 0.4428 0.4313
0.4940 0.4670 0.4418 0.4228 0.4095
0.4859 0.4487 0.4200 0.3997 0.3855
0.4703 0.4237 0.3935 0.3732 0.3592
0.4437 0.3914 0.3621 0.3434 0.3307
0.4028 0.3517 0.3262 0.3105 0.3001
0.3466 0.3054 0.2865 0.2752 0.2677
0.2772 0.2540 0.2440 0.2381 0.2342
0.2000 0.2000 0.2000 0.2000 0.2000
Penyelesaian
k∆t 1 1 , ∆x = 0,25 sehingga ∆t = 0,206 detik
= =
cρ(∆x ) 2 2 M
Program Matlab
% Persamaan Differensial Parsial
% Persamaan Parabolik
% d^2 u c*rho d u
% ------- = ----- -----
% d x^2 k d t
% Plat tebal 2 cm
% Kondisi awal
% u(x,0) = 100x utk 0 <= x <= 1
% u(x,0) = 100(2-x) utk 1 <= x <= 2
% Kondisi batas
% u(0,t) = 0
% u(2,t) = 0
% Penyelesaian dengan Finite Difference
% Metode Eksplisit
%
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
%
format short
clc
clear all
% Data-data
L=2; % tebal plat, cm
k=0.13; % konduktivitas panas, kal/det.cm.oC
c=0.11; % kapasitas panas, kal/g.oC
rho=7.8; % densitas, g/cm^3
% Interval
N=8;
M=0.5; % modulus
delx=L/N;
242
delt=M*c*rho*delx^2/k;
xo=0;
Jend=10;
for i=1:N+1
x(i)=xo+delx*(i-1);
end
% Kondisi awal
for i=1:ceil((N+1)/2)
u(1,i)=100*x(i);
end
for i=N+1:-1:ceil((N+1)/2)
u(1,i)=100*(2-x(i));
end
for i=1:Jend
t(i)=delt*i;
end
for j=1:Jend
for i=2:ceil((N+1)/2)+1
u(j+1,i)=(k*delt/(c*rho*delx^2))*(u(j,i-1)+u(j,i+1))+...
(1-2*k*delt/(c*rho*delx^2))*u(j,i);
end
for i=N+1:-1:ceil((N+1)/2)+1
u(j+1,i)=u(j+1,ceil((N+1)/2)*2-i);
end
end
x
t=t'
u
Keluaran program
x =
0 0.2500 0.5000 0.7500 1.0000 1.2500 1.5000 1.7500 2.0000
t =
0.2062
0.4125
0.6187
0.8250
1.0313
1.2375
1.4437
1.6500
1.8563
2.0625
u =
0 25.0000 50.0000 75.0000 100.000 75.0000 50.0000 25.0000 0
0 25.0000 50.0000 75.0000 75.0000 75.0000 50.0000 25.0000 0
0 25.0000 50.0000 62.5000 75.0000 62.5000 50.0000 25.0000 0
0 25.0000 43.7500 62.5000 62.5000 62.5000 43.7500 25.0000 0
0 21.8750 43.7500 53.1250 62.5000 53.1250 43.7500 21.8750 0
0 21.8750 37.5000 53.1250 53.1250 53.1250 37.5000 21.8750 0
0 18.7500 37.5000 45.3125 53.1250 45.3125 37.5000 18.7500 0
0 18.7500 32.0313 45.3125 45.3125 45.3125 32.0313 18.7500 0
0 16.0156 32.0313 38.6719 45.3125 38.6719 32.0313 16.0156 0
0 16.0156 27.3438 38.6719 38.6719 38.6719 27.3438 16.0156 0
0 13.6719 27.3438 33.0078 38.6719 33.0078 27.3438 13.6719 0
20 cm
Tentukan distribusi konsentrasi alkohol pada tabung sampai minimal 100 detik.
Diketahui ϑ = 0,119 cm2 / detik. Ambil r = ϑ ∆t/(∆x)2 =1/2 dan ∆x = 4 cm.
Penyelesaian
∆t = 0.5(∆x)2/ϑ = 67,2 detik
Program Matlab
% Persamaan Differensial Parsial
% Persamaan Parabolik
% d^2 c d c
% D ------- = -----
% d x^2 d t
% Kondisi awal
% c(0,t) = 2
% Kondisi batas
% c(0,t) = 0 c(20,t) = 10
% Penyelesaian dengan Finite Difference
% Metode Eksplisit
%
% ---------------------------------------------------------------
% Surakarta, Oktober 2005
% Jurusan Teknik Kimia, Fak. Teknik
% Universitas Sebelas Maret
% ***************************************************************
%
244
format short
clc
clear all
% Data-data
L=20; % panjang tube, cm
D=0.119; % koefisien difusivitas, cm^2/detik
N=5;
M=0.5;
delx=L/N;
delt=M/D*delx^2;
xo=0;
Jend=16;
for i=1:N+1
x(i)=xo+delx*(i-1);
end
x
%Kondisi awal
u(1,1)=0.0;
for i=2:N
u(1,i)=2;
end
u(1,N+1)=10.0;
% interval waktu
for i=1:Jend+1
t(i) = delt*i-delt;
end
t=t'
for j=1:Jend
u(j+1,1)=0.0;
for i=2:N
u(j+1,i)=(delt*D/delx^2)*(u(j,i-1)+u(j,i+1))+...
(1-2*delt*D/delx^2)*u(j,i);
end
u(j+1,N+1)=10.0;
end
u
Keluaran program
x =
0 4 8 12 16 20
t =
1.0e+003 *
0
0.0672
0.1345
0.2017
0.2689
0.3361
0.4034
0.4706
0.5378
0.6050
0.6723
0.7395
0.8067
0.8739
0.9412
1.0084
1.0756
245
u =
0 2.0000 2.0000 2.0000 2.0000 10.0000
0 1.0000 2.0000 2.0000 6.0000 10.0000
0 1.0000 1.5000 4.0000 6.0000 10.0000
0 0.7500 2.5000 3.7500 7.0000 10.0000
0 1.2500 2.2500 4.7500 6.8750 10.0000
0 1.1250 3.0000 4.5625 7.3750 10.0000
0 1.5000 2.8438 5.1875 7.2813 10.0000
0 1.4219 3.3438 5.0625 7.5938 10.0000
0 1.6719 3.2422 5.4688 7.5313 10.0000
0 1.6211 3.5703 5.3867 7.7344 10.0000
0 1.7852 3.5039 5.6523 7.6934 10.0000
0 1.7520 3.7188 5.5986 7.8262 10.0000
0 1.8594 3.6753 5.7725 7.7993 10.0000
0 1.8376 3.8159 5.7373 7.8862 10.0000
0 1.9080 3.7875 5.8511 7.8687 10.0000
0 1.8937 3.8795 5.8281 7.9255 10.0000
0 1.9398 3.8609 5.9025 7.9140 10.0000
alpha=K*ht/hx^2;
A=zeros(nx-1,nx-1);u=zeros(nt+1,nx+1);
u(:,1)=lowb*ones(nt+1,1);
u(:,nx+1)=hib*ones(nt+1,1);
u(1,:)=init;
A(1,1)=1+2*alpha;
for i=2:nx-2
A(i,i)=1+2*alpha;
A(i,i-1)=-alpha;
A(i,i+1)=-alpha;
end
A(nx-1,nx-2)=-alpha;
A(nx-1,nx-1)=1+2*alpha;
b(1,1)=init(2)+init(1)*alpha;
for i=2:nx-2
b(i,1)=init(i+1);
end
b(nx-1,1)=init(nx)+init(nx+1)*alpha;
[L,U]=lu(A);
for j=2:nt+1
246
y=L\b;x=U\y;
u(j,2:nx)=x';b=x;
b(1,1)=b(1,1)+lowb*alpha;
b(nx-1,1)=b(nx-1,1)+hib*alpha;
end
Contoh 8.8. Distribusi Temperatur pada Dinding Batu Tahan Api sebagai
Fungsi Waktu
Dinding batu tahan api setebal 0,3 m mula-mula mempunyai temperatur seragam
100 OC. Temperatur kedua permukaan diturunkan secara tiba-tiba menjadi 20 OC
dan tetap dijaga pada temperatur ini. Tentukan distribusi temperatur pada
dinding pada interval 440 detik sampai 22000 detik. Untuk batu tahan api K =
5.10-7 m2/detik.
% Data-data
K=5e-7; % m^2/detik
hx=0.02; % ukuran interval x
nx=15; % jumlah interval x
ht=440; % detik, ukuran interval t
nt=50; % jumlah interval t
% Kondisi awal
init = 100*ones(1,nx+1);
% Kondisi batas
lowb=20; hib=20;
% Perhitungan
u=heat(nx,hx,nt,ht,init,lowb,hib,K);
% Plot Hasil
surfl(u)
axis([0 16 0 50 0 120])
view([-217 30])
xlabel('x'); ylabel('waktu');
zlabel('temperatur')
247
Keluaran Program
---, 2005, “MATLAB Central > File Exchange > Chemistry and Physics”,
www.mathworks.com/matlabcentral/fileexchange/load Category.do
Chapra, S.C. dan Canale, R.P., 1991, “Metode Numerik untuk Teknik”, Penerbit
UI Jakarta
Cutlip, M.B. dan Schacham, M., 2002, “Application of Mathematical Software
Packages in Chemical Engineering Education”, Workshop Presenters,
ASSE Chem. Eng. Division Summer School, University of Colorado,
Boulder
Davis, M.E., 1965, “Numerical Analysis for Chemical Engineering”, John Wiley
and Sons., New York
Fogler, H.S., 1999, “Elements of Chemical Reaction Engineering”, 3 ed.,
Prentice Hall International Ed. Englewood Cliffs, New Jersey.
Gerald, C.F. dan Wheatley, P.O., 1985, “Applied Numerical Analysis”, Adison-
Wesley Publising Company, Inc., USA
Hanna, O.T. dan Sandall, O.C., 1995, “Computational Methods in Chemical
Engineering”, Prentice Hall PTR, New Jersey
Hanselman, D. dan Littlefield, B., 2000, “Matlab Bahasa Komputasi Teknik”,
Penerbit Andi, Yoyakarta
Jenson, V.G. dan Jeffreys, G.V., 1977, “Mathematical Methods in Chemical
Engineering”, Academic Press, Inc., London
Levenspiel, O., 1999, “Chemical Reaction Engineering”, 3 ed., John Wiley and
Sons, New York
Mickley, H.S., Sherwood, T.S., dan Reed, C.E., 1975, ”Applied Mathematical in
Chemical Engineering”, Tata Mc. Graw Hill Pub. Ca., New York
Palm, W.J., 1999, “Matlab for Engineering Applications”, Mc.Graw-Hill, New
York
252
Penny, J. dan Lindfield, G., 2000, “Numerical Methods using Matlab”, Prentice
Hall, Inc., New Jersey
Pike, R.W., 1986, “Optimization for Engineering System”, Van Nostrand
Reinhold Company Inc., New York
Rudd, D.F. dan Watson, C.C., 1968, “Strategy of Process Engineering”, John
Wiley & Sons, Inc., New York
Sediawan, W.B. dan Prasetya, A., 1977, “Pemodelan Matematis dan
Penyelesaian Numeris dalam Teknik Kimia”, Penerbit Andi Yogyakarta
Smith, J.M., 1981, “Chemical Engineering Kinetics”, 3rded., Mc. Graw Hill Inc.,
Tokyo
Wang, N. S., 2002, “Computer Methods in Chemical Engineering”, Chemical
Engineering Dept., University of Maryland, www.glue.umd.edu/
White, J.R., 2005, “Mathematical Methods for Engineering”, Chemical &
Nuclear Engineering Dept., University of Massachussetts Lowell,
www.profjrwhite.com/math_methods.htm.
White, J.R., 2005, “Problem Solving with Matlab”, Chemical & Nuclear
Engineering Dept., University of Massachussetts Lowell,
www.profjrwhite.com/matlab_course.htm.