Adrian Nur Y.C. Danarto Bregas Siswahjono T.S. Paryanto
Jurusan Teknik Kimia – Fakultas Teknik Universitas Sebelas Maret Surakarta
LEMBAR PENGESAHAN 1. Judul buku ajar
: Penyelesaian Numeris dalam Teknik Kimia dengan Matlab
2. Tim Penyusun
: Adrian Nur, S.T., M.T. Y.C. Danarto, S.T., M.T. Bregas Siswahjono T.S., S.T., M.T. Ir. Paryanto, M.S.
3. Waktu penulisan
: 4 ( empat ) bulan.
4. Biaya
: Rp. 5.000.000,- ( lima juta rupiah ).
Surakarta, 15 November 2005 Mengetahui, Ketua Pelaksana Kegiatan SP4 Jurusan Teknik Kimia UNS
Ketua Tim Penyusun
Fadilah, ST., MT. NIP 132 258 062
Adrian Nur, ST., MT. NIP 132 282 191
Mengetahui/Menyetujui, Pembantu Rektor I UNS
Dekan Fakultas Teknik UNS
Dr. Ravik Karsidi, MS NIP 130 906 766
Ir. Sumaryoto, MT. NIP 131 471 452
Adrian Nur Y.C. Danarto Bregas Siswahjono T.S. Paryanto
Jurusan Teknik Kimia – Fakultas Teknik Universitas Sebelas Maret Surakarta
Penyelesaian Numeris dalam
Teknik Kimia dengan Matlab Oleh :
Adrian Nur Y.C.. Danarto Bregas Siswahjono T.S. Paryanto
vi + 252 hlm. ; 15,5 x 23 cm 10 9 8 7 6 5 4 3 2 1
Hak Cipta @ 2005 pada penulis Dilarang memperbanyak sebagian atau seluruh isi buku ini dalam bentuk apapun, tanpa izin dari penulis
Edisi Pertama Edisi pertama, Cetakan pertama, November 2005
Jurusan Teknik Kimia – Fakultas Teknik Universitas Sebelas Maret Surakarta
KATA PENGANTAR
Penggunaan MATLAB dalam penyelesaian persoalan dalam teknik kimia bukanlah hal yang baru. Namun penggunaan MATLAB tersebut sangat terbatas dan tanpa memperhatikan pengetahuan numeris yang digunakan. Buku ini menyajikan penggunaan bahasa pemrograman MATLAB untuk penyelesaian persoalan-persoalan dalam teknik kimia secara numeris. Bab awal buku berisi pengantar pemrograman dengan menggunakan MATLAB. Babbab selanjutnya diikuti dengan penyelesaian secara numeris berurutan : persamaan aljabar linier, persamaan aljabar non linier, integral, pencocokan kurva, optimasi, persamaan differensial ordiner, dan persamaan differensial parsial. Setiap bab berisi tentang metode-metode numeris yang digunakan, fungsi-fungsi MATLAB, contoh-contoh problem teknik kimia, dan programprogram penyelesaiannya beserta keluaran program. Para mahasiswa sangat diharapkan menambah pengetahuan tentang pemanfaatan MATLAB dari berbagai buku dan internet yang diantaranya tercantum dalam daftar pustaka. Kerajinan dan ketekunan yang disertai do’a akan membawa keberhasilan. Terima kasih tak lupa ditujukan kepada istri dan anak-anak tercinta yang rela kehilangan waktu bersama suami/ayahnya selama penyusunan buku ini. Buku ini tidak dapat tersusun tanpa bantuan teman-teman sejawat yang memberikan kritik dan komentar berguna. Segala kritik dan saran untuk perbaikan buku ini masih sangat kami harapkan.
Tim Penulis
iv
DAFTAR ISI
Kata Pengantar Daftar Isi
I.
PENGANTAR PEMOGRAMAN MATLAB 1.1. 1.2. 1.3.
II.
III.
IV.
Fungsi Umum Matlab Tipe Data M-File
iii v 1 2 9 16
PERSAMAAN ALJABAR LINIER
23
2.1. 2.2. 2.3.
23 31 36
Metode Eliminasi Gauss Metode Inversi Matriks Metode Dekomposisi LU
PERSAMAAN ALJABAR NON LINIER
43
3.1. 3.2. 3.3.
43 48 52
Metode Bagidua (Bisection) Metode Newton-Raphson Fungsi fzero
INTEGRAL NUMERIS
75
4.1. 4.2. 4.3.
76 80 85
Aturan Trapesium Aturan Simpson Kuadratur Gauss
vi
V.
PENCOCOKAN KURVA 5.1.
5.2.
VI.
VII.
100 101 112 119 121 122 127 131
OPTIMASI
133
6.1. 6.2. 6.3.
133 136 146
Pemograman Linier Metode Golden Section Optimasi Multivariabel
PERSAMAAN DIFFERENSIAL ORDINER
169
7.1.
Masalah Harga Awal 7.1.1. Metode Euler 7.1.2. Metode Runge-Kutta 7.1.3. Metode Prediktor-Korektor 7.1.4. Fungsi ode Masalah Harga Batas 7.2.1. Metode Shooting 7.2.2. Metode Beda Hingga (finite difference)
170 170 173 174 176 206 207 212
PERSAMAAN DIFFERENSIAL PARSIAL
227
8.1.
228 228 236 237 237 247
7.2.
VIII.
Regresi Kuadrat Terkecil 5.1.1. Regresi Linier 5.1.2. Regresi Polinomial 5.1.3. Regresi Multivariabel Interpolasi 5.2.1. Interpolasi Satu Dimensi 5.2.2. Interpolasi Spline 5.2.3. Interpolasi Dua Dimensi
99
8.2.
Persamaan Differensial Eliptik 8.1.1. Persamaan Laplace 8.1.2. Persamaan Poisson Persamaan Differensial Parabolik 8.2.1. Metode Eksplisit 8.2.2. Metode Implisit
Daftar Pustaka
251
PENGANTAR
1
PEMROGRAMAN MATLAB
MATLAB (Matrix Laboratory) adalah sebuah program untuk analisis dan komputasi numerik, merupakan suatu bahasa pemrograman matematika tingkat lanjut yang dibuat dengan dasar pemikiran menggunakan sifat dan bentuk matriks. Pada awalnya, program ini merupakan interface untuk koleksi rutinrutin numerik proyek UNPACK dan EISPACK, yang dikembangkan menggunakan bahasa FORTRAN. Namun sekarang, program ini merupakan produk komersial perusahaan Mathworks, Inc. yang dalam perkembangan selanjutnya dikembangkan menggunakan bahasa C++ dan assembler (terutama untuk fungsi-fungsi dasar MATLAB). MATLAB telah berkembang menjadi sebuah lingkungan pemrograman yang canggih dan berisi fungsi-fungsi built-in untuk melakukan tugas pengolahan sinyal, aljabar linier, dan perhitungan matematis lainnya. MATLAB juga berisi toolbox yang di dalamnya terdapat fungsi-fungsi tambahan untuk aplikasi khusus. MATLAB bersifat extensible, dalam arti bahwa seorang pengguna dapat menulis fungsi baru untuk ditambahkan di library jika fungsifungsi built-in yang tersedia tidak dapat melakukan tugas tertentu yang diinginkan. Kemampuan pemrograman yang dibutuhkan tidak terIalu sulit bila
2 telah memiliki pengalaman dalam pemrograman bahasa lain seperti bahasa C, PASCAL, atau FORTRAN. MATLAB merupakan perangkat lunak (software) yang dikembangkan oleh Mathworks, Inc. (lihat http://www.mathworks.com) dan merupakan perangkat lunak yang paling efisien untuk perhitungan numerik berbasis matriks. Dengan demikian jika di dalam perhitungan kita dapat memformulasikan masalah ke dalam format matriks, maka MATLAB merupakan pilihan terbaik untuk penyelesaian numeriknya. Dalam penggunaannya MATLAB hanya bersaing dengan MATCAD atau MAPLE. Namun demikian sifatnya yang fleksibel menjadikannya lebih banyak digunakan oleh para praktisi maupun akademisi dari pada yang lain. MATLAB merupakan bahasa pemrograman tingkat tinggi berbasis matriks yang sering digunakan untuk teknik komputasi numerik dalam menyelesaikan masalah-masalah yang melibatkan operasi matematika elemen, matrik, optimasi, aproksimasi, dan lain-lain. Secara umum MATLAB banyak digunakan pada bidang-bidang :
Matematika dan Komputasi;
Pengembangan dan Algoritma;
Pernrograman modeling, sn-nulasi, dan pembuatan prototipe;
Analisa Data, eksplorasi, dan visualisasi;
Analisis numerik dan statistik;
Pengembangan aplikasi teknik.
1.1. FUNGSI UMUM MATLAB
JENIS-JENIS JENDELA (WINDOW) MATLAB Beberapa macam jendela (window) yang tersedia dalam MATLAB antara lain sebagai berikut : a. MATLAB Command Window/Editor
3 MATLAB Command Window/Editor merupakan jendela yang dibuka pertama kali setiap kali MATLAB dijalankan. Pada jendela ini dapat dilakukan akses-akses ke perintah-perintah MATLAB dengan mengetikkan ekspresi MATLAB, seperti mengakses help window, helpdesk, demo, dan lain-lainnya. Jika variabel-variabel dan perintah-perintah pada layar command window yang sedang aktif akan disimpan, maka dapat dilakukan dengan menggunakan perintah diary. Sebagai contoh, jika ingin menyimpan output » m = 1 4
2 5
3 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
Command Windows juga digunakan untuk memanggil tool MATLAB seperti editor, debugger, atau fungsi. Window ini dicirikan dengan adanya prompt (>>) yang menyatakan MATLAB siap menerima perintah. Perintah dapat berupa fungsi-fungsi pengaturan file (seperti perintah DOS/UNIX) maupun fungsi-fungsi bawaan (toolbox) MATLAB. Berikut ini beberapa fungsi pengaturan file dalam MATLAB: dir atau ls : cd
digunakan untuk mehhat isi dari sebuah direktori aktif.
: digunakan untuk melakukan perpindahan dari direktori aktif ke direktori lainnya.
pwd
: digunakan untuk melihat direktori yang sedang aktif.
4 mkdir
: digunakan untuk membuat sebuah direktori.
what
: digunakan untuk melihat nama m-file (yang akan dibahas kemudian) dalam direktori aktif.
who
: digunakan untuk mehhat variabel yang sedang aktif.
whos
: digunakan untuk menampilkan nama setiap variabel yang sedang aktif.
delete
: digunakan untuk menghapus file.
clear
: digunakan untuk menghapus variabel.
clc
: digunakan untuk membersihkan layar.
doc
: digunakan untuk melihat dokumentasi The MathWorks, Inc. dalam format html secara online.
demo
: digunakan untuk menampilkan demo yang disediakan oleh MATLAB.
b. MATLAB Editor/Debugger (Editor M-File/Pencarian. Kesalahan) Jendela ini merupakan tool yang disediakan oleh MATLAB versi. 5 ke atas yang berfungsi sebagai editor script MATLAB (M-File). Walaupun sebenarnya script ini dalam pernrograman MATLAB dapat saja menggunakan editor lain seperti Notepad, Wordpad, bahkan Word. Untuk mengakses window M-File ini dapat dilakukan dengan cara: 1. Memilih File kemudian pilih New, 2. Pilih M-File, maka MATLAB akan menampilkan editor window. Selain cara di atas, untuk menampilkan editor M-File ini dapat juga dilakukan dengan mengetik:
>> edit
c. Figure Windows (Jendela gambar) Window ini adalah hasil visualisasi script MATLAB. Namun MATLAB memberi kemudahan bagi pemrogram untuk mengedit window ini sekaligus memberikan program khusus untuk itu sehingga window ini selain berfungsi sebagai visualisasi output dapat juga sekaligus menjadi media input yang interaktif.
5 Coba anda ketikkan script berikut ini pada command window dan perhatikan hasilnya tergambar pada figure window. » x=0:2:360; » y=sin(x*pi/180); » plot(x,y)
d. MATLAB Help Window MATLAB menyediakan sistem help yang dapat diakses dengan perintah help. Misalnya, untuk mernperoleh informasi mengenai fungsi sin, coba anda ketikkan » help sin
dan kernudian menekan enter. Di layar akan muncul informasi dalam bentuk teks pada layar MATLAB yaitu: SIN
Sine. SIN(X) is the sine of the elements of X. Overloaded methods help sym/sin.m
Untuk mengetahui penggunaan perintah ‘plot’, cobalah ketikkan: » help plot
Selain help dalam bentuk seperti di atas, MATLAB juga menyediakan demonstrasi kemampuan MATLAB dengan mengetikkan » demo
Untuk memperoleh informasi tentang konsep-konsep dasar bahasa MATLAB, dapat dilakukan dengan perintah » intro
Bentuk help yang lain adalah Help Window yaitu dengan mengetikkan » helpwin
Informasi selengkapnya dapat diperoleh dengan mengklik dua kali salah satu baris yang ada di MATLAB Help Window atau dapat juga dengan mengetikkan informasi yang diinginkan pada kotak di sebelah kiri atas MATLAB Help Window. Help yang lain lagi adalah dalam bentuk Help Desk.
Anda bisa
mencoba sendiri menampilkan Help Desk dengan mengetikkan perintah » helpdesk
dan anda akan dapatkan berbagai kemudahan dalam memperoleh informasi yang diinginkan.
6
OPERATOR MATEMATIKA MATLAB dapat melakukan operasi-operasi aritmatika dasar berikut: No.
OPERASI
1
Pemangkatan
2
Perkalian; Pembagian
3
Penambahan; Pengurangan
SIMBOL ^ * ; / atau \ + ; -
Anda bisa membedakan tanda / dan \ dengan percobaan berikut: » 2/4 » 2\4
Urutan dalam tabel di atas juga menunjukkan urutan prioritas (hirarki) operasi yang dikerjakan dahulu dalam suatu ekspresi. Tanda kurung dapat digunakan untuk mengubah hirarki itu, yaitu bagian yang dikerjakan terlebih dahulu adalah bagian yang berada di bagian kurung paling dalam kemudian berturut-turut sampai yang paling luar.
KOMENTAR DAN TANDA BACA Semua teks sesudah tanda % dianggap sebagai statemen komentar. Pernyataan yang anda tuliskan setelah tanda % berguna untuk dokumentasi apa yang sudah dikerjakan. Tanda titik korna (;) dalam MATLAB berguna untuk mencegah menampilkan hasil, sedangkan tanpa tanda titik koma MATLAB akan menampilkan hasilnya segera setelah ditekan enter.
FUNGSI-FUNGSI MATEMATIKA DASAR MATLAB mempunyai berbagai fungsi matematika umum yang biasa digunakan dalam matematika. Sebagian besar fungsi tersebut hampir sama dengan yang biasa dituliskan. Untuk lebih jelasnya, anda bisa memperoleh informasi ini dengan mengetikkan:
7 » help elfun
MENYIMPAN DAN MEMANGGIL DATA Untuk menyimpan data gunakan menu File lalu pilih Save Workspace As. Untuk memanggil data gunakan pilihan Load WorkSpace As atau Open pada menu File. Sedangkan untuk import data, pada MATLAB versi 6 ke atas pilih Import Data. MATLAB juga menyediakan dua perintah - save dan load - yang jauh lebih fleksibel. Perintah save digunakan untuk menyimpan satu atau lebih variabel dalam file format sesuai dengan yang diinginkan. Contoh: » clear all » x=1:10; y=10:10:10:100; % membuat array baru » save
menyimpan semua varlabel MATLAB dalam format biner di file MATLAB.mat » save data
menyimpan semua variabel MATLAB dalam format biner di file data.mat » save data x
menyimpan variabel x dalam format biner di file data.mat » save data x y /ascii
menyimpan variabel x dan y dalam format biner di file data dalam format ASCII. Untuk membuka data gunakan perintah load. Contoh: » load data.mat
OPERATOR LOGIKA DAN RELASIONAL MATLAB menyediakan operasi logika dan relasional, hal ini diperlukan untuk menjawab pertanyaan benar atau salah. Salah satu manfaat yang penting dari kemampuan ini adalah untuk mengontrolurutan eksekusi sederetan perintah MATLAB (biasanya dalam M-File) berdasarkan hasil pertanyaan benar/salah. Sebagai masukan pada sernua ekspresi relasi dan logika, MATLAB menganggap sernua angka tidak nol sebagai benar dan nol sebagai salah. Hasil
8 sernua ekspresi relasi dan logika adalah satu untuk benar dan nol untuk salah dengan tipe array logika, yaitu hasilnya mernuat bilangan 1 dan 0 yang tidak saja dapat digunakan untuk statemen matematika akan tetapi dapat juga digunakan untuk pengalamatan. Operator relasi MATLAB menunjukkan perbandingan: OPERATOR RELASI <
DISKRIPSI Kurang dari
>
Lebih dari
<=
Kurang dari atau sama dengan
>=
Lebih dari atau sama dengan
=
Sama dengan
~=
Tidak sama dengan
Operator relasi MATLAB dapat digunakan untuk membandingkan dua array yang berukuran sama atau untuk membandingkan array dengan skalar. Operator logika menyediakan cara imtuk menggabung atau menegasi ekspresi relasi. Operator-operator logika dalam MATLAB adalah: OPERATOR LOGIKA
DISKRIPSI
&
AND
|
OR
~
NOT
Untuk lebih jelasnya anda bisa mengetikkan : « help +
kemudian tekan enter.
SUMBER-SUMBER INFORMASI MATLAB DI INTERNET Untuk lebih mendalami MATLAB, di bawah ini terdapat beberapa situs yang bisa dimanfaatkan.
9 1.
http://www.mathworks.com/
pada situs ini bisa didapatkan informasi
tentang produk baru MATLAB seperti buku dan lain-lainnya. 2. Newsgroup MATLAB: news://salukinews.siu.edu/comp.softsys.MATLAB/
3.
http://dir.yahoo.com/science/mathematics/software/matlab/
merupakan sumber informasi tentang MATLAB dan langkah awal untuk memperoleh website MATLAB lainnya. 4.
http://www.cse.uiuc.edu/cse301/matlab.html
situs ini merupakan situs
University of Illinois di Champaign-Urbana yang menyediakan beberapa link untuk MATLAB di Internet 5. http://www.eece.maine.edu/mm
1.2. TIPE DATA MATLAB mengenal 3 tipe data yaitu string, skalar, dan matriks. merupakan matriks yang hanya memiliki satu baris. MATLAB juga memiliki banyak fungsi bawaan (build in) untuk memanipulasi tipe data tersebut. Berikut ini merupakan beberapa contoh yang menjelaskan ketiga tipe data di atas.
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 97 Columns 13 through 14 110 103 » abs(g) ans = Columns 1 through 12 115 101 108 97 97 Columns 13 through 14 110 103
109
97
116
32
100
97
116
109
97
116
32
100
97
116
Fungsi char untuk menampilkan karakter dengan nilai ASCII tertentu » char(115) ans = s
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
Angka -1 ditengah menunjukkan perhitungan mundur dari 5 sampai 1. Untuk menampilkan dalam format kolom gunakan operator transpose (‘) » t=g(1:5)' t = s e l a m
11 Fungsi-fungsi string yang lain adalah: Fungsi input » nama=input('Nama :','s') Nama : jojon nama = jojon
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 » h+2 ans = 52 53
52 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: x
0
0.1 π
0..2 π
0.3 π
0.4 π
0.5 π
0.6 π
0.7 π
0.8 π
0.9 π
π
y
0
0.31
0.59
0.81
0.95
1.0
0.95
0.81
0.59
0.31
0
MATLAB menangani array secara intuitif, seperti halnya kita membayangkan membuat tabel di atas. Untuk membuat array dalam MATLAB, yang perlu dilakukan hanyalah mengetikkan kurung siku, lalu memasukkan elemen-elemen dengan dipisahkan oleh spasi, kemudian menutup array dengan kurung siku penutup. » x=[0 .1*pi .2*pi .3*pi .4*pi .5*pi .6*pi .7*pi .8*pi .9*pi pi] x = Columns 1 through 7 0 0.3142 0.6283 0.9425 1.2566 1.5708 1.8850 Columns 8 through 11 2.1991 2.5133 2.8274 3.1416 » y=sin(x); » disp(y) Columns 1 through 7 0 0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 Columns 8 through 11 0.8090 0.5878 0.3090 0.0000
Kita bisa juga menuliskan array x dengan lebih ringkas. » x=[0:0.1*pi:pi] % mulai dari 0 sampai pi selang 0.1*pi x = Columns 1 through 7 0 0.3142 0.6283 0.9425 1.2566 1.5708 Columns 8 through 11 2.1991 2.5133 2.8274 3.1416
atau » x=[0:0.1:1]*pi
1.8850
13 atau » x=linspace(0,pi,11)
Fungsi linspace didefinisikan sebagai : linspace(nilai_pertama, nilai_akhir, jumlah_elemen)
Dalam MATLAB elemen-elemen array diakses menggunakan subcript; misaInya x(1) adalah elemen pertama x, x(2) adalah elemen kedua x, dan seterusnya. Tabel berikut menunjukkan operasi-operasi array dasar. Data ilustrasi: a=[a1 a2 ... an], b=[b1 b2 ... bn], c=<skalar> Penambahan skalar
a+c=[a1+c a2+c ... an+c]
Perkalian skalar
a*c=[a1*c a2*c ... an*c]
Penambahan array
a+b=[a1+b1 a2+b2
Perkalian array
a.*b=[a1*b1 a2+b2 ... an+bn]
Pembagian kanan array
a./b=[a1/b1 a2/b2 ... an/bn]
Pembagian kiri array
a.\b=[a1/b1 a2/b2 ... an/bn]
Pemangkatan array
a.^c=[a1^c a2^c ... an^c]
...
an+bn]
c.^a=[c^a1 c^a2 ... c^an] a.^b=[a1^b1 a2^b2 ... an^bn]
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. » c=a*b %perkalian a dan b c = 13 9 12
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.
Perhatikan contoh berikut untuk pembagian. » a/b ans = 1.2000 -0.6000 0.8000 » b/a ans = 0.5714 0.7143 0.9286 » b\a ??? Error using ==> \ Matrix dimensions must agree. » det(b) %determinan b, b matriks bujursangkar ans = -10
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
Ukuran matriks dapat diketahui dengan fungsi size() » size(a) ans = 1 » size(b) ans =
3
15 3
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 Untuk menyelesaikan masalah yang cukup sederhana, mengetikkan beberapa perintah langsung di command window memang cukup cepat dan efektif. Tetapi jika jumlah perintahnya sangat banyak atau jika anda ingin mengubah beberapa variabel dan mengulang kembali perhitungannya, maka mengetikkan perintah langsung di command window akan sangat menjemukan. Untuk itu, MATLAB menyediakan suatu struktur untuk membuat fungsi anda sendiri atau suatu teknik pemrograman dalam bentuk M-File. M-File berasal dari aturan bahwa nama file ini harus dikhiri dengan ekstensi ‘.m’; misalnya gambar1.m M-File juga memudahkan pemakai untuk menyimpan dan memanggil kembali perhitungan yang sering digunakan. Perintah diary yang biasanya digunakan untuk menyimpan file yang berisi barisan perintah dan keluaran pada command window hanya sekedar merekam tetapi tidak bisa langsung digunakan dalam perhitungan jika dipanggil kembali.
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 argumenargumen 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.: 1
0.8
0.6
0.4
0.2
0
-0.2
-0.4 0
5
10
15
20
25
30
35
Gambar 1.1. Keluaran Program contoh1.1 Fungsi M-File hampir sama dengan script file di mana keduanya merupakan suatu file teks dengan ekstensi m. Fungsi M-File ini tidak dimasukkan dalam command window seperti halnya script file, melainkan diletakkan pada suatu file tersendiri yang dibuat dalam editor teks (MATLAB editor/debugger). Suatu fungsi M-File harus mengikuti beberapa aturan dan mempunyai sejumlah sifat penting. Aturan-aturan dan sifat-sifat tersebut meliputi: 1.
Narna fungsi dan narna file harus identik. Contoh: fhitung disimpan dalam file yang bernama fhitung.m
2.
Pertama kali MATLAB mengeksekusi suatu. fungsi M-File, MATLAB membuka file fungsi tersebut dan mengkornpilasi perintah-perintah di dalamnya menjadi suatu representasi internal dalam memori yang mempercepat eksekusi sernua pemanggilan berikutnya. Jika fungsi juga
18 melibatkan pemanggilan ke fungsi M-File yang lain, fungsi M-File yang dipanggil itu juga akan dikompilasi ke dalam memori. 3.
Sembilan baris komentar yang pertama merupakan teks help yang ditampilkan. Jika anda meminta help, misalnya >>help fhitung
menampilkan 9 baris komentar pertama fungsi fhitung. Baris komentar yang paling atas disebut baris H1, merupakan baris yang dicari oleh perintah lookfor. 4.
Setiap fungsi memiliki ruang kerja sendiri yang berbeda dengan ruang kerja MATLAB. Satu-satunya hubungan antara ruang kerja MATLAB dengan variabel-variabel dalam fungsi adalah variabel-variabel input dan output fungsi. Jika suatu fungsi mengubah nilai dalam bentuk suatu variabel input, perubahan itu hanya tampak dalam fungsi dan tidak mempengaruhi ruang kerja MATLAB.
5.
Jika suatu fungsi dipanggil, jumlah argument input dan output yang digunakan hanya terdapat dalam fungsi tersebut.
6.
Fungsi dapat berbagi variabel dengan fungsi lain, ruang ke.ja MATLAB, dan
pemanggilan
rekursi
untuk
dirinya
sendiri
jika
variabelnya
dideklarasikan sebagal variabel global. 7.
Fungsi M-File berhenti dieksekusi dan kernbali ke prompt jika telah mencapal akhir M-File atau jika menemui perintah return. Perintah return merupakan cara sederhana untuk menghentikan fungsi sebelum mencapai akhir M-File.
8.
Fungsi M-File dapat mernuat lebih dari sebuah fungsi. 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 MFile 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
Setelah ditekan enter muncul: [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
atau bisa juga variabel waktunya bertipe array » [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
Hal ini dimungkinkan karena kita menggunakan operator pemangkatan dengan dot (titik) y=V0*sin(sudut)*t-g/2*t.^2;
Bukan y=V0*sin(sudut)*t-g/2*t^2;
atau dengan perintah feval [x,y]=feval('gerak_parabola',pi/4,40,9.8,1) x = 28.2843 y = 23.3843
Bentuk umum perintah feval adalah feval('namafungsi', input1,input2,...)
Perlu diketahui, MATLAB juga mempunyai command inline yang digunakan untuk mendefinisikan atau menuliskan suatu fungsi pada command window.
21 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
Persamaan umum persamaan aljabar linier simultan adalah: a11x1 + a12x2 + . . . + a1nxn = b1 a21x1 + a22x2 + . . . + a2nxn = b2 . . . an1x1 + an2x2 + . . . + annxn = bn dengan a adalah koefisien konstanta dan b adalah konstanta.
2.1. METODE ELIMINASI GAUSS Teknik yang dilakukan dalam metode ini meliputi kombinasi persamaan agar mengeliminasi yang tidak diketahui dan solusi melalui substitusi balik. Langkah-langkah penyelesaian dengan eliminasi Gauss secara umum adalah :
24 ⎛ a 11 ⎜ ⎜ a 21 ⎜a ⎝ 31 ⎛ a 11 ⎜ ⎜ ⎜ ⎝
x3 = x2 =
x1 =
a 12 a 22 a 32
a 13 | b1 ⎞ ⎟ a '23 | b '2 ⎟ '' a 33 | b 3'' ⎟⎠
a 12 a '22
b 3'' '' a 33
(b
' 2
a 13 | b 1 ⎞ ⎟ a 23 | b 2 ⎟ a 33 | b 3 ⎟⎠
, − a '23 x 3 a '22
(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 x1 +
1 1 1 a12x2 + a13x3 = b1 a 11 a 11 a 11
.... (2.4)
Eliminasi a21 pers. (2.2) dengan cara : [Pers.(2.2) - a21 x Pers.(2.4)] ⎛ ⎞ ⎛ ⎞ ⎛ ⎞ a a a ⎜⎜ a 22 − 21 a 12 ⎟⎟ x 2 + ⎜⎜ a 23 − 21 a 13 ⎟⎟ x 3 = ⎜⎜ b 2 − 21 b1 ⎟⎟ a 11 a 11 a 11 ⎠ ⎝ ⎠ ⎝ ⎠ ⎝ a '22 x 2 + a '23 x 3 = b '2
Eliminasi a31 pers. (2.3) dengan cara : [Pers.(2.3) - a31 x Pers.(2.4)] ⎛ ⎞ ⎛ ⎞ ⎛ ⎞ a a a ⎜⎜ a 32 − 31 a 12 ⎟⎟ x 2 + ⎜⎜ a 33 − 31 a 13 ⎟⎟ x 3 = ⎜⎜ b 3 − 31 b1 ⎟⎟ a 11 a 11 a 11 ⎠ ⎝ ⎠ ⎝ ⎠ ⎝
.... (2.5)
25 ' ' a 32 x 2 + a 33 x 3 = b 3'
.... (2.6)
Normalisasi pers. (2.5) dengan cara membagi a '22 1
x2 +
a '22
a '23 x 3 =
1 a '22
b '2
.... (2.7)
Eliminasi a'32 pers. (2.6) dengan cara : '
[Pers.(2.6) - a 32 x Pers.(2.7)] ' ' ⎛ ' ⎞ ⎛ ⎞ ⎜ a 33 − a 32 a '23 ⎟ x 3 = ⎜ b 3' − a 32 b '2 ⎟ ⎜ ⎟ ⎜ ⎟ a '22 a '22 ⎝ ⎠ ⎝ ⎠ '' a 33 x 3 = b 3''
.... (2.8)
Solusi dengan cara substitusi. Solusi x3 dari pers. (2.8) x3 =
b 3'' '' 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
Bentuk pemograman dengan Matlab dapat disusun sebagai berikut : function [x] = elimgauss(A,B,n) % Program ini bertujuan menyelesaikan Pers Aljabar Linier % dengan metode Eliminasi Gauss untuk sistem n x n % n adalah orde matriks % A adalah matriks n x n % B adalah matriks n x 1 % x adalah output matriks n x 1 untuk penyelesaian A x = B % % % % %
Nama File : elimgauss.m Surakarta, Oktober 2005 Jurusan Teknik Kimia, Fak. Teknik Universitas Sebelas Maret ---------------------------------------------------------------
26 % 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
Contoh 2.1. Campuran Batubara Unit utilitas penyediaan energi membutuhkan batubara dengan kadar sulfur 0,61 %, phospor 0,043 % dan abu 1,8 %. Ada 4 tipe batubara yang tersedia dengan komposisi yang dapat dilihat di tabel. Tentukan campuran ke empat tipe batubara tersebut ! Tipe
%S
%P
% abu
1
0,2
0,05
2
2
1,0
0,06
3
3
0,5
0,03
1
4
0,7
0,03
1
Basis untuk 1 kg batubara campuran x1 +
x2 +
x3 +
x4
=
1
0,2x1 +
x2 +
0,5x3 +
0,7x4
=
0,61
0,05x1 +
0,06x2 +
0,03x3 +
0,03x4
=
0,043
2x1 +
3x2 +
x3 +
x4
=
1,8
x1 +
x2 +
x3 +
x4
=
1
2x1 +
10x2 +
5x3 +
7x4
=
6,1
5x1 +
6x2 +
3x3 +
3x4
=
4,3
Proses penskalaan
27 2x1 +
3x2 +
x3 +
x4
=
1,8
Program penyelesaian dengan eliminasi Gauss % % % % % % % % % % % % %
Campuran Batubara Hasil Penyusunan Persamaan Aljabar Linier x1 + x2 + x3 + x4 = 1 2x1 + 10x2 + 5x3 + 7x4 = 6.1 5x1 + 6x2 + 3x3 + 3x4 = 4.3 2x1 + 3x2 + x3 + x4 = 1.8 Penyelesaian dilakukan dengan Eliminasi Gauss -------------------------------------------------------Surakarta, Oktober 2005 Jurusan Teknik Kimia, Fak. Teknik Universitas Sebelas Maret ********************************************************
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 Fraksi masing-masing type batubara ---------------------------------x1 = 0.2000 x2 = 0.3000 x3 = 0.4000 x4 = 0.1000
Sehingga batubara
type 1 = 20 % type 2 = 30 % type 3 = 40 % type 4 = 10 %
28
Contoh 2.2. Komposisi Fraksi Mol Senyawa Hidrokarbon Tiga senyawa hidrokarbon berada dalam suatu tabung, dengan tekanan 2 atm dan berada dalam keadaan kesetimbangan fase cair-gas. Hitunglah komposisi fraksi mol cairan ketiga gas tersebut, dengan data-data dan rumus di bawah ini. ∑ xi = 1
…(2.2.1)
∑ yi = 1
…(2.2.2)
yi PT =
xi Pio
H1 x1 + H2 x2 + H3 x3 = H
…(2.2.3) …(2.2.4)
dengan xi = fraksi mol cairan komponen i yi = fraksi mol gas komponen i Pio = tekanan uap murni komponen i PT = tekanan total Hi = panas pencampuran komponen i H = panas pencampuran total Data-data
P10 = 5/2 atm, P20 = 5/3 atm, P30 = 5/4 atm H1 = 20 kcal, H2 = 30 kcal, H3 = 55 kcal PT = 2 atm, H = 30 kcal
Susunlah menjadi persamaan aljabar linier terlebih dahulu dan selesaikan!
Penyelesaian : Persamaan (2.2.1) x 1 + x2 + x3 = 1 Substitusi persamaan (2.2.3) ke persamaan (2.2.2) PO P1O PO x1 + 2 x2 + 3 x3 = 1 PT PT PT
5/4 x1 + 5/6 x2 + 5/8 x3 =1 30 x1 + 20 x2 + 15 x1 = 24
…(2.2.5)
Persamaan (2.2.4) 20 x1 + 30 x2 + 55 x3 = 30 Persamaan aljabar simultan
…(2.2.6)
29 x 1 + x2 + x3 = 1
…(2.2.1)
30 x1 + 20 x2 + 15 x1 = 24
…(2.2.5)
20 x1 + 30 x2 + 55 x3 = 30
…(2.2.6)
Selanjutnya diselesaikan dengan Matlab % % % % % % % % % % % %
Komposisi Fraksi Mol Senyawa Hidrokarbon Tekanan uap murni komponen 5/2 atm, 5/3 atm, 5/4 atm Entaphi panas pencampuran 20 kcal, 30 kcal, 55 kcal Tekanan total = 2 atm; Entalphi total 30 kcal; Penyelesaian dilakukan dengan Eliminasi Gauss --------------------------------------------------------------Surakarta, Oktober 2005 Jurusan Teknik Kimia, Fak. Teknik Universitas Sebelas Maret ***************************************************************
clear all clc % Data-data P = [5/2 5/3 5/4]; H = [20 30 55]; Pt = 2; Ht = 30;
% % % %
atm kcal atm 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)
Keluaran program tersebut adalah Fraksi Mol masing-masing komponen --------------------------------x1 = 0.5000 x2 = 0.3000 x3 = 0.2000
30
2.2. METODE INVERSI MATRIKS Persamaan umum persamaan aljabar linier simultan dapat dituliskan dalam bentuk matriks sebagai berikut ⎡ a 11 ⎢a ⎢ 21 ⎢ a 31 ⎢ ⎢ . ⎢ a n1 ⎣
a 12 a 22
a 13 a 23
... ...
a 32
a 33
...
a n2
a n3
...
a 1n ⎤ a 2 n ⎥⎥ a 3n ⎥ ⎥ ⎥ a nn ⎥⎦
⎡ x 1 ⎤ ⎡ b1 ⎤ ⎢x ⎥ ⎢b ⎥ ⎢ 2⎥ ⎢ 2⎥ ⎢x 3 ⎥ = ⎢b3 ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ . ⎥ ⎢ . ⎥ ⎢ x n ⎥ ⎢b n ⎥ ⎣ ⎦ ⎣ ⎦
A
…. (2.9)
x = B
Suatu matriks jika dikalikan dengan “matriks identitas” maka akan dihasilkan matriks itu sendiri. Matriks identitas adalah matriks bujursangkar yang terdiri dari bilangan 0 pada setiap elemennya kecuali pada diagonal matriks yang mempunyai bilangan 1. Contoh matriks identitas 3 x 3 ⎡1 0 0 ⎤ ⎢0 1 0⎥ = I ⎥ ⎢ ⎢⎣0 0 1⎥⎦
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
Penyelesaian persamaan linier simultan dengan inversi matriks adalah
31 A x
= B
-1
= A-1 B
A A x
I x = A-1 B = A-1 B
x
… (2.10)
⎡a Inversi matriks A ukuran 2 x 2 ⎢ 11 ⎣a 21
A-1 =
a 11a 22
a 12 ⎤ dapat ditentukan dengan cara a 22 ⎥⎦
⎡ a 22 1 ⎢ − a 12 a 21 ⎣− a 21
− a 12 ⎤ a 11 ⎥⎦
Matlab dengan mudah dapat menentukan inversi suatu matriks dengan menggunakan fungsi
inv.
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
Jika k sesuai dengan persamaan
m
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 ⎥⎦
Program penyelesaian dengan Matlab % % % % % % % % % %
Konstanta Kecepatan Reaksi Phase Gas Nitrit Oksida dg Oksigen k = A T^m exp(-E/T) ln k = ln A + m ln T + (-E)/T Penyelesaian dilakukan dengan Inversi Matriks ------------------------------------------------------------Surakarta, Oktober 2005 Jurusan Teknik Kimia, Fak. Teknik Universitas Sebelas Maret *************************************************************
clear all clc % Data-data T = [ 300 413 564]; k = [ 7.1 4.0 2.8]*10^9;
% K % 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)
Keluaran program di atas adalah Parameter konstata kecepatan reaksi -----------------------------------
33 A = 1.3509e+007 m = 0.6064 E = -841.6950
sehingga persamaan konstanta kecepatan reaksinya adalah k = 1,3509.107 T0,6064 exp(841,6950/T)
Contoh 2.4. Parameter Transfer Massa Hubungan parameter-parameter transfer massa dapat dinyatakan sebagai kelompok tak berdimensi (KTD) sebagai berikut: ⎛ d p VS ρ ⎞ ⎟ = K 1 ⎜⎜ ⎟ µ ⎝ ⎠
kf a dp De
K2
⎛ µ ⎜ ⎜ρ D e ⎝
⎞ ⎟ ⎟ ⎠
K3
Sh = K1 (Re)K2 (Sc)K3 Tentukan K1, K2, dan K3 dengan data-data berikut: Sh
Re
Sc
(Sherwood)
(Reynold)
(Schmidt)
1
43,7
10800
0,6
2
21,5
5290
0,6
3
24,2
3120
1,8
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 ⎡1 4,03342 − 0,22185⎤ ⎡ x 1 ⎤ ⎡1,64048⎤ ⎢1 3,72346 − 0,22185⎥ ⎢ x ⎥ = ⎢1,33244⎥ ⎥ ⎢ ⎥⎢ 2 ⎥ ⎢ ⎢⎣1 3,49415 0,25527 ⎥⎦ ⎢⎣ x 3 ⎥⎦ ⎢⎣1,38382⎥⎦
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
Persamaan hubungan parameter-parameter transfer massa menjadi : Sh = 0,0058 (Re)0,9938 (Sc)0,5853
35
2.3. METODE DEKOMPOSISI LU Modifikasi metode eliminasi yang lain adalah metode dekomposisi LU. Metode ini similar dengan metode eliminasi Gauss. Matriks koefisien konstanta diubah menjadi 2 matriks lain, yaitu L dan U; dengan L adalah matriks triangular bawah dengan diagonal 1 dan U adalah matriks triangular atas. A = LU
… (2.11)
Konsep dasar metode dekomposisi LU adalah Ax=b L U x = L b* U x = b*
… (2.12)
Matriks A didekomposisi menjadi matriks L dan U. Matriks L hasil dekomposisi A digunakan untuk mendekomposisikan matriks b, sehingga diperoleh matriks b*. Jika matriks U dikalikan dengan matriks x akan diperoleh matriks b*. Selanjutnya x diperoleh dengan substitusi balik karena U adalah matriks triangular bawah.
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
B1 F = 70 mol/menit
18 % Xylena 24 % Styrena 42 % Toluena 16 % Benzena
#1 D2
15 % Xylena 25 % Styrena 40 % Toluena 20 % Benzena
15 % Xylena 10 % Styrena 54 % Toluena 21 % Benzena
B #3
B2
24 % Xylena 65 % Styrena 10 % Toluena 1 % Benzena
Gambar 2.1. Distilasi Bertingkat 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
Contoh 2.6. Persamaan Virial Selain hubungan gas ideal yang telah dikenal, ada banyak persamaan lain yang menghubungkan volume dan tekanan gas. Salah satunya adalah persamaan virial PV = a + bP + cP2 Untuk mengevaluasi konstanta-konstanta a, b, dan c, telah dilakukan percobaan dengan data sebagai berikut : P (atm)
V (L/mol)
1
4
2
9/2
3
16/3
Susunlah data-data di atas menjadi persamaan aljabar linier simultan dan selesaikan.
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]; V = [4 9/2 16/3]; % 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)
% atm % L/mol
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
Contoh 2.7. Persamaan Kecepatan Reaksi Untuk kecepatan reaksi, ra
= k C aα C βb , dengan data ditunjukkan pada
tabel. Tentukan persamaan kecepatan reaksi tersebut ! Ca
Cb
r
0,7
0,2
0,4567
0,9
0,3
1,0707
1,6
0,2
2,5917
Penyelesaian dengan Program Matlab clear all clc echo on % 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
40 % 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
Suatu penyelesaian persamaan aljabar non linier adalah menentukan nilai x, sehingga suatu fungsi x, f(x) akan sama dengan nol. Contoh, f(x) = e-x – x, maka yang ingin diketahui adalah berapakah nilai x, sehingga f(x) = 0. 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.
3.1. METODE BISECTION (BAGIDUA) Pada metode Bisection, mula-mula diperkirakan suatu interval sehingga akar persamaan yang akan diperoleh berada pada interval tersebut. Selanjutnya
44 dicari nilai f(x) dari kedua titik dan dari titik tengah interval. Dengan menganalisa nilai f(x) ketiga titik maka kita dapat membuang setengah interval dalam setiap langkahnya. 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
Gambar 3.1. Kurva Akar-akar Persamaan Uji apakah [f(xA)]x[f(xB)] < 0. Jika salah, maka ulangi langkah (1) dan (2). 4.
Hitung xM, yaitu titik tengah interval xM =
5.
xA + xB 2
Hitung f(xM) a.
Jika [f(xA)]x[f(xM)] > 0, maka xA baru = xM dan xB tetap
…. (3.1)
45
xA =
xM xA
xB baru
Gambar 3.2. Penentuan xA dan xB baru jika [f(xA)]x[f(xM)] > 0 b.
Jika [f(xA)]x[f(xM)] < 0, maka xA tetap dan xB baru = xM
x M = xA
Baru
xA
xB
Gambar 3.3. Penentuan xA dan xB baru jika [f(xA)]x[f(xM)] < 0 6.
Uji apakah f(xm) < Toleransi. Jika tidak, ulangi langkah (4) untuk menentukan xm yang baru.
Contoh 3.1. Konversi untuk disosiasi H2O Uap air didisosiasikan (dipecah) menjadi H2 dan O2 pada tekanan 0,2 atm sebagai berikut: H2O ↔ H2 + ½ O2 Fraksi molekul (x) dari H2O dapat dinyatakan sebagai berikut: kp =
x
2p
(1 − x ) (2 + x )
Jika kp = 0,4568 tentukanlah x yang memenuhi persamaan di atas.
46 Program matlab untuk metode bagidua : % Persamaan aljabar non linier % % Penyelesaian dilakukan dengan Metode Bagidua (bisection) % % -------------------------------------------------------------% Surakarta, Oktober 2005 % Jurusan Teknik Kimia, Fak. Teknik % Universitas Sebelas Maret % ************************************************************** clc clear all disp 'Masukkan Perkiraan Batas Bawah dan Batas Atas ' xa=input('batas bawah = '); xb=input('batas atas = '); fa = contoh31(xa); fb = contoh31(xb); x=[xa:(xb-xa)/50:xb]; plot(x,contoh31(x)); xlabel('x') ylabel('f(x)') grid on while fa*fb > 0 disp 'Tebakan salah, ganti batas atas dan/atau batas bawah' disp 'Perhatikan grafik!! Perkirakan nilai x untuk f(x) mendekati nol' xa=input('batas bawah = '); xb=input('batas atas = '); fa=contoh31(xa); fb=contoh31(xb); end tol=0.000001; 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)
Program dalam bentuk M-function untuk persoalan di atas function f_x = contoh31(x) % Program penyelesaian utk reaksi disosiasi H2O % H2O --> H2 + 1/2 O2 % x / 2p % kp = ------/ ----% (1 - x) \/ (2 + x) % p = 0,2 atm % kp = 0,4568 % % %
Nama File : contoh31.m Surakarta, Oktober 2005 ---------------------------------------------------------------
47 p = 0.2; kp = 0.4568; f_x = x./(1-x).*sqrt(2*p./(2+x))-kp;
%atm
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
Contoh 3.2. Faktor Kompresibilitas Gas Ideal Hubungan faktor kompresibilitas gas ideal dalam bentuk z=
1 − y + y 2 − y3 1 − y3
dengan y = b/4v, untuk b adalah koreksi van der Waals dan v adalah volum molar. Jika z = 0,892 berapakah y ? Penyelesaian dilakukan dengan program bisection yaitu dengan mengganti fungsi disosiasi H2O dengan fungsi untuk persoalan faktor kompresibilitas gas ideal. function f_y = contoh32(y) % Faktor Kompresibilitas Gas Ideal % 1 - y + y^2 - y^3 % z = ------------------% 1 - y^3 % z = 0,896 % % %
Nama File : contoh32.m Surakarta, Oktober 2005 --------------------------------------------------------------
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. Masukkan Perkiraan Batas Bawah dan Batas Atas
48 batas bawah = 0 batas atas = 1 f(x)=0 untuk x = 0.1229
3.2. METODE NEWTON-RAHPSON Metode Newton-Raphson adalah metode yang paling populer untuk mencari akar-akar suatu persamaan aljabar non linier. Metode ini merupakan metode terbuka, yaitu hanya menggunakan satu tebakan awal. Jika suatu tebakan awal adalah xi, maka garis singgung titik xi pada f(xi), dapat diperluas sampai memotong sumbu x. Titik potong garis tersebut pada sumbu x kemudian menjadi perbaikan tebakan awal, xi+1.
f(xi) Akar persamaan Garis singgung
f(xi+1) xi+1
xi
Gambar 3.4. Menentukan Akar-Akar Persamaan dengan Newton Raphson 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 )
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
….(3.2)
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ε
dengan ε adalah bilangan yang kecil. Persamaan di atas banyak digunakan untuk penyelesaian akar-akar persamaan aljabar non linier dengan pemograman komputer. Secara umum metode Newton-Raphson adalah metode yang sangat efisien. Tetapi metode ini mempunyai beberapa kelemahan untuk kasus-kasus tertentu, seperti konvergen yang sangat perlahan, atau bahkan bersifat divergen. 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 murni dihitung dengan persamaan log p O = A −
B 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
Program Metode Newton-Raphson
50 % % % % % % % % %
Persamaan aljabar non linier Penyelesaian dilakukan dengan Metode Newton-Raphson --------------------------------------------------------------Surakarta, Oktober 2005 Jurusan Teknik Kimia, Fak. Teknik Universitas Sebelas Maret ***************************************************************
clc clear all xnew=input(' Nilai untuk tebakan awal = xold=0; tol=0.0001; eps=0.0001;
');
disp ' x-old f(x-old) ' while abs(xnew-xold)>tol xold=xnew; fxold=contoh33(xold); t=[' 'num2str(xold) ' 'num2str(fxold) ]; disp (t) fmin=contoh33(xold-eps); fplus=contoh33(xold+eps); dfx=(fplus-fmin)/2/eps; xnew=xold-fxold/dfx; end t=['akar persamaan, x = 'num2str(xold) ' f(x) = 'num2str(fxold)]; disp(t)
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 ---------------------------------------------------------------
P=760; % Konversi dari atm ke mmHg y1=0.77; y2=0.23; p1o=10^(6.89745-1206.35/(T+220.237)); p2o=10^(6.95334-1343.94/(T+219.377)); x1=y1*P/p1o; x2=y2*P/p2o; fT=x1+x2-1;
Keluaran program Nilai untuk tebakan awal = x-old f(x-old)
85
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 Contoh 3.4. Hubungan Faktor Friksi suatu Pelarut dengan Bilangan Reynolds Hubungan faktor friksi untuk aliran suatu pelarut dengan bilangan Reynolds (Re) secara empiris adalah 1 f
(
)
5,6 ⎞ ⎛1⎞ ⎛ = ⎜ ⎟ ln Re f + ⎜14 − ⎟ k ⎠ ⎝k⎠ ⎝
dengan k = konsentrasi larutan dan f adalah faktor friksi. Tentukanlah f, jika Re = 3750 dan k=0,28 Program penyelesaian dengan Metode Newton-Raphson. Karena bekerja pada bilangan yang lebih kecil, toleransi dapat kita turunkan sampai 10-7.
function f_f = contoh34(f) % Hubungan faktor friksi suatu pelarut dengan bil Reynolds % 1 1 5,6 % ------- = --- ln [ Re*sqrt(f) ] + [ 14 - ----- ] % sqrt(f) k k % Re = 3750 % k = 0,28 % % %
Nama File : contoh34.m Surakarta, Oktober 2005 ---------------------------------------------------------------
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
3.3. FUNGSI fzero Matlab mempunyai suatu fungsi untuk menyelesaikan persamaan aljabar non linier. Fungsi ini disebut dengan
fzero.
Fungsi ini terdiri dari beberapa
metode yang dipadukan untuk menyelesaikan berbagai persoalan secara cepat dan tepat. Penggunaan fungsi fzero adalah : x
= fzero(‘nama_fungsi’,xo, tol, trace)
dengan : adalah nama suatu fungsi yang berisi persamaan yang akan dicari nilai nol-nya. xo adalah nilai perkiraan awal tol adalah ketepatan penyelesaian jika trace mempunyai nilai lebih dari 1. trace adalah jumlah iterasi yang dilakukan. Dua parameter terdepan harus diisi, sehingga alternatif untuk menggunakan nama_fungsi
fungsi ini adalah x
= fzero(‘nama_fungsi’,xo)
Contoh 3.5. Persamaan Peng-Robinson Untuk menghitung volum CO2 pada tekanan 1.104 kPa dan temperatur 3400K, dapat digunakan persamaan EOS (equation of state) Peng-Robinson P=
RT a − V − b V (V + b ) + b( V − b)
dengan a = 364,61 m6kPa/(kgmol)2 dan b = 0,02664 m3/kgmol R=8,3137 m3kPa/kgmol K. Tentukanlah V dengan tebakan awal V, gunakan EOS gas ideal (PV=RT)
% % % % % % % %
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; T=340; P=10^4;
% % %
m^3.kPa/(kgmol.K) K kPa
% Sebagai nilai tebakan V digunakan pers Gas Ideal Vo=R*T/P; % Penentuan nilai V dengan fungsi fzero V=fzero('F35',Vo)
Fungsi penyelesaian Peng-Robinson function fV=F35(V) % Persamaan Peng-Robinson % % % %
R.T P = -----V - b Parameter utk CO2
-
a ------------------V(V + b) + b(V - b)
% Nama File : F35.m % Surakarta, Oktober 2005 % --------------------------------------------------------------global R T P %Parameter Peng-Robinson untuk CO2 a=364.61; b=0.02664; fV=R*T/(V-b)-a/(V*(V+b)+b*(V-b))-P;
Keluaran program V = 1.6792e-001
Sehingga volum molar CO2 adalah 0,16792 m3/kgmol Contoh 3.6. Penurunan temperatur karena pelepasan panas Suatu campuran gas mempunyai kapasitas panas Cp = 7,053 + 1,2242.10-3 T – 2,6124.10-7 T2 T dalam oF dan Cp dalam Btu/lbmol oF. Jika panas yang dilepaskan untuk menurunkan temperatur campuran gas panas tersebut dari 550 oF adalah 2616 Btu/lbmol gas sampai temperatur berapakah campuran gas tersebut dapat didinginkan.
54 T
q=
∫ Cp
dt
To
Sampai berapakah campuran gas tersebut dapat didinginkan ? 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 % % %
Nama File : contoh36.m Surakarta, Oktober 2005 ---------------------------------------------------------------
q = -2616; To = 550;
% BTU/lbmol % oF
% Integral secara analitis fT=7.053*(T-To)+1.2242*10^-3/2*(T^2-To^2)... -2.6124*10^-7/3*(T^3-To^3)-q;
Fungsi tersebut dapat dijalankan dari jendela command >> T = fzero('contoh36',150) T = 1.9992e+002
Sehingga temperatur gas adalah 199,92 OF.
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 :
z 2 − z1 +
f.Le.v 2 − Hm = 0 2.g.D
faktor friksi didekati dengan persamaan empiris :
f=
0,0596 Re 0,215
Re =
ρ .v.D µ
dengan
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=
π 4
.D 2 .v
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). Penyelesaian Program Matlab % Debit Aliran dengan Pompa pada Pipa % % --------------------------------------------------------------% Surakarta, Oktober 2005 % Jurusan Teknik Kimia, Fak. Teknik % Universitas Sebelas Maret % *************************************************************** clear all clc global rho myu g z2 z1 D Le % Data-data rho=1; myu=0.01; g=981; z1=300; z2=800; D=4; Le=20000;
% % % % % % %
Densitas, g/cm^3 Viskositas, g/cm.dtk grafitasi, cm/dtk^2 tinggi titik 1, cm tinggi titik 2, cm diameter pipa, cm 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 ---------------------------------------------------------------
global rho myu g z2 z1 D Le Re=rho*v*D/myu; f=0.0596/Re^0.215;
% Perhitungan Bil. Reynold % Perhitungan faktor friksi
56 Q=pi/4*D^2*v; % Perhitungan Debit Hm=3718.5-2.3496*Q+7.8474e-4*Q^2-9.5812e-8*Q^3; % Perhitungan head pompa fv=z2-z1+f*Le*v^2/(2*g*D)-Hm; % Persamaan Bernoulli
Keluaran program vhit = 227.6735 Qhit = 2.8610e+003
Terhitung kecepatan aliran 227,6735 cm/detik dengan debit 2.861 cm3/detik.
Contoh 3.8. Reaktor Adiabatis untuk Reaksi Eksotermis Fase Gas Reaksi eksotermis fasa gas A + 2B ↔ C dijalankan dalam reaktor adiabatik. Umpan berjumlah Fo gmol/j dan bersuhu TF mempunyai komposisi : 25 % A dan 75 % B. Tekanan sepanjang reaktor tetap P atm. Ingin dicari nilai konversi A pada kesetimbangan (z). Konversi kesetimbangan dapat dihitung dengan persamaan : Tkesetimbangan - Tneraca panas = 0 Dari neraca panas diperoleh persamaan :
T = TF -
0,25.(1 - z).C pA
0,25.z. ∆H FR + (0,75 − 0,5.z).C pB + 0,25.C pC
dengan :
∆H FR = ∆H oR + (C pC − C pA − 2.C pB ).(TF − Tref ) Dari kesetimbangan diperoleh : T=
B ⎛K⎞ ln⎜ ⎟ ⎝A⎠
dengan K =
0,25.(1 − z) .P (1 − 0,5.z) (0,75 − 0,5.z) PB = .P (1 − 0,5.z) 0,25.z .P PC = (1 − 0,5.z)
PA =
PC PA .PB
2
57 Data-data yang diketahui : Tref = 298 K; A = 8.10
-6
∆HRo
= - 20.000 cal/gmol; TF = 400 K; P = 20 atm;
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 ***************************************************************
global dHr Tf
P Tref A B Cpa Cpb Cpc
% 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 % % % %
Nama File : F38.m Surakarta, Oktober 2005 ---------------------------------------------------------------
global dHr Tf P Tref A B Cpa Cpb Cpc % Perhitungan tekanan parsial komponen Pa=0.25*(1-z)*P/(1-0.5*z); Pb=(0.75-0.5*z)*P/(1-0.5*z); Pc=0.25*z*P/(1-0.5*z); % 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
Contoh 3.9. Temperatur Titik Embun untuk Campuran Benzena, Toluena, dan Ortho-xylena Campuran uap dengan fraksi mol benzene (A) = 0,4; toluene (B) = 0,3; dan ortho-xylene (C) = 0,3; didinginkan pada tekanan tetap Pt = 76 cmHg. Ingin dicari pada suhu berapa (K) pengembunan terjadi. Sistem mengikuti hukum Roult-Dalton. Harga tekanan uap murni mengikuti persamaan
3764 ⎞ ⎛ PAo = exp⎜14,95 − ⎟ T ⎠ ⎝
4497 ⎞ ⎛ PBo = exp⎜16,07 − ⎟ 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 % Data-data tekanan parsial ya=0.4; yb=0.3; yc=0.3; % Tekanan total, cmHg Pt=76; % 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 % % %
Nama File : F39.m Surakarta, Oktober 2005 ---------------------------------------------------------------
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
Temperatur titik embun 390,2252 K
Contoh 3.10. Terminal Velocity untuk Partikel Jatuh dalam Fluida Partikel berbentuk bola yang bergerak dalam suatu fluida mempunyai terminal velocity sebagai berikut :
(
)
⎛ 4g ρ p − ρ D p v t = ⎜⎜ 3C D ρ ⎝
⎞ ⎟ ⎟ ⎠
…(3.10.1)
dengan vt adalah terminal velocity (m/detik), g adalah percepatan grafitasi (= 9,80665 m/detik2), ρp adalah densitas partikel (kg/m3), ρ adalah densitas fluida (kg/m3), Dp adalah diameter partikel bola (m) dan CD adalah koefisien drag (tak berdimensi). Koefisien drag partikel bola untuk terminal velocity bervariasi dengan bilangan Reynolds (Re) sebagai berikut : CD =
CD =
(
24 Re
24 1 + 0,14 Re 0,7 Re
untuk Re < 0,1
)
untuk
0,1 ≤ Re ≤ 1000
60 CD = 0,44
untuk 4
CD = 0,19 – 8.10 /Re
1000< Re ≤ 35000 untuk
35000 ≤ Re
dengan Re = D p v t ρ dan µ adalah viskositas (Pa detik atau kg/mdetik) µ
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; D_p = 0.208*10^-3; T = 298.15; rho = 994.6; mu = 8.931*10^-4; g = 9.80665;
%kg/m^3 %m %K %kg/m^3 %kg/m/s %m/s^2
% Menghitung bilangan Reynold Re = D_p*v_t*rho/mu; % Menentukan koef. drag (CD) if Re < 0.1 C_D = 24/Re; elseif Re < 1000 C_D = 24*(1+0.14*Re^0.7)/Re; elseif Re < 350000; C_D = 0.44; else C_D = 0.19-80000/Re; end % Membandingkan vt awal dan vt perhitungan fv_t = v_t^2*(3*C_D*rho)-4*g*(rho_p-rho)*D_p;
Perintah dari jendela command dan hasilnya : >> v_t_tebakan = 0.2; >> v_t = fzero('contoh310',v_t_tebakan) v_t =
61 1.5782e-002
Sehingga vt adalah 0,015782 m/detik Contoh 3.11.
Volum Molar dan Faktor Kompressibilitas untuk Persamaan van der Waals
Hukum gas ideal dapat menunjukkan hubungan tekanan, volum, dan temperatur (PVT) hanya pada tekanan gas rendah (mendekati tekanan atmosfer). Untuk tekanan tinggi persamaan yang harus digunakan lebih kompleks daripada hukum gas ideal tersebut. Perhitungan volum molar dan faktor kompressibilitas menggunakan persamaan yang lebih kompleks yang memerlukan penyelesaian secara numeris. Salah satu persamaan yang dapat digunakan adalah persamaan van der Waals a ⎞ ⎛ ⎜ P + 2 ⎟(V − b ) = RT V ⎝ ⎠ dengan
a=
27 ⎛⎜ R 2TC 2 ⎞⎟ 64 ⎜⎝ PC ⎟⎠
b=
RTC 8PC
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)
Tekanan tereduksi dinyatakan sebagai Pr =
P PC
Faktor kompressibilitas dinyatakan sebagai Z= a.
PV RT
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; % Tc = 405.5; % R = 0.08206; % T = 450; % P = 56; % Pr = [P/Pc 1 2 4 10 20]; a = 27/64*R^2*Tc^2/Pc; b = R*Tc/(8*Pc);
atm K atm.L/gmol.K K atm
% 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 % Menampilkan hasil perhitungan disp(' Pr Volum molar faktor Z') disp(hasil) plot(hasil(:,1),hasil(:,3)) title('Faktor Kompresibilitas vs Tekanan Tereduksi') xlabel('Tekanan Tereduksi') ylabel('Faktor Kompresibilitas')
Fungsi van der Waals function f_V = waals(V) % Persamaan van der Waals % [ a ] % [ P + ------ ] ( V - b ) % [ V^2 ] % Parameter utk ammonia
= RT
63 % Nama File : waals.m % Surakarta, Oktober 2005 % --------------------------------------------------------------global P a b R T % Modifikasi persamaan van der Waals f_V = P*V^3-P*b*V^2-R*T*V^2+a*V-a*b;
Faktor kompresibilitas
Hasil perhitungan
Gambar 3.5. Keluaran Program Contoh 3.11 >> Pr 5.0314e-001 1.0000e+000 2.0000e+000 4.0000e+000 1.0000e+001 2.0000e+001
Volum molar 5.7489e-001 2.3351e-001 7.7268e-002 6.0654e-002 5.0875e-002 4.6175e-002
faktor Z 8.7183e-001 7.0381e-001 4.6578e-001 7.3126e-001 1.5334e+000 2.7835e+000
Contoh 3.12. Temperatur Batang Konduktor sebagai Fungsi Arus Suatu batang konduktor berdiameter D dan hambatan elektrik per satuan panjang RL. Batang tersebut mula-mula berada pada kesetimbangan termal dengan udara di sekitarnya. Aliran listrik I dilewatkan melalui batang tersebut. Untuk diameter batang yang kecil, dapat diasumsikan bahwa temperatur sepanjang batang seragam, dengan temperatur sebagai fungsi waktu T(t).
64 Neraca energi pada batang logam Eacc = Eg – Eout Ecc = kecepatan energi tersimpan pada batang logam Eg = kecepatan pembangkitan energi dalam batang karena panas hambatan Eout = kecepatan aliran energi total keluar dari batang karena konveksi dan radiasi
T lingkungan Panas yang dilepaskan
I, kuat arus D, diameter
L, panjang pipa
Gambar 3.6. Batang Konduktor Energi dalam batang sepanjang waktu Ecv = ρcV
dT dt
Eg = I2RLL Dengan RL adalah hambatan per satuan panjang dan satuan persamaan di atas adalah (amp)2ohm. Eout = hA(T - T∞) + εσA(T4 – T4sur) Dengan A adalah luas permukaan perpindahan panas T∞ adalah temperatur fluida Tsur adalah temperatur lingkungan karena perpindahan panas radiasi ε = emisivitas material σ = konstanta Stefan boltzmann = 5,67.108 W/m2-K4 Substitusi ke persamaan ρcV
dT 2 = I RLL - hA(T - T∞) + εσA(T4 – T4sur) dt
65 dengan A = πDL V = πD2L/4 Kondisi awal T(0) = T0 Jika arus mula-mula adalah nol, kemudian temperatur awal T0 maka didapatkan persamaan hA(T - T∞) + εσA(T04 – T4sur) = 0 jika T∞ dan Tsur sama, maka T0 = T∞ = Tsur. D = 1 mm ε = 0,8 RL = 0,4 ohm/m h = 100 W/m2K T∞ = Tsur = 25 oC % % % % % % %
Temperatur Batang Konduktor sebagai Fungsi Arus Listrik --------------------------------------------------------------Surakarta, Oktober 2005 Jurusan Teknik Kimia, Fak. Teknik Universitas Sebelas Maret ***************************************************************
clear all global D emiss R_L sig h Tinf Tsur Isq D = 0.001; % Diameter kawat (m) emiss = 0.8; % Emisivitas R_L = 0.4; % Risistansi per satuan panjang (ohm/m) sig = 5.67e-8; % Konstanta Stefan-Bolzmann (W/m^2K^4) h = 100; % Koefisien transfer panas (W/m^2K) Tinf = 25+273.15; % Temperatur fluida (K) Tsur = Tinf; % Temperatur lingkungan untuk radiasi (K) 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); % Plot hasil perhitungan plot(I,Tss-273.15,'k',I,Tssa-273.15,'k-.','LineWidth',2), grid on rr = axis; rr(3) = 0; axis(rr); title('Temperatur Konduktor Steady State vs Arus')
66 xlabel('Arus (amps)'), ylabel('Temperatur Steady State (C)') legend('T(ss) dengan radiasi','T(ss) tanpa radiasi') % Perhitungan neraca energi A = pi*D; gen = I.*I.*R_L; conv = h*A*(Tss-Tinf); rad = emiss*sig*A*(Tss.^4-Tsur^4); bal = (gen-conv-rad); % 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
Fungsi neraca energi function F=neracaenergi(T) % Neraca Energi pada Batangan Konduktor % keadaan steady state % input - output = akumulasi % panas arus listrik - panas konveksi - panas radiasi = 0 % % %
Nama File : neracaenergi.m Surakarta, Oktober 2005 ---------------------------------------------------------------
global D emiss R_L sig h Tinf Tsur Isq 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 Komponen Neraca Energi vs Arus I Energi yg Muncul Konveksi (A) (W/m) (W/m) 0.0 0.00 0.00 0.5 0.10 0.10 1.0 0.40 0.38 1.5 0.90 0.86 2.0 1.60 1.52 2.5 2.50 2.38 3.0 3.60 3.43 3.5 4.90 4.66 4.0 6.40 6.08 4.5 8.10 7.68 5.0 10.00 9.47 5.5 12.10 11.44 6.0 14.40 13.59 6.5 16.90 15.92 7.0 19.60 18.42 7.5 22.50 21.09 8.0 25.60 23.93 8.5 28.90 26.93 9.0 32.40 30.09 9.5 36.10 33.41 10.0 40.00 36.88
Radiasi (W/m) 0.00 0.00 0.02 0.04 0.08 0.12 0.17 0.24 0.32 0.42 0.53 0.66 0.81 0.98 1.18 1.41 1.67 1.97 2.31 2.69 3.12
Neraca Temperatur (W/m) C 0.0000 25.15 0.0000 25.45 0.0000 26.36 -0.0000 27.88 0.0000 30.00 0.0000 32.73 0.0000 36.06 0.0000 39.98 -0.0000 44.50 -0.0000 49.60 -0.0000 55.30 -0.0000 61.57 -0.0000 68.41 0.0000 75.81 0.0000 83.77 0.0000 92.28 0.0000 101.32 -0.0000 110.88 -0.0000 120.94 -0.0000 131.50 0.0000 142.53
Temperatur Steady State (C)
68
Gambar 3.7. Keluaran Program Contoh 3.12
Contoh 3.13. Pengaruh friksi pada Aliran Pipa Suatu sistem pipa dan tangki ditunjukkan pada gambar 3.8. Tinggi cairan dalam tangki, h, panjang pipa pengeluaran, L, dengan diameter, D. Kecepatan cairan keluar tangki V yang dapat diperkirakan dari neraca energi makroskopik.
h
L
D
V
Gambar 3.8. Sistem Pipa dan Tangki
69 Neraca energi pada sistem pada keadaan steady : p1 v2 p v2 + z1 + 1 + h A − h R − h L = 2 + z1 + 2 2g 2g γ γ
Tidak ada peralatan mekanik, sehingga hA = hR = 0, kecepatan pada permukaan nol, dan p1 = p2. v 22 = z1 − z 2 − h L 2g
untuk kasus di atas, h + L = z1 – z2, dan V = v2. hL ditentukan dengan persamaan hL = f
LV 2 D 2g
Persamaan menjadi V2 LV 2 = h+L−f 2g D 2g
V2 =
2g(h + L ) L⎞ ⎛ ⎜1 + f ⎟ D⎠ ⎝
Konstanta gravitasional 32,2 ft/detik2. Faktor friksi, f, untuk aliran turbulen didekati dengan korelasi Swamee-Jain. f =
0,25 ⎡ ⎛ ε / D 5,74 ⎞⎤ + 0,9 ⎟⎟⎥ ⎢log10 ⎜⎜ ⎝ 3,7 Re ⎠⎦ ⎣
2
ε/D adalah kekasaran relatif dan Re adalah bilangan Reynold, Re = VD/ν Tentukan bagaimana kecepatan bervariasi sebagai fungsi panjang pipa L dan diameter D. Asumsikan fluida adalah air pada 60 OF (ν = 1,21 x 10-5 ft2/detik). Tangki cukup besar dan air keluar melalui pipa besi Sch 40 (ε = 1,5 x 10-4 ft). h = 5 ft. Plotkan V(L) dengan kisaran 1/12 ft < L < 20 ft. Ukuran pipa Sch 40 Pipa 1/2 “ Æ D1 = 0,0518 ft Æ D2 = 0,0874 ft
Pipa 1” ”
Pipa 1 ½ Æ D3 = 0,1342 ft 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 % Data-data, D dan L bervariasi D = [0.0518 0.0874 0.1342]; % h = 5; % g = 32.2; % visc = 1.21e-5; % rough = 1.5e-4; % NL = 50; L = linspace(1/12,20,NL)';
variasi diameter pipa (ft) tinggi fluida dalam tangki (ft) konstanta percepatan (ft/detik^2) viskositas air pada 60 F (ft^2/s) kekasaran pipa besi (ft)
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 % Menampilkan hasil perhitungan plot(L,V(:,1),'k -',L,V(:,2),'k+',L,V(:,3),'k.','lineWidth',2) title('Friksi Pipa : Velocity vs Panjang Pipa') xlabel('Panjang pipa (ft)') ylabel('Velocity Aliran Keluar (ft/detik)') legend('pipa Sch 40 1/2"','pipa Sch 40 1"','pipa Sch 40 1 1/2"')
Fungsi friksi pada pipa function F=friksi_pipa(V) % Friksi pada pipa % Evaluasi F(V) = V^2 - 2g(h+L)/(1+fL/D) % f adalah faktor friksi sebagai fungsi bilangan Reynold % % %
Nama File : friksi_pipa.m Surakarta, Oktober 2005 ---------------------------------------------------------------
global DD h LL g visc rough % 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
Velocity Aliran Keluar (ft/detik)
71
Gambar 3.9. Keluaran Program Contoh 3.13
4
INTEGRAL NUMERIS
Secara matematis integrasi dinyatakan oleh : b
…. (4.1)
I = ∫ f ( x ) dx a
yang dinyatakan sebagai integrasi fungsi f(x) terhadap variabel x, yang dievaluasikan antara batas x = a sampai x = b. Persamaan tersebut adalah jumlah total f(x) dx yang meliputi bentangan dari x = a hingga x = b. Gambar 4.1 menunjukkan sebuah manifestasi grafik konsep tersebut. f (x)
x a
b
Gambar 4.1. Konsep Integrasi Integrasi adalah menentukan luas di bawah kurva f(x) antara x = a dan x = b.
76
4.1. ATURAN TRAPESIUM Aturan trapesium dapat digunakan untuk penyelesaian integral secara numeris . Caranya adalah dengan membagi bentangan x = a sampai x = b menjadi bagianbagian yang lebih kecil yang besarnya masing-masing sebesar ∆x berjumlah n buah. Jumlah interval n semakin besar, hasil integrasi secara numeris akan semakin baik. f (x)
x a
Dx
b
Gambar 4.2. Konsep Dasar Aturan Trapesium Masing-masing bagian dianggap berbentuk trapesium, sehingga luas masingmasing bagian adalah ½ x tinggi x jumlah sisi sejajar. Harga integral diperoleh dari jumlah luasan total dari masing-masing bagian. b
∫ f (x) dx
=
∆x (f (a ) + f ( x 1 ) ) + ∆x (f ( x 1 ) + f ( x 2 ) ) + ...... + ∆x (f ( x n −1 ) + f (b) ) 2 2 2
=
∆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
a
….(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.
Contoh 4.1. Distilasi Batch di Laboratorium Sebuah distilasi dijalankan secara batch mula-mula diisi 20 lbmol umpan dengan fraksi mol umpan cair benzena xF = 0,32.Umpan kemudian dialirkan dengan kecepatan 10 lbmol/jam, dan input panas diatur agar isi destilasi tetap 20 lbmol. Tentukan waktu yang dibutuhkan untuk memperoleh destilat dengan fraksi mol fase uap yD = 0,4. Hubungan fraksi mol fase uap y dan fase cair x dianggap sesuai dengan Hukum Roult, dengan α = 2,48.
Gambar 4.3. Distilasi Batch di Laboratorium Penyelesaian Neraca massa total F – D = dM = 0 dt
D = F = 10 lbmol/jam
78 Neraca massa benzena F xF – D yD = M dt =
dx w dt
M dx w F x F − D yD
Hukum Roult untuk kesetimbangan yD =
αx w 1 − (α − 1) x w
pada yD = 0,4 akan diperoleh xw = 0,21 Sehingga penyelesaian persamaan
adalah
xw
t=
M dx w F x − D yD F xwo
∫
dengan yD mengikuti kesetimbangan Roult. 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 ; D = F ; M = 20 ; xf = 0.32; xwo = xf ; alpha = 2.48; ydn = 0.4;
%laju alir umpan, lbmol/jam %laju alir destilat, lbmol/jam %massa labu destilasi, lbmol %fraksi mol benzena pada umpan %fraksi mol benzena pada labu destilasi mula-mula %konstanta Roult %fraksi mol benzena pada destilat akhir
% Perhitungan xwn dr pers. Hukum Roult xwn = ydn/(alpha-(alpha-1)*ydn); % 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); % Jumlah t pada seluruh bagian t=trapz(xw,ti)
Diperoleh t = 1,5394 jam
Contoh 4.2. Kecepatan accelerometer Accelerometer adalah alat yang digunakan untuk mengukur kecepatan suatu benda. Alat ini mengintegrasikan sinyal percepatan untuk menghasilkan suatu perkiraan jarak tempuh. Hubungan waktu (detik) dengan percepatan (m/detik2) ditunjukkan pada tabel di bawah. Waktu (detik) Percepatan (m/detik2)
0
1
2
3
4
5
6
7
8
9
10
0
2
4
7
11
17
24
32
41
48
51
Perkirakan kecepatan pada 1, 2, …, 10 detik Penyelesaian 10
v(10) =
∫
10
a(t) dt + v(0) =
0
∫
a(t) dt
0
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]; a=[0 2 4 7 11 17 24 32 41 48 51];
% detik % m^2/detik
v(1)=0;
% keadaan awal
% Perhitungan secara numeris
80 for k=[2:11] v(k)=trapz(t(1:k),a(1:k)); end % Cetak Hasil disp(' ') disp(' t(detik) v(m/detik)') disp([t' v' ])
Keluaran Program t(detik) 0 1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 7.0000 8.0000 9.0000 10.0000
v(m/detik) 0 1.0000 4.0000 9.5000 18.5000 32.5000 53.0000 81.0000 117.5000 162.0000 211.5000
4.2. ATURAN SIMPSON Aturan Simpson berdasarkan pada penggunaan pendekatan polinomial kuadratik suatu fungsi f(x) pada sepasang sub-interval. Integrasi polinomial kuadratik melalui titik (x0, f0), (x1, f1), dan (x2, f2) dengan f0 = f(x0), f1 = f(x1), dan f2 =f(x2) mengikuti persamaan berikut : x1
h
∫ f (x) dx = 3 (f 0 + 4f1 + f 2 )
x0
….(4.3.)
81 f (x)
f(x0) f(x1) f(x2)
h x x0
x1
x2
Gambar 4.4. Konsep Dasar Aturan Simpson Aplikasi aturan Simpson pada seluruh pasangan interval dalam kisaran x0 sampai xn b
∫ f (x) dx
=
h (f 0 + 4f1 + f 2 ) + h (f 2 + 4f3 + f 4 ) + ...... + h (f 2n − 2 + 4fx 2n −1 + f 2n ) 3 3 3
=
h [f 0 + 4(f1 + f 3 + ...... + f 2n −1 ) + 2(f 2 + f 4 + ...... + f 2n −2 ) + f 2n )] 3
a
….(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;
Contoh 4.3 Program Penggunaan Aturan Simpson Kedua alternatif aturan Simpson tersebut digunakan untuk menyelesaikan 1
y = ∫ x 7 dx 0
fungsi persamaan tersebut dalam Matlab diberi nama f43
83 function fv = f43(x) % Fungsi pangkat sederhana % f(x) = x^7 % % Nama File : F43.m % Surakarta, Oktober 2005 % --------------------------------------------------------------fv = x.^7;
Berikut program yang digunakan untuk menguji simp1 % % % % % % % % %
Integrasi Numeris dg Aturan Simpson menggunakan vektor integral x^7 dari 0 sampai 1 --------------------------------------------------------------Surakarta, Oktober 2005 Jurusan Teknik Kimia, Fak. Teknik Universitas Sebelas Maret ***************************************************************
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 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768
nilai integral 0.171875000 0.129150391 0.125278473 0.125017703 0.125001111 0.125000070 0.125000004 0.125000000 0.125000000 0.125000000 0.125000000 0.125000000 0.125000000 0.125000000 0.125000000
waktu = 0.06 detik
Program untuk simp2 % % % % % % % %
Integrasi Numeris dg Aturan Simpson menggunakan loop integral x^7 dari 0 sampai 1 --------------------------------------------------------------Surakarta, Oktober 2005 Jurusan Teknik Kimia, Fak. Teknik Universitas Sebelas Maret
84 %
***************************************************************
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 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768
nilai integral 0.171875000 0.129150391 0.125278473 0.125017703 0.125001111 0.125000070 0.125000004 0.125000000 0.125000000 0.125000000 0.125000000 0.125000000 0.125000000 0.125000000 0.125000000
waktu = 3.46 detik
Terlihat jelas bahwa aturan Simpson yang menggunakan metode konvensional (loop) membutuhkan waktu yang lebih lama daripada menggunakan vektor yang merupakan ciri Matlab.
4.3. KUADRATUR GAUSS Aturan trapesium dan aturan Simpson mempunyai karakteristik perkiraan integral yang didasarkan pada harga-harga fungsi berspasi genap. Konsekuensinya letak titik-titik basis yang dipakai dalam persamaan ini sebelumnya telah ditentukan atau tetap. Misalnya aturan trapesium didasarkan kepada pengambilan luas di bawah garis lurus yang menghubungkan harga-harga fungsi pada kedua ujung interval integrasi. Akibatnya kesalahan yang ditimbulkan cukup besar (Gambar 4.5.a).
85 Misalkan kendala titik-titik basis yang tetap ini diperbaiki dengan menentukan dua titik pada tertentu kurva. Dengan menempatkan titik-titik ini dengan bijaksana, dapat dibuat suatu garis lurus yang mengimbangi kesalahan positif dan negatif, sehingga perkiraan integral dapat diperbaiki (Gambar 4.5.b). Kuadratur Gauss adalah suatu teknik untuk melaksanakan strategi ini. Integral dinyatakan dengan 1
n
−1
i =1
I = ∫ f ( x ) dx = ∑ c i f ( x i )
….(4.5)
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. f(x) = 1
memberikan
1
=2
= c1 + c2
∫ x dx
=0
= c1x1 + c2x2
1
= 2/3
= c1x12 + c2x22
=0
= c1x13 + c2x23
∫ 1 dx
−1
f(x) = x
memberikan
1
−1
f(x) = x2
memberikan
∫x
2
dx
−1
f(x) = x3
memberikan
1
∫x
−1
3
dx
86 f (x)
x (a)
f (x)
x (b)
Gambar 4.5. Konsep Dasar Kuadratur Gauss Penyelesaian 4 persamaan di atas memberikan c1 = c2 = 1
sehingga
x1 = -
1 3
x2 =
1 3
1 ⎛ 1 ⎞ ⎛ 1 ⎞ ⎟⎟ I = ∫ f ( x ) dx = f ⎜⎜ − ⎟⎟ + f ⎜⎜ 3 3 ⎝ ⎠ ⎝ ⎠ −1
Prosedur yang sama dapat dilakukan dengan penggunaan titik yang lebih banyak.
87 Fungsi Matlab
quad
dan
quad8
menggunakan konsep kuadratur
Gauss. Kedua fungsi pengintegralan beroperasi dengan cara yang sama. Keduanya mengevaluasi nilai fungsi yang akan diintegralkan pada interval apapun yang diperlukan untuk memperoleh hasil yang tepat. Bahkan keduanya cenderung untuk membuat perkiraan tingkat tinggi daripada menggunakan trapezoid sederhana. quad8 lebih teliti dari quad. Tabel 4.1. Faktor Bobot c dan Argumen Fungsi x untuk Kuadratur Gauss Titik 2
3
4
5
6
Faktor Bobot
Argumen Fungsi
c1 =
1,000000000 x1 =
c2 =
1,000000000 x2 =
-0,577350269 0,577350269
c1 =
0,555555556 x1 =
-0,774596669
c2 =
0,888888889 x2 =
0
c3 =
0,555555556 x3 =
0,774596669
c1 =
0,347854845 x1 =
-0,861136312
c2 =
0,652145155 x2 =
-0,339981044
c3 =
0,652145155 x3 =
0,339981044
c4 =
0,347854845 x4 =
0,861136312
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
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))])
Fungsi yang akan diintegralkan function f=F44(x) % Fungsi pangkat sederhana % f(x) = x^p % % Nama File : F44.m % Surakarta, Oktober 2005 % --------------------------------------------------------------global p f = x.^p;
Keluaran program Perhitungan integral dari a sampai b (x^p dx) Masukan nilai pangkat p: 2.5 Masukan batas integrasi bawah a : Masukan batas integrasi atas b : Hasil perhitungan secara numeris Hasil perhitungan secara analitis
0 1 : :
0.28571 0.28571
Contoh-contoh lain Contoh 4.5. Kecepatan Reaksi pada Katalis Porous Suatu proses dengan katalis porous mempunyai kecepatan reaksi
89
−
dC = 0,7ηC 2 dt
η=
1,0357 + 0,3173φ 1 + 0,4172φ
φ = 12 C
Tentukan waktu yang dibutuhkan untuk menurunkan konsentrasi dari C = 2 mol/gr katalis menjadi 1 mol/g katalis. Program penyelesaian dengan Matlab % Kecepatan Reaksi pada Katalis Porous % Integral Numeris dengan Aturan Trapesium % % phi = 12 * C^0.5 % 1,0357 + 0,3173*phi % eta = --------------------% 1 + 0,4172*phi % [ - dC ] % t = integral [ ----------- ] % [ 0,7*eta*C^2 ] % Co = konsentrasi awal % Cn = konsentrasi akhir % % --------------------------------------------------------------% Surakarta, Oktober 2005 % Jurusan Teknik Kimia, Fak. Teknik % Universitas Sebelas Maret % *************************************************************** % Data batas integral Co = 2; Cn = 1;
% mol/gr katalis % mol/gr katalis
C = linspace(Cn,Co,101) ;
% kondisi batas dibalik
% Perhitungan integral phi = 12*sqrt(C); eta = (1.0357+0.3173*phi)./(1+0.4172*phi); x=1./(0.7.*eta.*C.^2); % karena kondisi batas dibalik, % tanda negatif hilang t = trapz(C,x); % 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
Contoh 4.6. Penurunan temperatur karena pelepasan panas Suatu campuran gas mempunyai kapasitas panas Cp = 7,053 + 1,2242.10-3 T – 2,6124.10-7 T2
90 T dalam oF dan Cp dalam Btu/lbmol oF. Jika panas yang dilepaskan untuk menurunkan temperatur campuran gas panas tersebut dari 550 oF adalah 2616 Btu/lbmol gas sampai temperatur berapakah campuran gas tersebut dapat didinginkan. T
q=
∫ Cp
dt
To
Sampai berapakah campuran gas tersebut dapat didinginkan ? 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 % % %
Nama File : contoh46.m Surakarta, Oktober 2005 ---------------------------------------------------------------
q = -2616; To = 550;
% BTU/lbmol % oF
% Integral secara numeris aturan trapesium T=linspace(Tn,To,1000); cp=-(7.053+1.2242.*10^-3.*T-2.6124.*10^-7.*T.^2); qtebak=trapz(T,cp); fq=qtebak-q;
Fungsi tersebut dapat dijalankan dari jendela command >> T = fzero('contoh46',150) T = 199.9225
Sehingga temperatur gas adalah 199,9225 OF.
Contoh 4.7. Reaktor Plug Flow Adiabatik Reaktor plug flow beroperasi adiabatik digunakan untuk reaksi fase cair : A Æ produk
91 Fv, Cao, To
A ---> hasil
xout
Gambar 4.6. Reaktor Plug Flow Adiabatik Rekasi orde 2 eksotermis. Perubahan entalpi reaksi, ∆HR konstan. Hubungan tetapan kecepatan reaksi (k) dengan temperatur (T) mengikuti persamaan : 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. Dari neraca massa V=
Fv C Ao
xout
∫
xin
1 k (1 − x ) 2
dx
k = A.exp ⎛⎜ − E ⎞⎟ ⎝ RT ⎠
Dari neraca panas T = To − CAo∆H R x ρCp
Program penyelesaian dengan Matlab function FV=contoh47(To) % Reaktor plug flow beroperasi adiabatik % digunakan untuk reaksi fase cair : A --> produk % Tentukan To sehingga keluar dg konversi xout % Fv [ xout 1 % V = ----- intg [ ---------- dx % Cao [ xin k*(1-x)^2 % E % k = A exp [- ---- ] % RT % Cao*Hr*x % T = To - -----------% rho*Cp % % Nama File : contoh47.m % Surakarta, Oktober 2005
92 %
---------------------------------------------------------------
% Data-data Fv=200; Cao=5; rho=1.1; Cp=0.8; A=3.12*10^8; E=18600; Hr=-15; R=1.987; Vol=8000; xin=0; xout=0.8;
% % % % % % % % % % %
laju alir volum, L/menit konsentrasi umpan, gmol/L densitas, kg/L kapasitas panas, kcal/kg/K konstanta Arrhenius, L/gmol/menit konstanta Arrhenius, cal/gmol panas reaksi, kcal/gmol konstanta gas ideal, cal/gmol/K volume reaktor, L konversi masuk reaktor 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); % Dibandingkan dg Volume sesungguhnya FV=Vol-V;
Fungsi tersebut dapat dijalankan dari jendela command >> Totebakan=300; >> To=fzero('contoh47',Totebakan) To = 360.2898
Contoh 4.8. Pelarutan Butiran Padat Butir-butir padatan A dengan densitas ρ = 2 g/mL, jari-jari awal Ro =2 cm, berjumlah Nb = 40.000, dimasukkan dalam W g solven. Padatan A melarut dengan panas pelarutan λ =100 cal/g. Kelarutan A dalam solven sebagai fungsi suhu mengikuti persamaan 3333 ⎞ ⎛ x S = exp ⎜ 8,8053 ⎟ T ⎠ ⎝
Waktu yang diperlukan padatan untuk melarut dinyatakan dengan persamaan
t=
ρ kX
Ro
∫ (x 0
dr S − x)
Persamaan-persamaan lainnya yang diperlukan, x = (mo – m) / W
93 3
m = 4Π r ρ Nb / 3 T = To +
λ (mo - m) x (W + m) Cp
Jika diketahui W = 100.000 g, kx = 0,01 g/(cm2.dtk) dan To = 350 K, Tentukan waktu (t) yang diperlukan padatan A untuk melarut. Program penyelesaian % % % % % % %
Pelarutan Butiran Padat --------------------------------------------------------------Surakarta, Oktober 2005 Jurusan Teknik Kimia, Fak. Teknik Universitas Sebelas Maret ***************************************************************
global Ro rho Nb To lamda W Cp kx % Data-data Ro=0.5; rho=2; Nb=40000; To=350; lamda=100; W=100000; Cp=1; kx=0.01;
% % % % % % % %
jari-jari awal, cm densitas, g/mL jumlah padatan Temperatur awal, K panas pelarutan, kal/g gram solvent kapasitas panas solvent 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 ---------------------------------------------------------------
global Ro rho Nb To lamda W Cp kx 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
Contoh 4.9. Temperatur Pelarutan Butiran Padat Butir-butir padatan A dengan densitas ρ = 2 g/mL, jari-jari awal Ro = 2 cm, berjumlah Nb = 40.000, dimasukkan dalam W g solven. Padatan A melarut dengan panas pelarutan λ =100 cal/g. Kelarutan A dalam solven sebagai fungsi suhu mengikuti persamaan
3333 ⎞ ⎛ x S = exp ⎜ 8,8053 ⎟ T ⎠ ⎝ Waktu yang diperlukan padatan untuk melarut dinyatakan dengan persamaan
t=
ρ kX
Ro
∫ (x 0
dr S − x)
Persamaan-persamaan lainnya yang diperlukan, x = (mo – m) / W m = 4Π r3 ρ Nb / 3
T = To +
λ (mo - m) (W + m) Cp
x
Jika diketahui W = 100.000 g, kx = 0,01 g/(cm2.dtk) dan tdata = 200 dtk; tentukan suhu masuk To. Suhu masuk To dapat diketahui dengan persamaan berikut, t – tdata = 0 Program Penyelesaian % % % % % % %
Temperatur Pelarutan Butiran Padat --------------------------------------------------------------Surakarta, Oktober 2005 Jurusan Teknik Kimia, Fak. Teknik Universitas Sebelas Maret ***************************************************************
global Ro rho Nb lamda W Cp kx tdat 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)
95 tdat=200; % waktu pelarutan To=fzero(@F49,400)
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 % % %
Nama File : F49.m Surakarta, Oktober 2005 ---------------------------------------------------------------
global Ro rho Nb lamda W Cp kx tdat r=linspace(0,Ro,100); 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); thit=trapz(r,area); fTo=thit-tdat;
Keluaran program To = 347.2318
Contoh 4.10.
Waktu Pengosongan Tangki
Suatu cairan akan dialirkan dari tangki dengan grafitasi melalui pipa berdiameter D. Panjang ekuivalen pipa, Le. Tinggi permukaan cairan pada tangki mula-mula za. Waktu pengosongan tangki dinyatakan dengan persamaan berikut : 2 z
⎛ D ⎞ 2f 1 t = ⎜ t2 ⎟ . ∫ .dz ⎝ D ⎠ z 2i v Persamaan Bernoulli:
z−
f.Le.v 2 v 2 − =0 2.g.D 2g
faktor friksi didekati dengan persamaan empiris :
f=
0,0596 Re 0,215
dengan
96
Re =
ρ .v.D µ
Debit aliran dihitung dengan persamaan : Q=
π 4
.D 2 .v
Data-data yang diketahui : ρ = 1 g/cm3; µ = 0,01 g/cm.dtk; g = 981 cm/dtk2; Dt = 200 cm; za = 600 cm; zf = 200 cm; D = 3 cm; Le = 40.000 cm Program penyelesaian % % % % % % %
Waktu Pengosongan Tangki --------------------------------------------------------------Surakarta, Oktober 2005 Jurusan Teknik Kimia, Fak. Teknik Universitas Sebelas Maret ***************************************************************
global rho D Dt miu Le g % Data-data rho=1; % Densitas, g/cm^3 miu=0.01; % Viskositas, g/cm.dtk g=981; % grafitasi, cm/dtk^2 D=3; % diameter pipa, cm Dt=200 % diameter tangki, cm Le=40000; % panjang ekivalen, cm 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 % --------------------------------------------------------------global rho D Dt miu Le g vo=0.4*sqrt(2*g*z); v=fsolve(@F410F,vo,[],z); fz=1./v;
Program lain function fv=F410F(v,z) % % Nama File : F410F.m % Surakarta, Oktober 2005 % --------------------------------------------------------------global rho D Dt miu Le g Re=rho*v*D/miu;
97 f=0.0596./Re.^0.215; fv=z-f*Le.*v.^2/(2*g*D)-v.^2/(2*g);
Keluaran program waktu = 1.9688e+004
Waktu pengosongan 19.688 detik
5
PENCOCOKAN KURVA
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 hargaharga 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 Tujuan cara akhir regresi kuadrat terkecil adalah mendapatkan konstantakonstanta persamaan sehingga diperoleh jumlah kuadrat kesalahan (SSE = sum of squares of errors) minimum. SSE = ∑ (y data − y pers )2 n
…(5.1)
n =1
Ada beberapa kemungkinan minimasi kesalahan untuk persamaan yang terbaik yaitu : 1.
Minimasi jumlah kesalahan Persamaan dinyatakan dengan n
∑
i =1
n
Ei =
∑
(yi – ao – a1xi)
…(5.2)
i =1
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
Gambar 5.1. Minimasi Kesalahan dengan Persamaan (5.2)
2.
Minimasi jumlah kesalahan absolut Kriteria yang lain adalah meminimalkan jumlah harga absolut selisih kesalahan, dengan persamaan
101 n
∑
n
Ei =
i =1
∑
|yi – ao – a1xi|
…(5.3)
i =1
Gambar 5.2 memperlihatkan mengapa kriteria ini juga kurang baik.
o
o
o o
Gambar 5.2. Minimasi Kesalahan dengan Persamaan (5.3)
3.
Minimasi jumlah kesalahan kuadrat Kriteria ketiga adalah dengan mencocokan sebuah garis terbaik yang meminimalkan jarak titik-titik dengan garis tersebut. Strategi yang digunakan adalah dengan meminimalkan jumlah kuadrat kesalahan, yaitu n
SSE =
∑
Ei2 = ∑ (y i − a o − a1x i ) n
2
n =1
i=1
…(5.4)
5.1.1. REGRESI LINIER Persamaan garis linier, y = a0 + a1x
… (5.5)
Sehingga SSE adalah n
(
SSE = ∑ y data − y pers n =1
)2
SSE = ∑ E i2 = ∑ (y i − a 0 − a1x i )2 n
n
i =1
n =1
… (5.6) … (5.7)
102 Minimasi SSE, jika ∂SSE = 0 dan ∂SSE = 0. ∂a 0 ∂a 1
∂SSE = -2 ∂a 0
∑ ( yi – ao – a1xi ) = 0 ∑ yi - ∑ ao - ∑ a1xi = 0 ∑ yi - n ao - a1 ∑ xi = 0 n ao + a1 ∑ xi = ∑ yi
∂SSE = -2 ∂a 1
… (5.8)
∑ [( yi – ao – a1xi )xi] = 0 ∑ xiyi - ∑ xiao - ∑ a1xi2 = 0 ∑ xiyi - ao ∑ xi - a1 ∑ xi2 = 0 ao ∑ xi + a1 ∑ xi2 = ∑ xiyi
… (5.9)
Penyelesaian pers. (5.8) dan (5.9) a1 = n ∑ x i y i − ∑ x i ∑ y i
… (5.10)
a0 = y − a 1 x
… (5.11)
n ∑ x i2 − (∑ x i ) 2
dengan y dan x adalah rata-rata yi dan xi
KUANTIFIKASI KESALAHAN Kuantifikasi kesalahan dalam regresi kuadrat terkecil dapat dinyatakan dengan persamaan R2 =
St − Sr St
...(5.12)
dengan R adalah koefisien korelasi, dan R2 adalah koefisien determinasi.
dan
St = ∑
(yi - y )2
...(5.13)
Sr = ∑
(yi – a0 – a1xi)2
...(5.14)
Untuk pencocokan yang sempurna Sr = 0, sehingga R2 = 1.
103 LINIERISASI HUBUNGAN YANG TIDAK LINIER Hubungan variabel bebas dan variabel tak bebas tidak selalu merupakan hubungan yang linier, tetapi dapat juga hubungan yang tidak linier namun dapat dibawa ke bentuk hubungan yang linier. Proses ini disebut linierisasi. Contoh linierisasi hubungan yang tidak linier 1.
y=axb ln (y) = ln (a x b) ln (y) = ln (a) + ln (xb) ln (y) = ln (a) + b ln (x) Hubungan variabel bebas dan variabel tak bebas menjadi linier dengan ln (y) = y ln (x) = x ln (a) = a0 b
= a1
sehingga, y = a1x + a0 2.
y = a ebx ln (y) = ln (a ebx) ln (y) = ln (a) + b x Hubungan linier, dengan ln (y) = y x
=x
ln (a) = a0 b
= a1
sehingga, y = a1x + a0 3.
y=a+
b x
Hubungan linier, dengan y =y
1 =x x a = a0
104 b = a1 sehingga, y = a1x + a0 4.
y=
x a + bx
1 a + bx = y x 1 a = +b y x Hubungan linier, dengan
1 =y y 1 =x x b = a0 a = a1 sehingga, y = a1x + a0 5.
y=
ax b+x
1 b+x = y ax 1 a 1 = + y bx a Hubungan linier, dengan
1 =y y 1 =x x 1 = a0 a
105
a = a1 b sehingga, y = a1x + a0 Contoh 5.1. Persamaan BET untuk proses adsorpsi Dalam proses adsorpsi, hubungan logam yang dijerap, q(mg/g adsorben), dengan konsentrasi kesetimbangan C (mg/L) dapat dihubungkan dengan persamaan BET q=
q maks d C ⎡ ⎤ (CS − C )⎢1 + (d − 1) C ⎥ C S⎦ ⎣
Dari suatu penelitian diperoleh data C
0,8
4,88
8,04
16,1
19,25
q
17,23
32,09
46,75
62,90
64,73
Jika diketahui CS = 49,46 mg/L a.
Linierisasikan persamaan BET di atas
b.
Dengan menggunakan metode kuadrat terkecil, tentukan qmaks dan d.
Penyelesaian
q=
q maks d C ⎡ ⎤ (C S − C )⎢1 + (d − 1) C ⎥ CS ⎦ ⎣ ⎛
1 = q
⎞ ⎟ C S ⎟⎠
(C S − C )⎜⎜1 + (d − 1) C ⎝ q maks dC
⎛ C ⎞ ⎜⎜1 + (d − 1) ⎟⎟ CS ⎠ 1 =⎝ 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
C q (C S − C )
y
=
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]; q = [17.23 32.09 46.75 62.90 64.73]; adsorben
% Konsentrasi, mg/L % Logam terjerap, mg/g
n=5; Cs=49.46;
% jumlah data % konstanta BET, mg/L
% Linierisasi y = C./(Cs-C)./q; x = C; % Perhitungan regresi linier xkuad=0; xy=0; for i=1:n xkuad=xkuad+(x(i))^2; xy=xy+x(i)*y(i); end % Konstanta regresi linier a1=(n*xy-sum(x)*sum(y))/(n*xkuad-(sum(x))^2); a0=mean(y)-a1*mean(x); % 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
Gambar 5.3. Keluaran Program Contoh 5.1
Dalam Matlab, fungsi
polyfit
menyelesaikan masalah pencocokan kurva untuk
kuadrat terkecil. Penggunaan fungsi
polyfit
akan menghasilkan suatu
persamaan polinomial yang paling mendekati data. Jika derajat fungsi
polyfit
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]; q = [17.23 32.09 46.75 62.90 64.73]; adsorben
% Konsentrasi, mg/L % Logam terjerap, mg/g
Cs=49.46;
% konstanta BET, mg/L
% 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
Contoh 5.2. Tekanan uap toluena pada persamaan Antoine Data tekanan uap toluena dalam OC dan Torr adalah T (OC)
-26,7
-4,4
6,4
18,4
31,8
40,3
p (torr)
1
5
10
20
40
60
Tentukan konstanta-konstanta persamaan Antoine yang menyatakan hubungan T dan p sebagai berikut ⎛ b ⎞ p = exp⎜⎜ a + ⎟⎟ T + 273 , 2 ⎝ ⎠
Penyelesaiannya b ⎛ ⎞ p = exp⎜ a + ⎟ T + 273,2 ⎠ ⎝
ln(p) = a +
b T + 273,2
109 y=a+bx untuk y = ln(p) dan x =
1 T + 273,2
% Tekanan uap toluena pada persamaan Antoine % [ b ] % p = exp [ a + -----------] % [ T + 273,2 ] % Linierisasi % b % ln ( p ) = a + ----------% T + 273,2 % 1 % y = ln ( p ) x = ----------% T + 273,2 % y = b x + a % Penyelesaian dengan fungsi polyfit % --------------------------------------------------------------% Surakarta, Oktober 2005 % Jurusan Teknik Kimia, Fak. Teknik % Universitas Sebelas Maret % *************************************************************** % Data - data p = [ 1 5 10 20 40 60]; T = [ -26.7 -4.4 6.4 18.4 31.8 40.3];
% dalam C % 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
Sehingga
p
⎛ 4726,0 ⎞ = exp⎜⎜19,1905 − ⎟ T + 273,2 ⎟⎠ ⎝
Contoh 5.3. Resistansi Hidrolik Sebanyak 15 L cairan ditempatkan dalam tangki. Ketika katup pengeluaran dibuka cairan akan keluar dengan kecepatan tertentu. Kecepatan ini tergantung pada volum cairan di dalam tangki. Kecepatan pengeluaran dicatat dengan cara mengukur waktu yang diperlukan untuk mengisi penuh suatu gelas ukur. Hasil pengukuran ditunjukkan pada tabel di bawah ini.
110
Gambar 5.4. Resistensi Hidrolik
Volum cairan (L)
Waktu untuk mengisi gelas ukur (detik)
15
6
12
7
9
8
6
9
Jika persamaan Torricelli adalah f = rV1/2 dengan
f
= laju alir cairan melalui katup (L/detik)
V
= volum cairan di dalam tangki (L)
r
= konstanta
Tentukanlah nilai r untuk persamaan Torricelli dari data di atas. Perkirakan waktu yang dibutuhkan untuk memenuhi gelas ukur jika terdapat 36 L di dalam tangki !
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]; waktu = [9 8 7 6 ]; laju_alir = 1./waktu; % p m r
% volume, L % waktu pengisian, detik % laju alir, 1/detik
Penggunaan polyfit = polyfit(log10(V),log10(laju_alir),1); = p(1); = 10^p(2)
% Evaluasi persamaan polyfit x = [6:0.01:40]; y = r*x.^m; subplot(2,1,1) loglog(x,y,'k-',V,laju_alir,'ko','linewidth',2) xlabel('Volum') ylabel('Laju alir') axis([5 15 0.1 0.3]) % 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
waktu
Laju alir
112
Gambar 5.5 Keluaran Program Contoh 5.3
5.1.2. REGRESI POLINOMIAL 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 SSE = ∑ (y data − y pers )2 n
....(5.16)
n =1
(
n
n
i =1
n =1
SSE = ∑ E2 = ∑ y i − a 0 − a1x i − a 2 x i2 − .... − a m x im i ∂SSE = -2 ∂a 0
2
)
2
∑ ( yi – ao – a1xi - a2 x i - .... - am x im ) = 0
....(5.17)
113 ∂SSE = -2 ∂a 1
∑xi( yi – ao – a1xi - a2 x i - .... - am x im ) = 0
∂SSE = -2 ∂a 2
∑ x i ( yi – ao – a1xi - a2 x i - .... - am x im ) = 0
2
2
2
m
2
. . . .
∂SSE = -2 ∂a m
∑ xi ( yi – ao – a1xi - a2 x i - .... - am x im ) = 0
2
a0n + a1∑xi + a2∑ xi + .... + am∑ xim = ∑yi a0∑xi + a1∑ xi + a2∑ xi + .... + am∑ xim + 1 = ∑xiyi 2
3
a0∑ xi + a1∑ xi + a3∑ xi + .... + am∑ xim + 2 = ∑ xi yi 2
3
4
2
. . . . 2m = ∑ m y a0∑ xim + a1∑ xim + 1 + a2∑ xim + 2 + .... + am∑ xi xi i
Diperoleh persamaan m aljabar dengan m bilangan yang tidak diketahui. Persamaan-persamaan tersebut dapat diselesaikan dengan metode-metode yang telah dijelaskan pada Bab II. Dalam bentuk matriks
∑ ∑
∑ xi ∑ x i2 ∑ x 3i
∑
∑
⎡ n ⎢ ⎢ xi ⎢ x2 i ⎢ ⎢ .... ⎢ m ⎢⎣ x i
x im +1
∑ x i2 ∑ x 3i ∑ x i4 ∑
x im + 2
....
....
∑ x im ⎤⎥ ⎡⎢ a 0 ⎤⎥ ⎡⎢ ∑ yi ⎤⎥ ∑ x im +1 ⎥ ⎢ a1 ⎥ = ⎢ ∑ x2i yi ⎥ ∑ xim + 2 ⎥⎥ ⎢⎢ a 2 ⎥⎥ ⎢⎢ ∑ x i yi ⎥⎥ ∑
x i2 m
⎥ ⎥ ⎥⎦
⎢ .... ⎥ ⎢a ⎥ ⎣ m⎦
⎢ .... ⎥ ⎢ xmy ⎥ ⎣∑ i i ⎦
114 Fungsi
dari Matlab dapat digunakan untuk derajat n = 2, yang disebut
polyfit
polinomial kuadratis. Hasil fungsi
polyfit
adalah vektor baris yang berisi
koefisien-koefisien polinomial. Selain fungsi
polyfit,
Matlab juga mempunyai fungsi
polyval
untuk
mengevaluasi polinomial pada tiap titik yang ingin diketahui nilainya.
Contoh 5.4. Persamaan Fit untuk Data Tekanan Uap Benzena Data tekanan uap murni benzena pada berbagai temperatur ditunjukkan pada tabel. Temperatur
Tekanan
Temperatur
Tekanan
(OC)
(mmHg)
(OC)
(mmHg)
-36,7
1
15,4
60
-19,6
5
26,1
100
-11,5
10
42,2
200
-2,6
20
60,6
400
7,6
40
80,1
760
Hubungan tekanan sebagai fungsi temperatur dapat dinyatakan sebagai persamaan empiris polinomial sederhana sebagai berikut : P = a0 + a1T + a2T2 + a3T3 + … + anTn dengan a0, a1, …, an adalah parameter yang ditentukan dengan regresi dan n adalah orde polinomial. Persamaan lain yang umum digunakan adalah persamaan Clausius-Clapeyron : log(P) = A −
B T + 273,15
dengan P adalah tekanan uap dalam mmHg dan T adalah temperatur dalam OC. Parameter A dan B ditentukan dengan regresi. Program pertama untuk penyelesaian persamaan empiris polinomial % Persamaan Fit untuk Data Tekanan Uap Benzena % Hubungan tekanan sebagai fungsi temperatur % sebagai persamaan empiris polinomial sederhana % P = a0 + a1*T + a2*T^2 + a3*T^3 + ... + an*T^n % Penyelesaian dengan menggunakan fungsi polyfit % Persamaan polinomial tersebut kemudian dievaluasi
115 % % % % % %
dengan fungsi polyval --------------------------------------------------------------Surakarta, Oktober 2005 Jurusan Teknik Kimia, Fak. Teknik Universitas Sebelas Maret ***************************************************************
% 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]; % Penggunaan fungsi polyfit m = 3; %orde polinomial p = polyfit(T,vp,m); % Evaluasi persamaan polinomial z = polyval(p,T); % nilai vp dengan persamaan polinomial % Cetak hasil plot(T,z,'k-',T,vp,'ko','linewidth',2) xlabel('T(C)') ylabel('vp(mmHg)')
vp(mmHg)
Keluaran program
Gambar 5.6. Keluaran Program Contoh 5.4.a
Program penyelesaian untuk persamaan Clausius-Clapeyron
116 % Persamaan Fit untuk Data Tekanan Uap Benzena % Hubungan tekanan sebagai fungsi temperatur % sebagai persamaan empiris polinomial sederhana % P = a0 + a1*T + a2*T^2 + a3*T^3 + ... + an*T^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 % 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); % Penggunaan fungsi polyfit p = polyfit(x,y,1); % 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
vp(mmHg)
117
Gambar 5.7 Keluaran Program Contoh 5.4.b
Dari kedua grafik terlihat persamaan polinomial memberikan hasil yang lebih baik.
Contoh 5.5 Persamaan Kualitatif Konversi dan Kecepatan Reaksi pada Reaktor Alir Pipa Data hubungan konversi reaksi x dengan kecepatan reaksi pada reaktor alir pipa digambarkan pada tabel. Tentukan persamaan kualitatif hubungan keduanya ! X
0,0
0,1
0,2
0,3
0,4
-ra
0,0053
0,0052
0,0050
0,0045
0,0040
X
0,5
0,6
0,7
0,8
0,85
-ra
0,0033
0,0025
0,0018
0,00125
0,001
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]; % Fungsi polyfit orde 3 p=polyfit(X,ra,3) % Evaluasi persamaan polinomial f=polyval(p,X); % Plot data percobaan dan perhitungan plot(X,ra,'ko',X,f,'k-','linewidth',2) xlabel('x'); ylabel('y'); axis([0 0.85 0 0.006]); title('Regresi Polinomial');
%Xmin Xmaks Ymin Ymaks
Keluaran program
Gambar 5.8 Keluaran Program Contoh 5.5
119
5.1.3. REGRESI LINIER MULTIVARIABEL Suatu pengembangan regresi linier yang berguna adalah kasus untuk y sebagai fungsi linier dari dua atau lebih variabel, yaitu : y = a0 + a1x1 + a2x2 + a3x3 + .... + akxk
....(5.18)
sehingga SSE = ∑ (y data − y pers )2 n
....(5.19)
n =1
SSE =
2 2 ∑ E i = ∑ (yi − a 0 − a1x1,i − a 2 x 2,i − .... − a k x k ,i )
n
n
i =1
n =1
∂SSE ∂SSE ∂SSE ∂SSE = 0, = 0, = 0, ...., = 0. ∂a 0 ∂a 1 ∂a 2 ∂a k a0n + a1∑x1,i + a2∑x2,i + .... + ak∑xk,i
= ∑yi
2
a0∑x1,i + a1∑ x1, i + a2∑x1,ix2,i + .... + ak∑x1,ixk,i = ∑yix1,i 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
Dalam bentuk matriks
∑ ∑
∑ x1,i ∑ x 2, i 2 ∑ x1,i ∑ x1,i x 2,i ∑ x 2,i x1,i ∑ x 22,i
∑
∑
⎡ n ⎢ ⎢ x1,i ⎢ x 2 ,i ⎢ ⎢ .... ⎢ ⎣⎢ x k ,i
x k ,i x1,i
∑
....
x k ,i x 2,i ....
∑ x k,i ⎤⎥ ⎡a 0 ⎤ ⎡ ∑ yi ⎤ ∑ x1,i x k ⎥ ⎢⎢ a 1 ⎥⎥ ⎢⎢ ∑ x1,i yi ⎥⎥ ∑ x 2,i x k ⎥⎥ ⎢⎢a 2 ⎥⎥ = ⎢⎢ ∑ x 2,i yi ⎥⎥ ∑
x 2k ,i
⎥ ⎥ ⎦⎥
⎢ .... ⎥ ⎢a k ⎥ ⎣ ⎦
⎢ .... ⎥ ⎢ x y⎥ ⎣∑ m,i i ⎦
....(5.20)
120 Penyelesaian dapat dilakukan dengan metode-metode yang telah dijelaskan pada Bab II.
Contoh 5.6. Breaking Strength dan Komposisi Logam Gaya tensi y diperlukan untuk mematahkan batang besi yang diberi campuran unsur 1 dan 2 sebagai komposisi persentase x1dan x2. Tabel di bawah menunjukkan data-data y untuk berbagai komposisi campuran unsur 1 dan 2. Hubungan y dengan x1 dan x2 dinyatakan sebagai y = a0 + a1y1 + a2y2. Breaking Strength (kN)
unsur 1 (%)
unsur 2 (%)
Y
x1
x2
7,1
0
5
19,2
1
7
31
2
8
45
3
11
Tentukan a0, a1, dan a2. 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 berguna untuk memperkirakan harga-harga antara dari datadata yang telah diketahui dengan tepat. Interpolasi yang paling populer adalah polinomial interpolasi diferensiasi terbagi Newton. Sebelum pembahasan interpolasi polinomial secara umum, akan dibahas interpolasi linier (versi pertama) dan interpolasi kuadratik (versi kedua).
5.2.1. INTERPOLASI SATU DIMENSI 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
Gambar. 5.9 Konsep Dasar Interpolasi Linier
122 f (x) − f (x 0 ) = f (x1 ) − f (x 0 ) x1 − x 0 x − x0
f(x) = f(x0) + f ( x 1 ) − f ( x 0 ) (x –x0) (x1 − x 0 )
....(5.21)
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 kedua f[xi,xj,xk] = f[xi, xj] − f[xj, xk] xi − xj
. . . Differensiasi terbagi ke-n f[xn,xn-1,....,x1,x0] = f [ x n , x n −1 ,..., x1 ] − f [ x n −1 , x n − 2 ,..., x 0 ] xn − x0
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)
Interpolasi polinomial order 3
i
xi
f(xi)
0
x0
f(xi)
1
x1
f(x1)
I
II
III
f[x1,x0] f[x2,x1,x0] f[x2,x1] 2 3
x2
f(x2)
x3
f(x3)
f[x3,x2]
f[x3,x2,x1,x0] f[x3,x2,x1]
Contoh 5.7. Densitas asam asetat pada 25 OC Dari data densitas asam asetat pada 25 OC, tentukanlah densitas asam asetat pada konsentrasi 65 % ! Data densitas asam asetat pada 25 OC Konsentrasi Densitas
124 (%)
(g/cm3)
0
0,997
10
1,011
20
1,024
30
1,035
40
1,045
50
1,053
60
1,06
70
1,064
80
1,065
90
1,061
100
1,044
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]; rho = [1.06 1.064 1.065 1.061 1.044];
% konsentrasi, % % Densitas, g/cm^3
% Jumlah data yang digunakan n=5; % orde tertinggi adalah n - 1 % 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
Hasil interpolasi polinomial Newton untuk x = 65 ---------------------------Nilai densitas dengan Polinomial Newton orde 0 = Nilai densitas dengan Polinomial Newton orde 1 = Nilai densitas dengan Polinomial Newton orde 2 = Nilai densitas dengan Polinomial Newton orde 3 = Nilai densitas dengan Polinomial Newton orde 4 =
1.06 1.062 1.0624 1.0623 1.0625
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
Contoh 5.8. Konduktivitas termal aseton Bennett & Meyers memberikan data-data konduktivitas termal aseton. Hubungan ln (k) dan ln (T) mendekati persamaan garis lurus, dengan T dalam R (R = OF + 460). Tentukan nilai k pada 300 OF !
126
k [BTU/jam.ft.OF]
T (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]; T = [32 115 212 363]+460;
% BTU/jam.ft.oF % temperatur, R
% Hubungan k dan T akan linier dalam bentuk ln k dan ln T ln_k = log(k); ln_T = log(T); % 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
Konduktivitas termal aseton pada 300 OF adalah 0,0126 BTU/jam.ft.OF
5.2.2. INTERPOLASI SPLINE
127 Polinomial orde ke-n telah dapat digunakan untuk interpolasi di antara n + 1 titik data. Misalnya untuk delapan titik dapat diturunkan suatu polinomial orde ke tujuh yang sempurna. Kurva ini akan melalui semua titik-titik data yang ada. Tetapi ada kasus di mana fungsi-fungsi ini dapat membawa hasil yang keliru. Suatu pendekatan alternatif adalah menerapkan polinomial yang lebih rendah terhadap sub kumpulan titik data. Polinomial penyambungan demikian disebut fungsi spline Kurva orde tiga fungsi spline dilaksanakan untuk menyambung setiap pasang titik-titik data yang dinamakan
spline kubik
Fungsi-fungsi ini mempunyai
perilaku tambahan yang menghubungkan antara persamaan-persamaan secara visual tanpa halangan.
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) dengan mi =
xn-1 # x # xn
f ( x i +1 ) − f ( x i ) 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
a1x2 + b1x + c
interval 1
x0 i=0
a2x2 + b2x + c
interval 2
a3x2 + b3x + c
interval 3
x1 x2 i=1 i=2 Gambar 5.10. Konsep Dasar Spline Kuadratik
x3 i=3
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.
Contoh 5.9. Viskositas larutan MDEA Larutan metil dietanol amin (MDEA) banyak digunakan untuk absorpsi gas seperti H2S dan CO2. Dalam suatu menara absorpsi, perlu diketahui viskositas 43 % larutan metil dietanol amin (MDEA) dalam air pada 45OC. Untuk itu, ingin dipergunakan persamaan berikut: ln µ = B1 +
B2 + B3T T
129 Dengan µ dalam poise, dan T dalam K. Bi adalah parameter dengan ketentuan sebagai berikut: Fraksi berat
B1
B2.10-3
B3.102
0
-19,52
3,913
2,112
0,1
-22,14
4,475
2,470
0,2
-25,16
5,157
2,859
0,3
-28,38
5,908
3,255
0,4
-31,52
6,678
3,634
0,5
-34,51
7,417
MDEA
3,972 O
Tentukan viskositas larutan pada 43 % larutan dan 45 C.
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 % *************************************************************** % Data parameter viskositas sebagai fungsi x x = [0 0.1 0.2 0.3 0.4 0.5]; B1 = [-19.52 -22.14 -25.16 -28.38 -31.52 -34.51]; B2 = [3.913 4.475 5.157 5.908 6.678 7.417]*10^3; B3 = [2.112 2.470 2.859 3.255 3.634 3.972]*10^-2; % Data x dan T yang ingin dicari viskositasnya x_i = 0.43; % Konsentrasi T_i = 45+273.15; % Temperatur, K % Konstanta B1, B2, dan B3 pada 0.43 ditentukan terlebih dahulu % Interpolasi nilai B pada konsentrasi 0.43 B1_i = interp1(x,B1,x_i,'spline'); B2_i = interp1(x,B2,x_i,'spline'); B3_i = interp1(x,B3,x_i,'spline'); % Viskositas dihitung viscA = exp(B1_i + B2_i/T_i + B3_i*T_i); % Viscositas pada 45 C ditentukan terlebih dahulu % Viskositas pada 45 C dihitung visc = exp(B1 + B2./T_i + B3.*T_i) % Interpolasi viskositas pada konsentrasi 0.43
130 viscB = interp1(x,visc,x_i,'spline'); % 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
5.2.3. INTERPOLASI DUA DIMENSI Interpolasi dua dimensi mempunyai prinsip yang sama dengan interpolasi satu dimensi. Perbedaanya adalah interpolasi dua dimensi menginterpolasikan fungsi dua variabel z = f(x,y). ZI = interp2 (X,Y,Z,XI,YI)
adalah interpolasi untuk menentukan nilai
ZI,
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.
Contoh 5.10. Beda entalpi uap yang didinginkan Tentukan berapakah ∆H (beda entalpi) dari uap yang didinginkan menjadi 480 0F dan 52 psia, jika kondisi mula-mula adalah 640 0F dan 92 psia !
50
Entalphi, H dalam Btu/lb T (0F) 400 500 600 1258,7 1282,6 -
55
1258,2
1282,2
-
-
90
-
-
1328,7
1378,1
p (psia)
700 -
131 95
-
-
1328,4
1377,8
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]; po = [90 95]; Ho = [1328.7 1378.1 1328.4 1377.8]; H1 = interp2(To,po,Ho,640,92) % Kondisi akhir Tn = [400 500]; pn = [50 55]; Hn = [1258.7 1282.6 1258.2 1282.2]; H2 = interp2(Tn,pn,Hn,480,52) % Perhitungan beda entalpi del_H = H2 - H1
Keluaran program H1 = 1.3483e+003 H2 = 1.2777e+003 del_H = -70.6880
% Temperatur, oF % Tekanan, psia % Entalphi, BTU/lb % Interpolasi 2 dimensi % Temperatur, oF % Tekanan, psia % Entalphi, BTU/lb % Interpolasi 2 dimensi
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.
6.1. PEMOGRAMAN LINIER Bentuk umum Minimasi cTx Subyek Ax = b dan x ≥ 0
134 dengan x adalah vektor kolom n komponen yang ingin ditentukan nilainya. Konstanta yang diberikan sistem disediakan oleh vektor kolom b dengan m komponen, matriks A ukuran m x n, dan vektor kolom c dengan n komponen. Seluruh
persamaan
dan
fungsi
berada
dalam
bentuk
linier.
Tujuan
keseluruhannya adalah minimasi suatu fungsi linier cTx yang disebut sebagai objective function. Penyelesaian secara detail tidak dijelaskan disini. Tetapi program berikut dapat digunakan untuk menyelesaikan persoalan pemograman linier. 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) % % %
Nama File : proglin.m Surakarta, Oktober 2005 ---------------------------------------------------------------
% Menyediakan matriks-matriks yang mengosongkannya x2=[ ]; x=[ ]; [m n]=size(A); % Mengeset kondisi awal aplus1=b-sum(A(1:m,:)')'; cplus1=1000000; A=[A aplus1]; c=[c cplus1]; B=[ ]; n=n+1; x0=ones(1,n)'; x=x0; alpha=0.0001; lambda=zeros(1,m)'; iter=0; % Langkah utama while abs(c*x-lambda'*b)>tol x2=x.*x; D=diag(x); D2=diag(x2); AD2=A*D2; lambda=(AD2*A')\(AD2*c'); dualres=c'-A'*lambda; normres=norm(D*dualres); for i=1:n if dualres(i)>0 ratio(i)=normres/(x(i)*(c(i)-A(:,i)'*lambda)); else ratio(i)=inf; end end R=min(ratio)-alpha; x1=x-R*D2*dualres/normres; x=x1; basiscount=0; B=[ ]; basic=[ ]; cb=[ ]; for k=1:n if x(k)>tol basiscount=basiscount+1; basic=[basic k]; end
135 end if basiscount==m for k=basic B=[B A(:,k)]; cb=[cb c(k)]; end primalsol=b'/B'; xsol=primalsol; break end iter=iter+1; end objective=c*x
Contoh 6.1. Produksi Motor Bahan Bakar Padat Pabrik kimia membuat dua tipe kecil motor bahan bakar padat sebagai uji coba. Motor A mempunyai keuntungan $ 3 per motor, dan motor B mempunyai keuntungan $ 4 per motor. Tersedia waktu proses total 80 jam per minggu untuk memproduksi kedua motor. Rata-rata 4 jam per motor untuk memproduksi motor A dan hanya 2 jam per motor untuk memproduksi B. Tetapi karena material B lebih beracun daripada A, waktu penyiapan motor B membutuhkan 5 jam per motor sedangkan motor A hanya 2 jam per motor. Waktu yang tersedia untuk penyiapan adalah 120 jam per minggu. Tentukan jumlah poduksi masing-masing motor untuk menghasilkan keuntungan maksimal. Objective function dan persamaan batas adalah Maksimum keuntungan = 3A + 4B atau
Minimasi - keuntungan = - 3A – 4B Subyek 4A + 2B # 80 2A + 5B # 120 A, B ≥ 0
% Produksi Motor Bahan Bakar % Pemograman linier % Minimasi - keuntungan = - 3A - 4B % Subyek 4A + 2B <= 80 Waktu proses % 2A + 5B <= 120 Waktu persiapan % A, B >= 0 % % --------------------------------------------------------------% Surakarta, Oktober 2005 % Jurusan Teknik Kimia, Fak. Teknik % Universitas Sebelas Maret % *************************************************************** % Data-data c=[-3 -4]; a=[4 2; 2 5];
136 b=[80 120]'; % 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
Keuntungan maksimal diperoleh adalah $ 110 per minggu dari produksi 10 motor A dan 20 motor B per minggu
6.2. METODE GOLDEN SECTION 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 Program optimasi dengan metode golden section function [f,a]=golden(func,p,tol) % Program ini bertujuan mencari nilai minimum satu variabel % fungsi non linier dg metode golden section % % func adalah nama fungsi non linier % p adalah vektor 2 elemen untuk kisaran yang dicari % tol adalah toleransi % a adalah nilai optimum dari x % f adalah nilai minimum fungsi pada x = a % % %
Nama File : golden.m Surakarta, Oktober 2005 ---------------------------------------------------------------
if p(1)
tol x=[a+(1-g)*r a+g*r]; y=feval(func,x); if y(1)
138 l = 0,618
l l
XA
XP
XQ
XB
l
XA
XP
XQ
XB
l
XA
XP XQ
XB
Gambar 6.1. Optimasi dengan Metode Golden Section
Contoh 6.2. Ekstraksi Asam Benzoat dari Limbah Industri Suatu industri menghasilkan 10.000 lb/jam limbah yang mengandung 0,002 lb asam benzoat/lb air. Asam benzoat berharga $ 0,4/lb saat dalam phase benzena & harga benzena $ 0,001/lb. Benzena larut dalam phase air dalam jumlah 0,07 lb/lb air. Limbah industri tidak bernilai baik sebelum dan sesudah ditambah benzena. Distribusi asam benzoat di antara 2 phase sesuai dengan distribusi y = 4x, dengan y dan x didefinisikan dalam gambar 6.2.
=
F xo (4W + 0,79F)
a.
Buktikan bahwa: x
b.
Buktikan bahwa keuntungan (P) = 0,4F(xo – x) –0,001W
c.
Tentukan W hingga diperoleh P maksimum, dengan metode lima titik
139 xo = 0,002 lb as. benzoat/ lb air F = 10.000 lb air/jam
W = lb benzena / jam
Phase benzena y lb as. benzoat/lb benzena
Phase air x lb as.benzoat / (lb air + lb benzena larut) Gambar 6.2. Proses Ekstraksi Asam Benzoat dengan Benzena 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 x=
Fxo
(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 c. Jumlah benzena (W) optimal untuk mendapatkan keuntungan (P) maksimal P
= 0,4F(xo – x) – 0,001W = 0,4F(xo –
Fxo ) – 0,001W (4W + 0,79F)
= 0,4.10000 (0,002 -
=8-
80000
(4W + 7900)
10000.0,002
(4W + 0,79.10000)
) – 0,001.W
- 0,001W
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 % % %
Nama File : contoh62.m Surakarta, Oktober 2005 ---------------------------------------------------------------
% Data-data xo=0.002; F=10000;
% Konsentrasi asam benzoat pada limbah % 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; % Program maksimasi diubah menjadi minimasi fw=1./P;
Langkah untuk menjalankan program dan hasilnya adalah : >> [f,x]=golden('contoh62',[2400 2550],0.00001) 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)
dari fungsi
fun
pada interval
dimulai pada
x0
dan menentukan nilai minimasi
x1 < x < x2. fun
adalah fungsi dengan input
x x
dan keluaran adalah evaluasi nilai F pada x .
Contoh 6.3. Optimasi Konversi pada Reaktor Batch Reaksi fase cair orde 2, A Æ B dijalankan dalam reaktor batch isotermal. Konstanta kecepatan reaksi, k = 0,025 L/(gmol menit). Umpan A dengan konsentrasi awal, CAO = 2 gmol/L. Waktu bongkar isi reaktor (tp) 45 menit. Waktu siklus (ts) = tr + tp dengan tr adalah waktu reaksi. Waktu reaksi dihitung dari persamaan kecepatan reaksi − dC A = k.C 2 . A dt
xA , dengan CA=CAO(1 - xA). kC AO (1 − x A )
a.
Buktikan waktu reaksi adalah tr =
b.
Dengan persamaan reaksi A Æ B, diketahui jumlah B terbentuk adalah CB = CAO xA, Buktikan jumlah B terbentuk persatuan waktu siklus adalah
CB 0,1.x A (1 − x A ) = ts x A + 2,25(1 − x A ) c.
Tentukan konversi A yang memberikan jumlah B terbentuk persatuan waktu siklus maksimum.
d.
Tentukan waktu reaksi yang memberikan jumlah B terbentuk persatuan waktu siklus maksimum.
Penyelesaian a.
−
dC A = k.C 2A dt Ca
− ∫
dC A
2 Cao C A
t
= k ∫ dt 0
1 - 1 = kt C A C Ao
142
1 = kt 1 C Ao (1 − x A ) C Ao xA = kt C Ao (1 − x A ) tr = b.
xA kC AO (1 − x A )
CB = ts
C Ao x A 1 kC Ao
⎛ xA ⎜⎜ ⎝1− xA
⎞ ⎟⎟ + tp ⎠
= C Ao x A kC Ao (1 − x A ) x A + tp kC Ao (1 − x A ) =
c.
0,1.x A (1 − x A ) x A + 2,25(1 − x A )
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; k = 0.025; tp = 45;
% gmol/L % L/(gmol.menit) % menit
% Interval konversi xo=0.01; % konversi minimal yang mungkin terjadi xn=0.99; % konversi maksimal yang mungkin terjadi % Perhitungan konversi optimal x_opt=fminbnd('F63',xo,xn)
Fungsi matlab function Cb_ts_min=F63(x) % Program ini berisi fungsi untuk menghitung
143 % % % %
B terbentuk per satuan waktu siklus Nama File : F63.m Surakarta, Oktober 2005 ---------------------------------------------------------------
global k Cao tp tr = x/(k*Cao*(1-x)); ts = tp + tr; Cb_ts = Cao*x/ts; Cb_ts_min = 1/Cb_ts;
% % % %
Waktu reaksi Waktu siklus Maksimum B terbentuk per waktu siklus Program minimasi
Keluaran program x_opt = 0.6000
Konversi optimal adalah 0,6 d.
tr =
xA 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.
Contoh 6.4. Produksi Optimal
Seorang engineer ingin menentukan tingkat produksi yang optimal. Jika ia memproduksi barang lebih banyak daripada yang dapat ia jual, maka keuntungan yang diperoleh tidak sebanyak yang diharapkan. Data pabrik menunjukkan bahwa biaya tetap (fixed cost) produksi $ 30.000 per tahun tidak tergantung banyak barang yang diproduksi. Biaya tambahan adalah $ 2.000 per unit barang. Penjualan berfluktuasi 25 – 50 unit per tahun tanpa ada data kecenderungan penjualan. Harga barang tidak bisa lebih dari $ 4.000 per unit. Tentukan jumlah unit barang yang diproduksi setiap tahun, dengan asumsi satu unit barang dijual dengan harga $ 4.000 sepanjang tahun. Asumsikan harga barang turun menjadi $ 1.000 per unitnya pada akhir tahun jika barang tersebut tidak terjual. Program matlab untuk persoalan di atas adalah
144 % Produksi optimal % Perhitungan jumlah unit barang yang diproduksi setiap tahun % Untuk mendapatkan keuntungan maksimal % % --------------------------------------------------------------% Surakarta, Oktober 2005 % Jurusan Teknik Kimia, Fak. Teknik % Universitas Sebelas Maret % *************************************************************** n = 5000; %Jumlah simulasi random level = [25:50]; %vektor tingkat produksi awal cost = 30000+2000*level; %biaya for k = 1:26 cum_profit = 0; for m = 1:n demand = floor(rand*(50-25)+26); if demand >= level(k) income = 4000*level(k); else income = 4000*demand+1000*(level(k)-demand); end profit = income-cost(k); cum_profit = cum_profit+profit; end expected_profit = cum_profit/n; p(k,1) = level(k); p(k,2) = expected_profit; end plot(p(:,1),p(:,2),'o',p(:,1),p(:,2),'-') xlabel('Jumlah unit'),ylabel('Profit ($)')
loop k menunjukkan keuntungan produksi pada berbagai jumlah unit produksi
yaitu antara 25 – 50. loop m menunjukkan jumlah simulasi secara acak. Variabel demand menunjukkan jumlah permintaan untuk produksi. Jika permintaan lebih
besar daripada jumlah produksi, maka seluruh barang akan dijual dan incomenya adalah $ 4.000 kali jumlah barang. Jika income lebih sedikit daripada produksi barang, maka income adalah $ 4.000 kali jumlah barang terjual ditambah $ 1.000 kali jumlah barang yang tidak terjual. Pada setiap permintaan yang acak, maka profit adalah selisih pdapatn dan biaya. profit_kum adalah profit kumulatif
keuntungan untuk seluruh simulasi acak. expected_profit adalah profit kumulatif rata-rata yaitu profit_kum dibagi simulasi acak. Keluaran program
Profit ($)
145
Gambar 6.3. Keluaran Program Contoh 6.4
6.3. OPTIMASI MULTIVARIABEL Untuk optimasi multivariabel, Matlab menyediakan fminsearch. Untuk memanggil fminsearch dapat diikuti langkah berikut: x = fminsearch (fun,x0)
dimulai pada x0untuk menemukan x
optimal pada fungsi fun. fun menerima input x, dan keluar adalah F yang dievaluasi pada x. x0dapat berupa scalar, vektor, atau matriks.
Contoh 6.5. Persamaan Fit untuk Data Tekanan Uap Benzena
Contoh 5.4 tentang hubungan tekanan uap benzena dan temperatur, dapat pula digunakan persamaan Antoine log(P) = A −
B T+C
Parameter A, B, dan C harus ditentukan dengan regresi non linier.
146 Program % Persamaan Fit untuk Data Tekanan Uap Benzena % Regresi non linier % B % log (P) = A - ------% T + C % Penyelesaian dengan fungsi fminsearch % --------------------------------------------------------------% Surakarta, Oktober 2005 % Jurusan Teknik Kimia, Fak. Teknik % Universitas Sebelas Maret % *************************************************************** 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]; %Tebakan untuk nilai parameter Ko = [10 2000 273] ; % 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 % Perhitungan minimasi SSE f = log10(vp)-K(1)+K(2)./(T+K(3)); ff=sum(f.*f);
Keluaran program K = 5.7673
677.0928
Artinya A = 5,7673
153.8852
147 B = 677,0928
vp(mmHg)
C = 153,8852
Gambar 6.4. Keluaran Program Contoh 6.5
Contoh 6.6. Hidrogenasi Etilen menjadi Etana Kecep. Reaksi
PE
PEA
PH
(mol/kgkat.detik)
(atm)
(atm)
(atm)
1,04
1
1
1
3,13
1
1
3
5,21
1
1
5
3,82
3
1
3
4,19
5
1
3
2,391
0,5
1
3
3,867
0,5
0,5
5
148 2,199
0,5
3
3
0,75
0,5
5
1
Reaksi hidrogenasi etilen menjadi etana 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 % % Pe=[1 1 1 3 5 0.5 0.5 0.5 0.5]; % Pea=[1 1 1 1 1 1 0.5 3 5]; % Ph=[1 3 5 3 3 3 5 3 1]; %
3.867 2.199 0.75]; Kecepatan reaksi mol/kgkat.detik Tekanan, atm Tekanan, atm Tekanan, atm
% Jumlah data n=9; % Tebakan awal k, Ka, Ke masing-masing 1 xo=[1 1 1]; %Minimasi di sub program F66 disp 'Harga k, Ka, dan Ke hasil minimasi' fminsearch('F66',xo)
Fungsi perhitungan SSE function f=F66(x) % Program ini berisi fungsi untuk menghitung
149 % % % % % % %
SEE dari persamaan kecepatan reaksi sebagai fungsi konstanta-konstanta yang ingin dicari x(1)=k; x(2)=Ke; x(3)=Ka Nama File : F66.m Surakarta, Oktober 2005 ---------------------------------------------------------------
% 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
Artinya adalah k = 3,3479; Ka = 2,2111; dan Ke = 0,0429 -rA =
3,3479PE PH 1 + 2,2111PEA + 0,0429PE
Contoh 6.7. Optimasi Kanal Saluran Air
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.
d b
θ
Gambar 6.5. Kanal Saluran Air
Panjang perimeter L dapat ditulis sebagai
150 L = b + 2d sin θ Luas penampang saluran 2 = 100 A = db + d tan θ
b = 100 − d d tan θ
substitusi pada persamaan L=
100 d 2d − + 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; teta_tebakan = 1;
% ft
% 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); % Persamaan yang diminimasi L = 100./d-d./tan(teta)+2*d./sin(teta);
151 Keluaran program >> d = 7.5983 teta = 60.0004
Contoh 6.8. Perhatikan Program berikut ini % % % % % % % % % %
--------------------------------------------------------------Demonstrasi regresi nonlinear dengan fminsearch Fit y=alpha*exp(beta*x) --------------------------------------------------------------Surakarta, Oktober 2005 Jurusan Teknik Kimia, Fak. Teknik Universitas Sebelas Maret ***************************************************************
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); % Plot dan membandingkan hasil plot(xDataz, yDataz, 'o', xDataz, yfit, '-', 'linewidth',2) set(gca,'fontsize',16)
Fungsi untuk menghitung SSE function sse=F68(param) % Program ini berisi fungsi untuk menghitung SEE % fungsi konstanta-konstanta yang ingin dicari % param(1)=alpha; param(2)=beta % % Nama File : F68.m % Surakarta, Oktober 2005 % ---------------------------------------------------------------
152 global xDataz yDataz % Mengubah variabel alpha = param(1); beta = param(2); % Perhitungan SSE error = yDataz - alpha.*exp(beta.*xDataz); sse = sum(error.^2);
Keluaran Program
Gambar 6.6. Keluaran Program Contoh 6.8. Demonstrasi regresi nonlinear y = alpha*exp(beta*x) Koefisien adalah: alpha = 10.5674 beta = -0.23575
Contoh 6.9. Ekstraktor Tiga Tingkat
Campuran C dan A akan diambil C-nya dengan ekstraksi menggunakan solven B dalam ekstraktor 3 tingkat yang beroperasi secara cross-current seperti terlihat pada gambar 6.7. Hubungan kesetimbangan antara C dalam fasa B (y) dan C dalam fasa A (x) mengikuti persamaan :
y = k.x2
Ingin dicari S1, S2, dan S3 yang memberikan xR minimal jika S = S1 + S2 + S3 = tetap.
153 S1
S3
S2
F
1 x0
F
2
x1
F x2
3
F x3=xR
S1
S2
S3
y1
y2
y3
Gambar 6.7. Ekstraktor Tiga Tingkat Cross-current
Dari neraca massa diperoleh persamaan,
x1 =
x2 =
− F + F 2 + 4F.S1 .k.x o 2S1 .k
− F + F 2 + 4F.S 2 .k.x 1
xR = x3 =
2S 2 .k
− F + F 2 + 4F.S3 .k.x 2 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; xo=0.2; F=100; k=20;
% % % %
Laju alir solvent total, kg B/menit Konsentrasi umpan, kg C/kg A Laju alir umpan, kg A/menit Konstanta kesetimbangan
% Tebakan awal laju alir solvent S1 & S2 So=[20 100]; % 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
Contoh 6.10. Koefisien Aktivitas Campuran Biner
Pada suhu 350 K, campuran biner bahan A dan B, fasa uapnya mengikuti hukum-hukum gas ideal sedangkan fasa cairnya non-ideal dengan koefisien aktivitas mengikuti persamaan : γA = exp ( β.xB2 )
dan
γB = exp ( β.xA2 )
Pada 350 K, tekanan uap murni A dan B masing-masing 80 cmHg dan 60 cmHg. Data tekanan total kesetimbangan pada 350 K pd berbagai fraksi mol A adalah : xA Pt (cmHg)
0,1
0,2
0,3
0,4
0,6
0,7
0,8
0,9
65,8
70,3
73,9
76,5
79,9
80,9
81,3
81
155 Berdasarkan data-data tersebut, perkirakan nilai β dengan membandingkan Pt data dengan Pt hasil perhitungan sampai diperoleh SSE minimum.
SSE = ∑ (Pt hit − Pt dat )
2
dengan Pthit dapat dicari dengan persamaan,
[
]
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 % *************************************************************** global xa Ptdat Pao Pbo % 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 % --------------------------------------------------------------global xa Ptdat Pao Pbo 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
Contoh 6.11.
Reaktor Adiabatis untuk Reaksi Fase Gas Bolak-balik Eksotermis
156 Reaksi fasa gas bolak-balik eksotermis SO2 + ½ O2 ↔ SO3 dijalankan dalam reaktor tabung adiabatik dengan bantuan katalisator padat berbentuk butir-butir. Aliran gas dianggap plug-flow dan tekanan system dianggap tetap Pt = 1 atm. Proses ditunjukkan pada gambar 6.8. Kecepatan reaksi mengikuti persamaan :
⎛ ⎞ PSO3 ⎟ k 1 .PO 2 .PSO 2 .⎜1 − 0 , 5 ⎜ ⎟ P . P . K ⎛ ⎞ gmol SO 2 SO 2 O2 P ⎠ ⎝ ⎟⎟ = r ⎜⎜ 2 ⎝ jam . kg katalisator ⎠ 22,414. 1 + K 2 .PSO 2 + K 3 .PSO 3
(
)
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 ⎠ ⎝
PSO 2 =
(1 − x) .Pt (12,82 − 0,5.x)
PO 2 =
(1 − x) .Pt (12,82 − 0,5.x)
PSO3 =
x .Pt (12,82 − 0,5.x)
xF Tin
T = TF + 241,7.(x – xF)
xin Tin
xout Tout W kg katalis
F gmol N2 / j SO2 = 7,8% O2 = 10,8% N2 = 81,4%
R gmol N2 / j
157
Gambar 6.8. Reaktor Adiabatis Plug Flow
Ingin dicari harga (R/F) yang memberikan nilai W minimum x
out ⎛ R⎞ 1 W = 137,3.⎜1 + ⎟. ∫ . dx F ⎠ x in r ⎝
⎛R⎞ x F + ⎜ ⎟.x out ⎝R⎠ x in = 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 % Perhitungan konversi masuk reaktor xin=(xf+RperF*xout)/(1+RperF); % Distribusi nilai konversi dari konversi masuk sampai keluar x=linspace(xin,xout,100); % Perhitungan temperatur reaktor T=Tf+241.7*(x-xf); % Perhitungan tekanan parsial Pso2=(1-x)./(12.82-0.5*x); Po2=(1.3846-0.5*x)./(12.82-0.5*x); Pso3=x./(12.82-0.5*x); % Perhitungan kecepatan reaksi k1=exp(12.16-5473./T); K2=exp(-9.953+8619./T); K3=exp(-71.745+52596./T); Kp=exp(-10.68+11300./T); Ra=k1.*Po2.*Pso2.*(1-Pso3./(Pso2.*sqrt(Po2).*Kp))./... (22.414*(1+K2.*Pso2+K3.*Pso3).^2); Ra1=1./Ra; % Perhitungan berat katalis area=trapz(x,Ra1); W=137.3*(1+RperF)*area;
Keluaran program RperF = 2.2554 Wmin = 4.4758e+003
Sehingga pada R/F = 2,25 akan diperoleh berat katalis minimum yaitu 4475,8 kg.
Contoh 6.12. Reaktor Batch Adiabatis untuk Reaksi Cair Orde 2
Reaktor batch beroperasi secara adiabatis untuk reaksi fasa cair order 2 : A → B. Perubahan entalpi reaksi ∆HR, volume reaktor VR, dan kapasitas panas larutan Cp dianggap tetap. Waktu bongkar pasang tp. Umpan masuk pada suhu TF dan konsentrasi A CAo. Reaksi dihentikan pada konversi xR. Konversi A mula-mula xRo. Ingin dicari konversi A yang memberikan kecepatan produksi B tiap waktu maksimum. Persamaan-persamaan yang dipakai adalah :
159
tR =
1 C Ao
x out
∫
x in
1 dx A k.(1 − x A ) 2
⎛ E ⎞ k = A. exp ⎜ ⎟ ⎝ RT ⎠
T = TF B = VR
C Ao ∆H R xA ρ .Cp
C Ao .x R (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 % *************************************************************** global Tf Cao dHr rho Cp A Ea R xro Vr tp % Data-data Tf=350; Cao=1; dHr=-6; rho=1; Cp=1; A=1e7; Ea=14; R=0.001987; xro=0; Vr=10000; tp=120;
% % % % % % % % % %
Temperatur umpan, K Konsentrasi umpan, gmol/L Beda entalphi reaksi, kkal/gmol Densitas larutan, kg/L Kapasitas panas larutan, kcal/kg.K Konstanta Arrhenius, L/gmol.menit Konstanta Arrhenius, kkal/gmol Konstanta gas ideal, kkal/gmol.K Konversi mula-mula Volume reaktor, L
% 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 global Tf Cao dHr rho Cp A Ea R xro Vr tp tr=quad(@F612F,xro,xr); fxr=(tr+tp)/(Vr*Cao*xr);
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
Contoh 6.13. Reaktor Batch Adiabatis Reaksi Fase Cair Bolak-balik
Reaksi fasa cair bolak-balik eksotermis : A ↔ B dijalankan dalam reaktor batch adiabatis. Volum campuran dapat dianggap tetap. Suhu awal reaktor To. Panas reaksi λ kal/gmol, kapasitas panas campuran Cp cal/(g.K). Konsentrasi A mulamula CAo gmol/L dan konversi awal xo. Konversi akhir yang diinginkan xN. Ingin dicari suhu awal reaktor To yang memberikan waktu reaksi t minimum. Waktu reaksi dinyatakan dengan persamaan,
t=
xN
dx
∫ k[(1 − x) − K.x ]
xo
⎛ E ⎞ k = A. exp ⎜ ⎟ ⎝ RT ⎠ ⎛β⎞ K = α. exp ⎜ ⎟ ⎝T⎠
T = To +
λ.C Ao (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 % *************************************************************** global alpa rho Cp Cao xo xn beta A Ea R lamda % 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 % Distribusi konversi di reaktor x=linspace(xo,xn,100); % Perhitungan temperatur reaktor T=To+lamda*Cao*(x-xo)/rho/Cp; % Perhitungan waktu reaksi k=A*exp(-Ea./(R*T)); K=alpa*exp(beta./T) ; y=1./(k.*((1-x)-K.*x)); ft=trapz(x,y);
Keluaran program To = 736.3329 waktu = 25.6426
Contoh 6.14. Dua Reaktor Adiabatis Tersusun Seri
162 Reaksi endotermis order 1 fasa gas : A → B + C, dijalankan dengan katalisator padat dalam 2 reaktor adiabatis yang disusun seri seperti terlihat pada gambar 6.9. Suhu umpan masuk ke reaktor-reaktor dijaga Tin dengan preheater dan interheater. Umpan reaktor 1 berupa A murni sebanyak FAo. Tekanan reaktor-reaktor dianggap tetap P. Aliran gas dianggap plug flow. Carilah konversi antara yang memberikan berat katalisator W minimum. Berat katalisator dinyatakan dengan persamaan, x out
Wi = FAo . ∫
x in
dx , ( i =1 , 2 ) rA
Kecepatan reaksi dinyatakan dengan persamaan
rA =
k.P ⎛ 1 − x ⎞ ⎜ ⎟ R .T ⎝ 1 + x ⎠
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, Tin
x1, T1
x1, Tin
x2, T2
x0, T0 W2
W1
HE
HE
Gambar 6.9. Susunan Reaktor Seri
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 % *************************************************************** global xin xout Tr Tin Cpa Cpb Cpc dHr R P Fao % Data-data xin=0; xout=0.6;
% Konversi masuk rangkaian reaktor % Konversi keluar rangkaian reaktor
163 Tr=298; Tin=1200; Cpa=4; Cpb=5.5; Cpc=7; dHr=2000; P=2; R=0.082; Fao=10;
% % % % % % % % %
Temperatur referensi, K Temperatur masuk reaktor, K Kapasitas panas A, kal/gmol.K Kapasitas panas B, kal/gmol.K Kapasitas panas C, kal/gmol.K Beda entalphi reaktsi, kal/gmol Tekanan reaktor, atm Konstanta gas ideal, L.atm/gmol.K Kecepatan umpan masuk,gmol/detik
% Penentuan konversi keluar reaktor 1 optimal utk W minimal [x1,W]=fminbnd(@F614,xin,xout)
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 % Distribusi nilai x dari xin sampai x1 x=linspace(xin,x1,40); % Perhitungan temperatur keluar reaktor 1 T=Tr-((Tr-Tin)*((1-xin)*Cpa+xin*(Cpb+Cpc))+(x-xin)*dHr)./... ((1-x)*Cpa+x*(Cpb+Cpc)); % Perhitungan berat katalis reaktor 1 k=2.5e16*exp(-33000./T); ya=Fao./(k*P.*(1-x)./(R*T.*(1+x))); wa=trapz(x,ya); % Distribusi nilai x dari x1 sampai xout x=linspace(x1,xout,40); % Perhitungan temperatur keluar reaktor 2 T=Tr-((Tr-Tin)*((1-x1)*Cpa+x1*(Cpb+Cpc))+(x-x1)*dHr)./... ((1-x)*Cpa+x*(Cpb+Cpc)); % Perhitungan berat katalis reaktor 2 k=2.5e16*exp(-33000./T); yb=Fao./(k*P.*(1-x)./(R*T.*(1+x))); wb=trapz(x,yb); % Berat katalis total fw=wa+wb;
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
Contoh 6.15. Reaktor Batch untuk Reaksi Gas Cair
Reaksi fasa cair eksotermis A → B, dijalankan dalam sebuah reaktor tangki berpengaduk yang bekerja secara batch dan adiabatis. Kadar A dalam reaktor kecil. Data operasi reaktor tersebut untuk konsentrasi A awal, CAo = 1,6 gmol/L adalah sebagai berikut, Waktu
Konversi A
(menit)
Suhu (K)
0
0
340
30
0,11
344
60
0,28
350
90
0,53
359
120
0,78
369
150
0,90
373
Jika persamaan kinetika dinyatakan sebagai berikut,
t=
1 C Ao
x
dx
∫ k.(1 − x)
2
0
⎛ 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,
SSE = ∑ (t hit − t dat )
2
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
Persamaan differensial merupakan persamaan yang sangat sering dijumpai dalam penyusunan suatu model untuk mendiskripsikan suatu phenomena. Persamaan differensial merupakan gabungan suatu fungsi yang tidak diketahui disertai turunannya. Variabel yang didifferensialkan disebut variabel tak bebas dan variabel tempat variabel tak bebas didifferensialkan disebut variabel bebas (independen). Jika fungsi tersebut mencakup satu variabel bebas, maka persamaan tersebut disebut persamaan differensial ordiner. Tetapi jika fungsi tersebut mencakup lebih dari satu variabel bebas, maka persamaanya disebut persamaan differensial parsial, yang akan dibahas pada bab VIII. Persamaan differensial juga diklasifikasikan menurut ordenya. Jika suatu fungsi turunan tertingginya adalah turunan pertama, maka persamaan tersebut disebut persamaan differensial orde satu. Suatu persamaan orde dua akan mempunyai turunan kedua sebagai turunan tertinggi. Penyelesaian persamaan differensial orde ke-n membutuhkan n kondisi yang diketahui. Jika kondisi dispesifikasikan pada harga yang sama pada variabel bebas (misal pada t = 0) maka masalah ini dinamakan masalah harga awal (initial value problem). Selain masalah harga awal, kadang spesifikasi kondisi terjadi pada harga-harga yang berbeda dari variabel bebas. Jika demikian
170 maka persoalan tersebut disebut masalah harga batas (boundary value problem). Pada bagian awal bab ini akan dibahas masalah harga awal terlebih dahulu yang akan dilanjutkan penyelesaian untuk masalah harga batas pada bagian akhir bab. Ada dua kategori utama metode numerik dalam penyelesaian persamaan differensial ordiner, yaitu metode satu langkah dan metode multi langkah. Untuk metode satu langkah akan dibahas metode Euler dan metode Runge-Kutta. Sedangkan metode multi langkah akan dibahas metode predictor-korektor.
7.1. MASALAH HARGA AWAL 7.1.1. METODE EULER Metode Euler adalah salah satu metode satu langkah yang paling mendasar. Semua metode satu langkah menggunakan suatu slope φ untuk mengekstrapolasikan suatu harga lama variabel tak bebas terhadap suatu harga baru variabel tak bebas tersebut. Perbedaanya adalah pada cara memperkirakan besarnya slope tersebut.
slope
xi
xi+1 h
Gambar 7.1. Penjelasan Grafis Metode Satu Langkah Bentuk umum yn+1 = yn + φh
… (7.1)
Untuk metode Euler turunan pertama memberikan perkiraan langsung slope pada yn.
171 yn+1 = yn + f(tn,yn) h
… (7.2)
Berikut program Matlab untuk metode Euler function [tvals, yvals]=euler(func,tspan,startval,step) % Program ini bertujuan untuk penyelesaian % persamaan differensial ordiner % dengan Metode Euler % Cara menggunakan fungsi ini % tvals adalah variabel bebas (t) % yvals adalah variabel tak bebas hasil perhitungan (y) % func adalah nama fungsi yang ingin diselesaikan % tspan adalah variabel bebas % starval adalah nilai awal variabel bebas (yo) % step adalah besaran langkah untuk interval tspan % % Nama File : euler.m % Surakarta, Oktober 2005 % --------------------------------------------------------------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 % *************************************************************** [t y] = euler('F71',[0 5],100,0.5); % step = 0.5 plot(t,y,'ko','LineWidth',2); axis([0 5 0 12000]) pause(3) hold on; [t y] = euler('F71',[0 5],100,0.2); % step = 0.2 plot(t,y,'kx','LineWidth',2); pause(3) [t y] = euler('F71',[0 5],100,0.1); % step = 0.1 plot(t,y,'k+','LineWidth',2); pause(3) xlabel('time','FontSize',14);ylabel('y','FontSize',14); plot(t,80*exp(t)+20,'k-') hold off;
172 Fungsi terkait function v=F71(t,y) % Program ini berisi fungsi untuk menghitung v % dy % v = ---- = y - 20 % dt % Nama File : F71.m % Surakarta, Oktober 2005 % --------------------------------------------------------------v= y - 20;
y
Keluaran program
Gambar 7.2. Keluaran Program Contoh 7.1
7.1.2. METODE RUNGE-KUTTA Metode satu langkah lain adalah metode Runge-Kutta. Bentuk umum
yn+1 = yn + hf(tn, yn, h)
… (7.3)
f(tn, yn, h) disebut fungsi inkremen yang dapat diinterpretasikan sebagai sebuah slope rata-rata sepanjang interval. Fungsi inkremen dapat ditulis sebagai
173 f(tn, yn, h) = a1k1 + a2k2 + … + ankn Ada beberapa jenis metode Runge-Kutta yang dapat digunakan tergantung dari pengembangan jumlah suku-suku yang berbeda pada fungsi inkremen. Metode Runge-Kutta yang paling popular adalah Metode Runge-Kutta klasikal yang menggunakan orde 4 ( n = 4 ). yn+1 = yn + (k1 + 2k2 + 2k3 + k4)/6 dengan
… (7.4)
k1 = h(tn, yn) k2 = h(tn + h/2, yn + k1/2) k3 = h(tn + h/2, yn + k2/2) k4 = h(tn + h, yn + k3)
Berikut program Matlab untuk metode Runge-Kutta function [tvals,yvals]=rkgen(func,tspan,startval,step) % Program ini bertujuan untuk penyelesaian % persamaan differensial ordiner % dengan Metode Runge-Kutta % Cara menggunakan fungsi ini % tvals adalah variabel bebas (t) % yvals adalah variabel tak bebas hasil perhitungan (y) % func adalah nama fungsi yang ingin diselesaikan % tspan adalah variabel bebas % starval adalah nilai awal variabel bebas (yo) % step adalah besaran langkah untuk interval tspan % % Nama File : rkgen.m % Surakarta, Oktober 2005 % --------------------------------------------------------------b=[ ];c=[ ];d=[ ];order = 4; b=[1/6 1/3 1/3 1/6]; d=[0 0.5 0.5 1]; c=[0 0 0 0; 0.5 0 0 0; 0 0.5 0 0; 0 0 1 0]; steps=(tspan(2)-tspan(1))/step+1; y=startval;t=tspan(1); yvals=startval;tvals=tspan(1); for j=2:steps k(1)=step*feval(func,t,y); for i=2:order k(i)=step*feval(func,t+step*d(i),y+c(i,1:i-1)*k(1:i-1)'); end; y1=y+b*k';t1=t+step; tvals=[tvals,t1]; yvals=[yvals,y1]; t=t1;y=y1; end;
7.1.3. METODE PREDIKTOR KOREKTOR
174 Metode Euler dan metode Runge-Kutta menggunakan harga variabel tak bebas yn pada sebuah titik berikutnya tn+1. Pendekatan alternatif lain adalah dengan mendasarkan pengertian bahwa sekali perhitungan dimulai informasi yang berharga dari titik-titik terdahulu berada dalam pengaturan. Pendekatan ini disebut metode multi langkah. Metode prediktor-korektor adalah metode multi langkah yang menggunakan beberapa persamaan untuk memperkirakan harga variabel tak bebas ke-n+1. Hasilnya kemudian koreksi dengan persamaan korektor. Sebagai contoh dapat digunakan metode Adam-Bashforth-Moulton. yn+1 = yn + h(55y’n – 59y’n-1 + 37y’n-2 – 9y’n-3)/24
… (7.5)
’
y n+1 = f(tn+1,yn+1) yn+1 = yn + h(9y’n+1 – 19y’n – 5y’n-1 + y’n-2)/24
… (7.6)
’
y n+1 = f(tn+1,yn+1) tn+1 = tn + h Terlihat dibutuhkan tiga titik awal untuk dapat menggunakan metode AdamBashforth-Moulton. Tiga titik awal ini dapat diperoleh dengan menggunakan metode Runge-Kutta. Program Matlab untuk metode Adam-Bashforth-Moulton function [tvals,yvals]=abm(func,tspan,startval,step) % Program ini bertujuan untuk penyelesaian % persamaan differensial ordiner % Metode Prediktor-Korektor (Adams, Bashforth, Moulton) % Cara menggunakan fungsi ini % tvals adalah variabel bebas (t) % yvals adalah variabel tak bebas hasil perhitungan (y) % func adalah nama fungsi yang ingin diselesaikan % tspan adalah variabel bebas % starval adalah nilai awal variabel bebas (yo) % step adalah besaran langkah untuk interval tspan % % Nama File : abm.m % Surakarta, Oktober 2005 % --------------------------------------------------------------b=[ ];c=[ ];d=[ ];order = 4; b=[1/6 1/3 1/3 1/6]; d=[0 0.5 0.5 1]; c=[0 0 0 0; 0.5 0 0 0; 0 0.5 0 0; 0 0 1 0]; steps=(tspan(2)-tspan(1))/step+1; y=startval;t=tspan(1);fval(1)=feval(func,t,y); ys(1)=startval;yvals=startval;tvals=tspan(1); % Tiga langkah awal dengan Metode Runge-Kutta for j=2:4 k(1)=step*feval(func,t,y); for I=2:order k(i)=step*feval(func,t+step*d(i),y+c(I,1:I-1)*k(1:I-1)’); end; y1=y+b*k’;ys(j)=y1;t1=t+step;
175 fval(j)=feval(func,t1,y1); tvals=[tvals,t1]; yvals=[yvals,y1]; t=t1;y=y1; end; % Langkah selanjutnya dg ABM orde 4 for I=5:steps y1=ys(4)+step*(55*fval(4)-59*fval(3)+37*fval(2)-9*fval(1))/24; t1=t+step;fval(5)=feval(func,t1,y1); yc=ys(4)+step*(9*fval(5)+19*fval(4)-5*fval(3)+fval(2))/24; fval(5)=feval(func,t1,yc); fval(1:4)=fval(2:5); ys(4)=yc; tvals=[tvals,t1];yvals=[yvals,yc]; t=t1; y=y1; end
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 0.00 0.25 0.50 0.75 1.00 1.25 1.50 1.75 2.00
Runge-Kutta 2.0000000 2.1289876 2.5680329 3.5099767 5.4357436 9.5369365 18.9519740 42.6424234 108.5814979
Prediktor-Korektor Eksak 2.0000000 2.0000000 2.1289876 2.1289889 2.5680329 2.5680508 3.5099767 3.5101093 5.4340314 5.4365637 9.5206761 9.5414664 18.8575896 18.9754717 42.1631012 42.7618855 106.2068597 109.1963001
7.1.4. FUNGSI ode Matlab menyediakan fungsi-fungsi
ode
untuk secara numerik
mendekati penyelesaiannya. Fungsi ode45 adalah fungsi ode pertama yang dapat dicoba pada masalah yang baru. Untuk melakukan hal tersebut perlu ditulis sebuah fungsi M-File yang menghasilkan derivatif untuk nilai variabel tak bebas.
Contoh 7.3. Penyelesaian Dua Persamaan Differensial Ordiner Perhatikan contoh program berikut % Demonstrasi penyelesaian Persamaan Differensial Ordiner % Program ini bertujuan menyelesaikan % dc/dt = 1 - c - xk*c ... neraca massa % dT/dt = 1 - T - alpha*xk*c ... neraca entalpi % Penyelesaian dengan fungsi ode45 % % --------------------------------------------------------------% Surakarta, Oktober 2005 % Jurusan Teknik Kimia, Fak. Teknik % Universitas Sebelas Maret % *************************************************************** 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 % Penggunaan fungsi ode45 [t y] = ode45('F73', [t0:0.01:tf], y0); % Menyimpan hasil perhitungan % Data ini dapat dibuka dg word atau excel temp = [t y]; save ode.dat temp -ascii
177 % 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 % -------------------------------------------------------------global Alpha Beta % Variabel sesungguhnya c = y(1); T = y(2); % Konstanta kecepatan reaksi xk = Beta*T*T; % Persamaan Differensial Ordiner dydt(1) = 1. - c - xk*c ; dydt(2) = 1. - T - Alpha*xk*c ; dydt = dydt';
Keluaran program
Gambar 7.3. Keluaran Program Contoh 7.3
178
Contoh 7.4. Tangki Seri Larutan Garam Dua buah tangki dengan kapasitas 100 L diisi penuh dengan larutan garam dengan konsentrasi 20 g/L. Ke dalam tangki I dimasukkan air 5 L/menit, dan pada saat yang sama dari tangki I dialirkan 8 L/menit larutan ke tangki II. Dari tangki II dialirkan 8 L/menit tapi dipecah menjadi 2 aliran yaitu 3 L/menit dikembalikan (di-recycle) ke tangki I dan 5 L/menit diambil sebagai hasil. Tentukan konsentrasi garam pada kedua tangki setelah 30 menit.
Recycle
Tangki I
Tangki II Produk
Gambar 7.4. Tangki Seri Larutan Garam 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 % *************************************************************** % % Kondisi awal tangki C1o = 20; % Konsentrasi Tangki I awal, g/L C2o = 20; % Konsentrasi Tangki II awal, g/L
179 Co = [C1o C2o]; % 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; V2 = 100; q0 = 5; q1 = 8; q2 = 8; qR = 3; qproduk = 5; C0 = 0;
% % % % % % % %
Volume tangki I, L Volume tangki II, L Laju alir umpan, L/menit Laju alir keluar tangki I, L/menit Laju alir keluar tangki II, L/menit Laju alir recycle, L/menit Laju alir produk, L/menit 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
Gambar 7.5. Keluaran Program Contoh 7.4.
Contoh 7.5. Penukar Panas dalam Tangki Seri Tiga tangki tersusun seri digunakan sebagai preheater larutan minyak multikomponen sebelum larutan tersebut diumpankan ke kolom distilasi untuk dipisahkan. Setiap tangki mula-mula diisi dengan 1000 kg minyak 20 OC. Steam jenuh pada temperatur 250 OC dikondensasikan di dalam koil di setiap tangki. Minyak umpan masuk tangki pertama pada kecepatan 100 kg/menit dn overflow ke tangki kedua dan ketiga dengan kecepatan yang sama. Temperatur umpan minyak masuk tangki pada 20 OC. Tangki-tangki dilengkapi dengan pengaduk sehingga larutan tercampuran sempurna dan mempunyai suhu yang seragam. Temperatur keluar tangki sama dengan temperatur di dalam tangki. Kapasitas panas Cp minyak adalah 2,0 kJ/kg. Untuk setiap tangki, panas yang ditransfer ke minyak dari koil steam dinyatakan dengan Q = UA(Tsteam – T)
181 O
dengan UA = 10 kJ/menit C yaitu koefisien transfer panas dan luas oil setiap tangki. T adalah temperatur minyak dalam tangki (OC) dan Q adalah kecepatan panas ditransfer dalam kJ/menit.
To = 20 C W = 100 kg/menit
T1
T1
steam
T2
T2
T3
steam
T3
steam
Gambar 7.6. Sistem Penukar Panas Tangki Seri Tentukan suhu di dalam setiap tangki sebagai fungsi waktu ! Penyelesaian Neraca panas pada tangki 1 MCp
dT1 = 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; W = 100; UA = 10; M = 1000; Cp = 2.0; Tsteam = 250; To = 20;
% % % % % % %
Jumlah tangki Laju alir minyak, kg/menit Koef. transfer panas & luas koil, kJ/menit.C massa minyak dalam tangki, kg kapasitas panas minyak, kj/kg temperatur steam jenuh, C temperatur minyak masuk, C
% Temperatur awal tangki T_awal = ones(1,Jml_Tangki)*To; % Setting waktu t_mulai = 0; % menit t_akhir = 90; % menit tspan = [t_mulai t_akhir]; % Perhitungan dg fungsi ode45 [t,T]=ode45('F75',tspan,T_awal); % Plot hasil perhitungan plot(t,T,'k-','LineWidth',2) title('Temperatur dalam Tangki Berpengaduk','FontSize',14) xlabel('waktu(menit)','FontSize',14) ylabel('T(C)','FontSize',14) output=[t T]; save temp.dat output –ascii
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 % --------------------------------------------------------------global W UA M Cp Tsteam Jml_Tangki To 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
Gambar 7.7. Keluaran Program Contoh 7.5
Contoh 7.6. Persamaaan Differensial Ordiner Simultan Dalam sistem yang tertutup, tiga komponen bereaksi dengan langkah sebagai berikut k
1 B A ⎯⎯→
k
2 A + C B + C ⎯⎯→
k
3 C + B 2B ⎯⎯→
mengikuti persamaan differensial berikut :
dC A = -k1CA + k2CBCC dt
dC B = k1CA – k2CBCC – k3CB2 dt
dC C = k3CB2 dt
184 CA(0) =1, CB(0) = CC(0) = 0. Tentukan CA(10), CB(10), dan CC(10), jika k1 = 0,08, k2 =2 x 104, k3 = 6.107 ! Program Matlab % Reaksi-reaksi Simultan % k1 k2 k3 % A ----> B B + C ----> A + C 2B ----> C + B % ra = -k1*Ca % rb = k1*Ca - k2*Cb*Cc - k3*Cb^2 % rc = k3*Cb^2 % Tentukan Ca, Cb, dan Cc sebagai fungsi waktu % --------------------------------------------------------------% Surakarta, Oktober 2005 % Jurusan Teknik Kimia, Fak. Teknik % Universitas Sebelas Maret % *************************************************************** % clear all clc global k1 k2 k3 % Data konstanta kecepatan reaksi k1 = 8e-2; k2 = 2e-4; k3 = 6e-2; % Data kondisi awal Cao = 1.0; Cbo = 0; Cco = 0; Co = [Cao Cbo Cco]; % 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 dC_dt(1) = -k1*Ca + k2*Cb*Cc; dC_dt(2) = k1*Ca - k2*Cb*Cc - k3*Cb^2; dC_dt(3) = k3*Cb^2; dC_dt=dC_dt';
konsentrasi
Keluaran program
Gambar 7.8. Keluaran Program Contoh 7.6
Contoh 7.7. Reaksi Pembentukan Etilen Oksida dari Etilen Reaksi oksidasi etilen menjadi etilen oksida H2C CH2
+
O 1/2 O 2
H2C
CH2
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 -rA’ = kC Ao RTo P (1- x)1/3(1/2 - x)2/3 1 + εx Po -rA’ = k’ (1 − x ) y (1 + εx )
dengan k’ = kPAo(1/2)2/3 dan y = P/Po
k’ = 0,0141lbmol/(atm.lbkat.jam).3atm.0,63 k’ = 0,0266 lbmol/(lbkat.jam) ε = yAo δ = (FAo / FTo) δ = (1,08/2,03)(1 – ½ – 1 ) = -0,15 FAo
dx = -rA’ dW
187 dx dW
= -rA’ / FAo
Persamaan untuk penurunan tekanan
α Po dP =− (1 + εx ) dW 2 P / Po α dy = − (1 + εx ) dW 2y
dengan α =
2β o Ac(1 − φ)ρ kat Po
α = 0,0166 / lbkat βo = G (1 − φ) ρc g c D P φ3
⎡150(1 − φ)µ ⎤ + 1,75G ⎥ ⎢ Dp ⎣⎢ ⎦⎥
untuk pipa1 ½ in schedule 40 , Ac = 0,01414 ft2 G = m / Ac G = 104,4 =7383,3 lbm/(jam.ft2) 0,01414
Untuk udara 260 OC dan 10 atm, µ = 0,0673 lbm/(ft.jam) ρo = 0,413 lbm/ft3 Dp = ¼ in = 0,0208 ft gc = 4,17.108 lbm.ft/(lbf.jam2) βo = 164,1 lbf/ft3 = 0,0775 atm/ft = 25,8 kPa/m
% Reaksi Pembentukan Etilen Oksida dari Etilen % --------------------------------------------------------------% Surakarta, Oktober 2005 % Jurusan Teknik Kimia, Fak. Teknik % Universitas Sebelas Maret % *************************************************************** % % Kondisi awal Xo = 0; % konversi mula-mula yo = 1; % penurunan tekanan mula-mula xo = [Xo yo]; Wspan = [0 60]; % batasan berat katalis global eps kprime % 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 % -------------------------------------------------------------global eps kprime X = x(1); y = x(2); kprime=0.0266; eps=-0.15; alpha=0.0166; rate=kprime*((1-X)/(1+eps*X))*y; fa0=1; dx_dW(1,:)=rate/fa0; dx_dW(2,:)=-alpha*(1+eps*X)/(2*y);
Keluaran program
Gambar 7.9.a. Keluaran Program Contoh 7.7
189
Gambar 7.9.b. Keluaran Program Contoh 7.7 Contoh 7.8. Reaksi Phase Gas Reversibel dan Eksotermis dalam Reaktor Katalitik
Reaksi elementari phase gas 2A ↔ C dijalankan pada reaktor packed bed. Reaktor dilengkapi dengan penukar panas dan terjadi penurunan tekanan (pressure drop) sepanjang reaktor. q
Ta
Fao
X
To
T
q
Ta
Gambar 7.10. Reaktor Katalitik
Berbagai nilai parameter untuk reaktor ini ditunjukkan pada tabel di bawah ini :
190 CPa = 40,0 J/gmolK
R = 8,314 j/gmolK
CPc = 80,0 J/gmolK
Fao = 5,0 gmol/menit
∆ Hr = -40.000 J/gmol
Ua = 0,8 J/kgmenitK
Ea = 41.800 J/gmolK
Ta = 500 K
6
k = 0,5 dm /kgmenitmol @ 450 K
α = 0,015 kg-1
KC = 25.000 dm3/gmol @ 450 K
Po = 10 atm
3
Cao = 0,271 gmol/dm
yao = 1,0
To = 450 K Plot konversi (X), penurunan tekanan (y) dan temperatur (T.10-3) sepanjang reaktor untuk W = 0 sampai W = 20 kg. Plot juga profil konsentrasi untuk reaktan A dan produk C untuk harga W yang sama ! 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 k = k(pada 450 K) exp E a ⎡ 1 − 1 ⎤ R ⎢⎣ 450 T ⎥⎦ dan konstanta kesetimbangan bervariasi terhadap temperatur yang ditentukan dari persamaan van’t Hoff dengan ∆Cp = 0 KC = KC(pada 450 K) exp ∆Hr ⎡ 1 − 1 ⎤ R ⎢⎣ 450 T ⎥⎦ Stoikiometri untuk 2A ↔ C untuk phase gas (perubahan volumetrik) 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; delH = -40000; CPA = 40; FAO = 5;
% % % %
% Kondisi awal var0(1) = 0; var0(2) = 450; var0(3) = 1.0; Wspan = [0 20];
% konversi % temperatur % penurunan tekanan
temperatur, K panas reaksi, J/gmol kapasitas panas A, J/(gmol.K) laju alir A, gmol/menit
% 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 % -------------------------------------------------------------global Ta delH CPA FAO % variabel awal x = var(1); T = var(2); y = var(3); % 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
Gambar 7.11.a. Keluaran Program Contoh 7.8
194 Gambar 7.11.b. Keluaran Program Contoh 7.8
Contoh 7.9. Tinggi Cairan dalam Tangki Sperikal
Tangki berisi air berbentuk bola diisi dari suatu lubang pada bagian puncak dan dikeluarkan melalui lubang yang lain pada bagian dasar kolom. Jika jari-jari tangki adalah r, maka volume air dalam tangki dapat dinyatakan sebagai fungsi h (tinggi cairan) sebagai berikut V(h) = πrh2 – ⅓ πh3 Laju alir volum melalui lubang (q) merupakan fungsi tinggi cairan (h) dan dinyatakan dengan : q = CdA 2gh dengan
A
= luas lubang
Cd
= Konstanta, untuk air 0,6
g
= gravitasi
h
Gambar 7.12. Tangki Sperikal
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 2πrh
dh dh - πh2 = - CdA dt dt
2gh
dh = C d A 2gh − dt π( 2rh − h 2 ) % Tinggi Cairan dalam Tangki Sperikal % Menentukan tinggi cairan dalam tangki sebagai fungsi waktu % --------------------------------------------------------------% Surakarta, Oktober 2005 % Jurusan Teknik Kimia, Fak. Teknik % Universitas Sebelas Maret % *************************************************************** % clear all % kondisi awal ho = 9; % ft % Batasan waktu to = 0; tn = 2475; tspan = [to tn];
% menit % menit
% 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; dhole = 1/12; A = pi*(dhole)^2; g = 32.2;
% % % %
jari-jari tangki, ft diameter lubang, konversi ke ft luas lubang pengeluaran ft/det^2
hdot = -Cd*A*(2*g*h)^0.5/(pi*(2*r*h-h^2));
Tinggi(ft)
Keluaran program
196
Gambar 7.13. Keluaran Program Contoh 7.9. Contoh 7.10. Reaksi Dehidrogenasi dalam Reaktor Sperikal
Sebanyak 20.000 barrel minyak diproses per hari untuk meningkatkan angka oktannya dalam reaktor reforming. Laju alir umpan adalah 44 kg per detik atau 440 mol per detik. Reaksi dehidrogenasi Parafin → olefin + H2 Reaksi orde satu terhadap parafin. Asumsi parafin masih murni pada tekanan 2000 kPa dan konsentrasi 0,32 mol/dm3. Tentukan konsentrasi dan penurunan tekanan ketika reaksi ini dijalankan dalam reaktor bola berdiameter 27 dm ! -rA’
= k’CA
-rA
= ρB (-rA’) = ρC (1 - φ) k’CA
Berat katalis
= 173,870 kg
ρB
= 0,032 kg/dm3
Dp
= 0,02 dm
φ
= 0,4
197 3
k’
= 0,02 dm /(kgkatdetik)
µ
= 1,5.10-6 kg/dmdetik
L = L’
= 27 dm
ρC
= 2,6 kg/dm3 dFA = rA Ac dz dx − rA Ac = dz FAo
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
βo = G (1 − φ) ⎡⎢150(1 − φ)µ + 1,75G ⎤⎥ ρ c g c D P φ 3 ⎢⎣
Dp
⎥⎦
G = m / Ac Reaktor sperikal Ac = π [R2 – (z – L)2] βo =
⎤ G (1 − 0,4) ⎡150(1 − 0,4)1,5.10 −6 + 1,75G ⎥ ⎢ 0,02 0,032.0,02.0,4 3 ⎣ ⎦
β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
Gambar 7.14. Keluaran Program Contoh 7.10 Contoh 7.11. Reaksi Dehidrogenasi Phase Uap Benzena dalam Reaktor Alir Tubular
Reaksi dehidrogenasi phase uap benzena dalam reaktor alir tubular 2C6H6 → C12H10 + H2 C6H6 + C12H10 → C18H14 + H2 Kecepatan reaksi r1 =
−15200 ⎛ dx1 T ⎜ p2 − pDpH = 14,96.10 6 e ⎜ B d(V F) K1 ⎝
⎞ lbmol benzena bereaksi/(jam ft3) ⎟⎟ ⎠
r2 =
−15200 ⎛ dx 2 T ⎜ p p − pT pH = 8,67.10 6 e ⎜ B D d(V F) K2 ⎝
⎞ lbmol triphenil terbentuk//(jam ft3) ⎟⎟ ⎠
pB = tekanan parsial benzena, atm
T = temperatur, 1033 K
pD = tekanan parsial diphenil, atm
V = volume reaktor, ft3
pT = tekanan parsial triphenil, atm
F = laju alir bahan, lbmol/jam
pH = tekanan parsial hidrogen, atm
P = tekanan total, 1 atm
x1 = konversi pada reaksi 1
K1 = 0,312
200 x2 = konversi pada reaksi 2
K2 = 0,480
Jika umpan terdiri dari benzena murni 1 lbmol/ft3 buktikan bahwa
⎡ dx1 = 6,089 ⎢(1 − x1 − x 2 )2 − d (V F) ⎣⎢
(12 x1 − x 2 )(12 x1 + x 2 )⎤
(
⎡ x 2 12 x1 + x 2 dx 2 = 3,529 ⎢(1 − x1 − x 2 ) 12 x1 − x 2 − 0,480 d(V F) ⎢⎣
(
⎥ ⎦⎥
0,312
)
)⎤⎥ ⎥⎦
Tentukan x1 dan x2 pada (V/F) = 0,5 ft3jam/lbmol ! 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; K1 = 0.312; K2 = 0.480;
% Temperatur, K % konstanta kesetimbangan reaksi 1 % 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') disp(['Pada V/F ',num2str(V_F(end))]) konversi = x(end,:)
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';
konversi Benzena
Keluaran program
Gambar 7.15. Keluaran Program Contoh 7.11
Contoh 7.12. Distilasi Secera Batch Komponen Biner
Proses distilasi secara biner melibatkan komponen 1 dan 2. Mol liquid tersisa (L) dinyatakan sebagai fungsi fraksi mol komponen ke-2, x2 sebagai berikut :
dL L = dx 2 x 2 (k 2 − 1)
202 dengan k2 adalah rasio kesetimbangan uap cair komponen ke-2. Jika sistem dianggap berada pada keadaan ideal, rasio kesetimbangan uap cair dapat dihitung sebagi ki = Pi /P dengan Pi adalah tekanan uap komponen i dan P adalah tekanan total. Secara umum model tekanan uap menggunakan persamaan Antoine dengan T adalah temperatur (OC). 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 % A B C
Data-data Persamaan Antoine = [6.90565 6.95464]; % Komponen 1 => Benzena = [1211.033 1344.8]; % Komponen 2 => Toluena = [220.79 219.482];
% Data-data proses P = 1.2*760; Lo = 100; x2_awal = 0.4; x2_akhir = 0.8;
% % % %
mmHg mol mol toluena awal 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 T_tebak = (80.1+110.6)/2; T = fzero('F712F', T_tebak);
% % % T %
T tebakan dari rata-rata titik didih harus dicari terlebih dahulu dg fzero
P_i = 10.^(A-B./(T+C)); k = P_i/P; dLdx2 = L/x2/(k(2)-1);
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
Mol cairan
204
Gambar 7.16. Keluaran Program Contoh 7.12
7.2. MASALAH NILAI BATAS Dalam persamaan differensial orde lebih dari satu, dibutuhkan nilainilai yang sudah diketahui untuk dapat mengevaluasi konstanta-konstanta dalam fungsi partikular. Beberapa nilai dispesifikasikan pada nilai variabel bebas yang sama yang biasanya merupakan nilai awal. Tetapi beberapa persoalan kadang nilai variabel bebas yang diketahui tidak pada nilai yang sama, karena nilai-nilai variabel bebas yang diketahui biasanya pada kondisi batas (boundary condition). Persoalan seperti ini disebut masalah nilai batas.
205
7.2.1. METODE SHOOTING Metode shooting dapat diilustrasikan seperti sebuah meriam yang menembakkan pelurunya. Meriam tersebut harus mempunyai sudut tertentu agar peluru bisa mengenai sasarannya. Dalam penyelesaian persamaan differensial, sebuah nilai yang kritikal (biasanya slope) ditentukan nilainya. Nilai awal yang telah diketahui dan nilai slope yang ditebak menyebabkan kita dapat menghitung titik-titik selanjutnya dengan metode-metode yang telah diberikan pada sub bab 7.1. (metode Euler, Runge-Kutta, dan lain-lain). Pada akhir perhitungan akan dibandingkan dengan nilai yang sudah diketahui. Jika ternyata nilai akhir hasil perhitungan tersebut telah sama dengan nilai yang diketahui maka nilai slope tebakan telah tepat. Tetapi jika nilai akhir hasil perhitungan berbeda dengan nilai yang diketahui maka harus ditentukan nilai slope yang baru. Berikut program matlab untuk masalah harga batas function [t,z] = bvp2sh(func,tspan,zbc,options,alfo) % Program ini bertujuan untuk penyelesaian % persamaan differensial ordiner orde 2 % masalah harga batas % dengan Metode shooting % Bentuk umum persamaan differensial ordiner orde 2 % y'' + a*y' + b*y = f(t) % dengan a dan b dapat merupakan fungsi y dan t % Persamaan di atas dapat juga ditulis sebagai % dz1/dt = z2 and dz2/dt = f - a*z2 - b*z1 % dengan z1 = y and z2 = y' % Cara menggunakan fungsi ini % func adalah nama fungsi yang ingin diselesaikan % tspan adalah vektor variabel bebas % zbc adl matriks yg mengandung koefisien kondisi batas % options adalah struktur opsi standar (optional) % alfo adalah tebakan awal alf (optional) % t - vektor kolom variabel bebas % z - matriks penyelesaian dg kolom 1 untuk z1 % dan kolom 2 untuk z2 % % Nama File : bvp2sh.m % Surakarta, Oktober 2005 % File prepared by J. R. White, UMass-Lowell (March 2003) % --------------------------------------------------------------% % % % %
Cek apakah opsi tersedia if nargin < 4, options = [];
end
Cek apakah tebakan awal alf ada if nargin < 5, alfo = 1; end Mengekstrak kondisi batas a1 = zbc(1,1); b1 = zbc(1,2);
w1 = zbc(1,3);
206 a2 = zbc(2,1); % % % % % %
% % % %
% %
b2 = zbc(2,2);
set parameter iteratif err = 1e10; tol = 1e-6; mulai iterasi while abs(err) > tol
&
w2 = zbc(2,3);
icnt = 1;
icntmax = 25;
icnt <= icntmax
menentukan vektor kondisi awal berdasarkan sturtur matriks zbc if b1 == 0 zo = [w1/a1; alfo]; else zo = [alfo; (w1 - a1*alfo)/b1]; end Penyelesaian PDO dg kondisi awal yang diketahui [t,z] = ode23(func,tspan,zo,options); Evaluasi kesalahan pada BC ke2 e1 = a2*z(end,1) + b2*z(end,2) - w2; err = e1; fprintf(1,' \n') fprintf(1,'untuk iterasi # %2i: \n',icnt) fprintf(1,' kondisi batas adalah : %13.5e %13.5e \n',zo) fprintf(1,' error dan BC ke2 : %13.5e \n',err) fprintf(1,' \n') estimasi nilai alf baru if abs(err) > tol alfp = 1.01*alfo; if b1 == 0 zo = [w1/a1; alfp]; else zo = [alfp; (w1 - a1*alfp)/b1]; end [t,z] = ode23(func,tspan,zo,options); e2 = a2*z(end,1) + b2*z(end,2) - w2; deda = (e2-e1)/(0.01*alfo); alfn = alfo-e1/deda; icnt = icnt+1; alfo = alfn; end end % akhir loop iterasi if icnt >= icntmax fprintf(1,' WARNING -- iterasi telah maksimum!!! \n'); end
Contoh 7.13
Selesaikan persoalan nilai batas 2 titik dengan shooting method d2y dt 2
+ 3xy + 7 y = cos(2 x )
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 % *************************************************************** % clear all, close all, nfig = 0; % Nilai ALF tebakan adalah 1, -1, dan -5.4713 gs = [1 -1 -5.4715]; % % set kondisi batas dan penyelesaian IVP xo = 0; xf = pi; tol = 1.0e-6; yxo = 1.0; options = odeset('RelTol',tol); [x1,z1] = ode23('F713',[xo xf],[yxo gs(1)],options); [x2,z2] = ode23('F713',[xo xf],[yxo gs(2)],options); [x3,z3] = ode23('F713',[xo xf],[yxo gs(3)],options); % % plot hasil nfig = nfig+1; figure(nfig) plot(x1,z1(:,1),'k-',x2,z2(:,1),'k-.',x3,z3(:,1),'k-','LineWidth',2) title('Metode Shooting (Iterasi Manual)') xlabel('x'),ylabel('y'),grid legend('alf = 1','alf = -1','alf = -5.4715')
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
Gambar 7.17. Keluaran Program Contoh 7.13a.
Alternatif penyelesaian yang lebih baik adalah dengan menggunakan iteratif secara automatis. % 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 % Iteratif secara automatis % File prepared by J. R. White, UMass-Lowell (Aug. 2003) % --------------------------------------------------------------% Surakarta, Oktober 2005 % Jurusan Teknik Kimia, Fak. Teknik % Universitas Sebelas Maret % *************************************************************** clear all % Set kondisi batas dan penyelesaian xo = 0; xf = pi; zbc = [1 0 1.0; 1 0 0.0]; tol = 1e-6; options = odeset('RelTol',tol); [xs,zs] = bvp2sh('F713',[xo xf],zbc,options);
209 % Plot hasil plot(xs,zs(:,1),'k','LineWidth',2),grid title('Metode Shooting untuk PDO orde 2')
Keluaran program
Gambar 7.18. Keluaran Program Contoh 7.13b
7.2.2. METODE BEDA HINGGA (FINITE DIFFERENCE) Metode beda hingga (finite difference) sebenarnya adalah mengubah persamaan differensial ordiner menjadi sekumpulan persamaan aljabar, dengan suatu persamaan neraca untuk tiap titik atau volum terbatas dalam suatu sistem. Teknik umum yang digunakan adalah dengan menempatkan derivatif dalam persamaan differensial ordiner dengan pendekatan beda hingga dalam suatu jaringan titik. Pendekatan beda hingga
210
dy yi +1 − yi ≈ dx ∆x
(forward)
dy yi − yi −1 ≈ dx ∆x
(backward)
dy yi +1 − yi −1 ≈ dx 2∆x
(central)
secara teoritis metode central lebih baik. Untuk turunan kedua dengan metode central
d 2 y d ⎛ dy ⎞ = ⎜ ⎟≈ dx 2 dx ⎝ dx ⎠
y i+1 − y i y i − y i−1 − ∆x = y i+1 − 2 y i + y i−1 ∆x ∆x (∆x )2
Contoh 7.14
Selesaikan persoalan nilai batas 2 titik dengan finite difference method d2y dt 2
+ 3xy + 7 y = cos(2 x )
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 h = ∆x = yi” =
xf − xo N +1
y i −1 − 2 y i + y i +1 ∆x 2
yi’ = yi +1 − yi −1 2∆x
Substitusi pada persamaan differensial awal d2y dt 2
+ 3xy + 7 y = cos(2 x )
⎛ y i −1 − 2 y i + y i +1 ⎞ ⎛ y − y i −1 ⎞ + 7y = cos(2x ) ⎟⎟ +3xi ⎜⎜ i +1 ⎜⎜ i i ⎟⎟ 2 2∆x ∆x ⎠ ⎝ ⎝ ⎠
211 ⎛ 3x i ∆x ⎞ 2 2 ⎛ 3x ∆x ⎞ ⎜1 − ⎟ yi-1 + (-2 + 7∆x )yi + ⎜⎜1 + i ⎟⎟ yi+1 = ∆x cos(2xi) 2 2 ⎝ ⎠ ⎝ ⎠
selanjutnya A(i,i-1) = 1 −
3x i ∆x 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 ⎞ (-2 + 7∆x2)y1 + ⎜1 + i ⎟ y2 = ∆x2cos(2x1) – 2 ⎠ ⎝
⎛ 3x 1 ∆x ⎞ yxo ⎜⎜1 − ⎟ 2 ⎟⎠ ⎝
untuk i = N, yi+1 = yN+1 = yxf ⎛ 3x N ∆x ⎞ y + (-2 + 7∆x2)y = ∆x2cos(2x ) - ⎛ 3x N ∆x ⎞ yxf N N ⎜⎜1 − 2 ⎟⎟ N-1 ⎜⎜1 + 2 ⎟⎟ ⎝ ⎠ ⎠ ⎝
Kasus B Pendekatan y’ = d2y dt 2
y i +1 − y i ∆x
+ 3xy + 7 y = cos(2 x )
⎛ y i −1 − 2 y i + y i +1 ⎞ yi +1 − yi + 7y = cos(2x ) i i ⎟⎟ +3xi ∆x ⎜⎜ 2 ∆x ⎠ ⎝
yi-1 – (2 + 3xi∆x – 7∆x2)yi + (1 +3xi∆x) yi+1 = ∆x2cos(2xi) untuk i = 1 – (2 + 3x1∆x – 7∆x2)y1 + (1 +3x1∆x) y2 = ∆x2cos(2x1) – yxo untuk i = N yN-1 – (2 + 3xN∆x – 7∆x2)yN = ∆x2cos(2x1) – (1 +3x1∆x) yxf % Demonstrasi penyelesaian Persamaan Differensial Ordiner % Masalah Nilai Batas % Program ini bertujuan menyelesaikan % y'' + 3xy' + 7y = cos(2x) % y(0) = 1 and y(pi) = 0
212 % % % % % % % % %
Penyelesaian dengan Metode Finite Difference Digunakan beberapa jumlah titik yang berbeda File prepared by J. R. White, UMass-Lowell (Aug. 2003) --------------------------------------------------------------Surakarta, Oktober 2005 Jurusan Teknik Kimia, Fak. Teknik Universitas Sebelas Maret ***************************************************************
% Kondisi batas xo = 0; xf = pi; yxo = 1; yxf = 0; % jumlah titik yang berbeda NN = [20 40 60 160]; for n=1:4 N = NN(n); % substitusi finite difference dx = (xf-xo)/(N+1); dx2 = dx*dx; x = (xo+dx):dx:(xf-dx); % 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
Gambar 7.19. Keluaran Program Contoh 7.14
Contoh 7.15. Transfer Panas dalam Circular Fin
Sebuah fin berbentuk lingkaran tipis digunakan untuk memindahkan panas. T oo qc
qr
qr+ r
qc = 0
Gambar 7.20. Circular Fin
214 Dalam keadaan steady qr – qr+∆r – qc = 0 - kAr k 2πrδ
dT dT + kAr dr r dr dT dr
− k 2πrδ r + ∆r
– hAc (T - T∞) = 0 r + ∆r
dT dr
r
∆r
– 2π[2r+∆r]h(T - T∞) = 0
limit ∆r → 0 dT ⎤ d ⎡ k 2πrδ ⎥ – 4πrh(T – T∞) = 0 ⎢ dr ⎦ dr ⎣ 2
d T dT – 2h r2(T – T∞) = 0 r2 dr 2 + r dr kδ
T(rw) = Tw
dan
dT dr
=0 rs
Persamaan ditulis dalam kelompok tak berdimensi u=
T − T∞ Tw − T∞
dan
x=
r rs
rs du du dr dT = = dx dr dx Tw − T∞ dr
rs2 d 2 u d ⎛ du ⎞ dr d 2T = ⎜ ⎟ = dx 2 dr ⎝ dx ⎠ dx Tw − T∞ dr 2 ⎛ Tw − T∞ (rsx) ⎜ 2 ⎝ rs 2⎜
⎞ ⎟⎟ ⎠
d2u ⎛ Tw − T∞ ⎞ du 2h 2 ⎟ ⎜ dx 2 + (rsx) ⎜⎝ rs ⎟⎠ dx – kδ (rsx) (T – T∞)u = 0
du d2u +x – α2x2u = 0 x 2 dx dx 2
x2 u” + x u’ – α2x2u = 0 Kondisi batas
2hrs2 dengan α = kδ 2
215 x=
rw =a rs
u(a) = 1
x=
rs =b=1 rs
u’(b) = 0
rw = 1 in
rs = 1,5 in O
δ = 0,0625 in
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 x=
rw =a rs
u(a) = 1
x=
rs =b=1 rs
u’(b) = 0
Shooting Method z1’ = z2 z2’ = –
1 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 rw = 1/12; rs = 1.5/12; thk = 0.0625/12; Tw = 200; Tinf = 70; h = 20; k = 75;
% % % % % % %
jari-jari dalam (ft) jari-jari luar (ft) tebal fin (ft) temperatur dinding dalam (F) temperatur lingkungan (F) koefisien transfer panas (BTU/jamft^2F) konduktivitas termal (BTU/jamftF)
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);
Gradien temperatur
Temperatur
Keluaran program
Gambar 7.21. Keluaran Program Contoh 7.15a
Metode Beda Hingga
218 xi+1 = xi + ∆x
x → xi u(x) → u(xi) = ui
u’(x) → u’(xi) = ui’
∆x =
b−a N
ui” =
u i −1 − 2u i + u i +1 ∆x 2
ui’ =
u i +1 − u i −1 2∆x
⎛ u i −1 − 2u i + u i +1 ⎞ + x ⎛ u i +1 − u i −1 ⎞ – α2x 2u = 0 i i ⎟ i⎜ ⎟ ∆x 2 ⎝ ⎠ ⎝ 2 ∆x ⎠
xi2 ⎜
dengan α2 =
⎛ ∆x ⎜⎜1 − ⎝ 2x i
2hrs2 kδ
⎞ ⎟⎟ ui-1 – (2 + α2∆x2)ui + ⎠
A(i,i-1) = 1 −
⎛ ∆x ⎞ u = 0 ⎟⎟ i+1 ⎜⎜1 + ⎝ 2x i ⎠
∆x 2x i
A(i,i) = – (2 + α2∆x2) A(i,i+1) = 1 +
∆x 2x i
b(i) = 0 untuk i = 1, u0 = u(a) = 1 – (2 + α2∆x2)u1 +
⎛ ∆x ⎞ ⎜⎜1 + ⎟⎟ u2 = – ⎝ 2x 1 ⎠
⎛ ∆x ⎞ ⎜⎜1 − ⎟⎟ u0 ⎝ 2x 1 ⎠
untuk ujung yang terisolasi qxN-1/2 – qxN – qc = 0 - kAr
dT dr
– hAc(TN - T∞) = 0 r = rs − ∆r / 2
qxN = 0
219 Ar = 2π(rs -
⎡
∆r )δ 2 ⎛ ⎝
Ac =2π ⎢ rs − ⎜ rs − 2
⎢⎣
dT dr
= − r = rs − ∆r / 2
∆r ⎞ ⎟ 2 ⎠
2
⎤ ⎡ ∆r 2 ⎤ = 2π r r ∆ − ⎥ ⎢s ⎥ 4 ⎦ ⎥⎦ ⎣
h∆r f N (TN − T∞ ) kδ dengan fN =
du dx du dx
= xN − ∆x / 2
rs dT Tw − T∞ dr
(rs − ∆r / 4) (rs − ∆r / 2)
2 = − 2hrs ⎛⎜ 1 ⎞⎟⎛⎜ ∆r ⎞⎟f (TN − T∞ ) N kδ ⎝ 2 ⎠⎜⎝ rs ⎟⎠ (Tw − T∞ ) rs − ∆r / 2
⎛ ∆x ⎞
xN − ∆x / 2
= – α2 ⎜ 2 ⎟ fNuN ⎝ ⎠
untuk evaluasi pada x = xN –
atau
du dx
= xN − ∆x / 2
∆x 2
u N − u N −1 ∆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 rw = 1/12; rs = 1.5/12;
% jari-jari dalam (ft) % jari-jari luar (ft)
220 thk = 0.0625/12; Tw = 200; Tinf = 70; h = 20; k = 75;
% % % % %
tebal fin (ft) temperatur dinding dalam (F) temperatur lingkungan (F) koefisien transfer panas (BTU/jamft^2F) konduktivitas termal (BTU/jamftF)
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') N = input('Enter nilai N lain yang diinginkan (tekan 0 untuk keluar) = '); end fclose(fid)
Keluaran program untuk N = 50
Gradien temperatur
Temperatur
222
Gambar 7.22. Keluaran Program Contoh 7.15b
PERSAMAAN
8
DIFFERENSIAL PARSIAL
Persamaan differensial parsial secara umum untuk orde dua dalam variabel bebas x dan y dapat dinyatakan sebagai berikut : A
∂ 2u ∂x 2
+B
⎛ ∂u ∂u ⎞ ∂ 2u ∂2u + C 2 + D⎜⎜ x , y, u , , ⎟⎟ = 0 ∂x ∂y ⎠ ∂x∂y ∂y ⎝
… (8.1)
Persamaan differensial parsial dapat diklasifikasikan tergantung dari nilai B2 – 4AC. -
jika B2 – 4AC < 0, maka persamaan Eliptik
-
jika B2 – 4AC = 0, maka persamaan Parabolik
-
jika B2 – 4AC > 0, maka persamaan Hiperbolik
Jika koefisien A, B, dan C dalah fungsi x, y, dan/atau u, persamaan mungkin berubah dari satu klasifikasi menjadi klasifikasi lain pada titik bervariasi. Dalam teknik kimia persamaan yang sering dijumpai adalah persamaan differensial eliptik dan parabolik, sehingga kedua persamaan itulah yang akan dibahas dalam bab ini.
228
8.1. PERSAMAAN DIFFERENSIAL ELIPTIK Persamaan differensial eliptik terbentuk jika koefisien A dan C pada persamaan (8.1) sama dengan 1 dan B sama dengan nol, sehingga B2 – 4AC < 1.
Ada 2 type persamaan differensial eliptik yang akan dibahas, yaitu -
Persamaan Laplace A
-
∂ 2u ∂x 2
+C
∂ 2u
=0
∂y 2
… (8.2)
Persamaan Poisson A
∂ 2u ∂x
2
+C
⎛ ∂u ∂u ⎞ + D⎜⎜ x, y, u, , ⎟⎟ = 0 ∂x ∂y ⎠ ⎝
∂ 2u ∂y 2
… (8.3)
8.1.1. PERSAMAAN LAPLACE Persamaan Laplace sering muncul dari penyusunan persoalan perpindahan panas dalam suatu plat. Bentuk paling sederhana persamaan Laplace adalah ∂ 2u ∂x 2
+
∂ 2u ∂y 2
=0
… (8.4)
Penyelesaian persamaan Laplace adalah metode beda hingga. ∂ 2u ∂x 2
+
∂ 2u ∂y 2
=
u i +1, j − 2u i, j + i −1, j
(∆x )
2
+
u i, j+1 − 2u i, j + i, j−1
(∆y )2
… (8.5)
Jika diambil ∆x = ∆y = h ∂ 2u ∂x
2
+
∂ 2u ∂y
2
=
1 h2
[ ui+1,j + ui-1,j + ui,j+1 + ui,j-1 – 4ui,j] = 0
… (8.6)
Contoh 8.1. Profil Temperatur pada Plat Tentukan distribusi temperatur pada sebuah plat bujursangkar yang salah satu sisiya mengikuti persamaan T = 100*sin(π*y), sedang ketiga sisi yang lain sama dengan nol.
229 Program Matlab % Profil Temperatur pada Plat Rektanguler % Persamaan Laplace % d^2 U d^2 U % ----- + ----- = 0 % d x^2 d y^2 % Temperatur salah satu sisi = 100*sin(Pi*y) % sedang ketiga sisi yang lain = 0 % Penyelesaian dengan Metode Finite Difference % % Author's Data: Housam BINOUS % Department of Chemical Engineering % National Institute of Applied Sciences and Technology % Tunis, TUNISIA % --------------------------------------------------------------% Surakarta, Oktober 2005 % Jurusan Teknik Kimia, Fak. Teknik % Universitas Sebelas Maret % *************************************************************** % % Jumlah titik adalah 29*29 % Penyelesaian sistem AU = X dengan U adalah temperatur % yang tidak diketahui pada titik interior. 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 % Inversi Matriks dan Perhitungan temperatur M=inv(A); U=M*X'; % Plot hasil pada bentuk contour for i=1:N-1 for j=1:N-1 x(i,j)=U(j+(i-1)*(N-1)); end
230 end [i,j]=meshgrid(1:1:N-1,1:1:N-1); [c,h]=contourf(i,j,x);
Gambar 8.1. Keluaran Program Contoh 8.1
Contoh 8.2. Aliran Panas Steady State Plat tipis dari baja mempunyai ukuran 10 cm x 20 cm. Jika salah satu sisi ukuran 10 cm dijaga pada 100 OC dan ketiga sisi yang lain dijaga pada 0 OC. Tentukan profil temperatur pada plat. Untuk baja k = 0,16 kal/detik.cm2.C/cm.
Penyelesaian ∂ 2u ∂x
2
+
∂ 2u ∂y 2
=0
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 % *************************************************************** % % Jumlah titik adalah 9*19 % Penyelesaian sistem AU = X dengan U adalah temperatur % yang tidak diketahui pada titik interior. 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 % Inversi Matriks dan Perhitungan Temperatur G=inv(A); U=G*X'; % Plot hasil bentuk contour for i=1:M-1 for j=1:N-1 x(i,j)=U(j+(i-1)*(N-1)); end
232 end T = x [i,j]=meshgrid(1:1:N-1,1:1:M-1); [c,h]=contourf(i,j,x);
Keluaran program
Gambar 8.2. Keluaran Program Contoh 8.2 Contoh berikut menggunakan fungsi ellipgen dalam penyelesaian persamaan differensial Eliptik. function [a,om]=ellipgen(nx,hx,ny,hy,G,F,bx0,bxn,by0,byn) % Penyelesaian persamaan PD Parsial Eliptik % d^2 Z d^2 Z % ----- + ----- + G(x,y)*Z = F(x,y) % d x^2 d y^2 % pada plat rektanguler % Cara menggunakan fungsi ini % hx,hy = ukuran titik arah x, y % F, G = array (ny+1,nx+1) representasi F(x,y), G(x,y) % bx0, bxn = vektor baris kondisi batas pada x0, xn % by0, byn = vektor baris kondisi batas pada y0, yn % a = array (ny+1,nx+1) penyelesaian % % Nama File : ellipgen.m % Surakarta, Oktober 2005 % --------------------------------------------------------------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
Contoh 8.3. Distribusi Temperatur pada Plat Rektanguler
234 Tentukan distribusi temperatur dalam suatu plat rektanguler, dengan kondisi batas sebagai berikut x = 0, T = 100y x = 3, T = 250y y = 0, T = 0 y = 2, T = 200 + (100/3)x2 Penyelesaian untuk ukuran 6 x 6. Program Matlab % Profil Temperatur pada Plat Rektanguler % Persamaan Laplace % Plat ukuran 2 x 3 % pada x = 0, T = 100y % pada x = 3, T = 250y % pada y = 0, T = 0 % pada y = 2, T = 200 + (100/3)x^2 % Penyelesaian dengan Metode Finite Difference % % --------------------------------------------------------------% Surakarta, Oktober 2005 % Jurusan Teknik Kimia, Fak. Teknik % Universitas Sebelas Maret % *************************************************************** % clear all % Jumlah titik arah x, y nx=6; ny=6; % Ukuran titik arah x, y hx=0.5; hy=0.3333; % Input data pada kondisi batas by0=[0 0 0 0 0 0 0]; byn=[200 208.33 233.33 275 333.33 408.33 500]; bx0=[0 33.33 66.67 100 133.33 166.67 200]; bxn=[0 83.33 166.67 250 333.33 416.67 500]; % Penyelesaian dg fungsi ellipgen F=zeros(ny+1,nx+1); G=F; % PD Laplace a=ellipgen(nx, hx, ny, hy, G, F, bx0, bxn, by0, byn); % Plot hasil contourf(a) xlabel('Titik-titik dalam arah x'); ylabel('Titik-titik dalam arah y');
Keluaran program
235
Gambar 8.3. Keluaran Program Contoh 8.3.
8.1.2. PERSAMAAN POISSON Bentuk persamaan umum A
∂ 2u ∂x
2
+C
⎛ ∂u ∂u ⎞ = F⎜⎜ x, y, u , , ⎟⎟ ∂x ∂y ⎠ ∂y ⎝
∂ 2u 2
Contoh 8.4. Defleksi Membran Tentukan defleksi membran bujursangkar seragam dengan ujung-ujung tetap dijaga. Sedang beban distribusi dapat didekati dengan suatu beban pada suatu titik.
Permasalahan
ini
mengikuti
persamaan
Poisson
dengan
F(x,y)
menunjukkan beban membran. Penyelesaian dengan fungsi ellipgen. % Defleksi Membran % Persamaan Poisson % Plat ukuran 2 x 3 % d^2 U d^2 U % ----- + ----- = F (x,y) % d x^2 d y^2 % Penyelesaian dengan Metode Finite Difference % % --------------------------------------------------------------% Surakarta, Oktober 2005 % Jurusan Teknik Kimia, Fak. Teknik % Universitas Sebelas Maret % *************************************************************** % % Jumlah titik arah x, y nx=6; ny=6;
236 % Ukuran titik arah x, y hx=1/6; hy=1/6; % Input data by0=[0 0 0 0 byn=[0 0 0 0 bx0=[0 0 0 0 bxn=[0 0 0 0
pada kondisi batas 0 0 0]; 0 0 0]; 0 0 0]; 0 0 0];
% Penyelesaian dg fungsi ellipgen F=-ones(ny+1,nx+1); G=zeros(nx+1,ny+1); a=ellipgen(nx, hx, ny, hy, G, F, bx0, bxn, by0, byn); % 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
Gambar 8.4. Keluaran Program Contoh 8.4.
8.2. PERSAMAAN PARABOLIK Persamaan parabolik akan sering dijumpai dalam persamaan aliran panas satu dimensi unsteady state.
237
∂ 2u ∂x
2
cρ ∂u k ∂t
=
… (8.7)
8.2.1. METODE EKSPLISIT Metode eksplisit menyelesaikan persamaan (8.7) dengan pendekatan beda hingga sebagai berikut ∂2u ∂x 2
=
u ij+1 + 2u ij + u ij−1
… (8.8)
(∆x )2
j+1 j ∂u u i − u i = ∂t ∆t
… (8.9)
Substitusi persamaan (8.8) dan (8.9) pada persamaan (8.7) dan penyelesaian untuk uij+1 u ij+1 =
k∆t cρ(∆x )
Penyederhanaan jika u ij+1 =
(
2
(u
j i +1
k∆t
cρ(∆x )2
1 j u i +1 + u ij−1 2
)
)
⎛ 2k∆t + u ij−1 + ⎜1 − ⎜ cρ(∆x )2 ⎝ =
⎞ j ⎟u ⎟ i ⎠
… (8.10)
1 1 dengan M adalah Modulus = 2 M
… (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; uA =1; uB = 0.2;
% nilai u untuk seluruh x pada t = 0 % nilai u untuk x = 0 (bagian atas) pada t > 0 % nilai u untuk x = 1 (bagian bawah) pada t > 0
% Interval x = 0 sampai x = L, dibagi N bagian sama besar AL = 1; % panjang sisi N = 25; % sisi x dibagi sebanyak N bagian % Modulus AM = 4; % Interval waktu dibagi bagian kecil sebesar delt Jend = 100; % jumlah hitungan waktu yaitu t = delt*Jend delx = AL/N; delt = delx^2/AM; %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 % Plot x,y kondisi awal plot(x',u(:,1),'LineWidth',2) disp('kondisi awal t = 0') x = x', u0 = u(:,1) % Tidak semua hitungan perlu diplotkan disp('kondisi t >= 0') hold on for w=1:Jend j=ceil(w/20); uu(:,j) = u(:,w); t(j)=delt*w; end x=x ,t, un=uu plot(x,uu,'LineWidth',2)
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
1.0000 0.8714 0.7557 0.6620 0.5939 0.5494 0.5235 0.5100 0.5038 0.5013 0.5004 0.5001 0.5000 0.5000 0.4999 0.4998 0.4992 0.4977 0.4940 0.4859 0.4703 0.4437 0.4028 0.3466 0.2772 0.2000
1.0000 0.9099 0.8244 0.7472 0.6810 0.6272 0.5855 0.5550 0.5337 0.5197 0.5109 0.5055 0.5021 0.4996 0.4971 0.4937 0.4882 0.4798 0.4670 0.4487 0.4237 0.3914 0.3517 0.3054 0.2540 0.2000
1.0000 0.9267 0.8558 0.7896 0.7298 0.6776 0.6335 0.5974 0.5689 0.5470 0.5304 0.5179 0.5083 0.5001 0.4922 0.4835 0.4728 0.4592 0.4418 0.4200 0.3935 0.3621 0.3262 0.2865 0.2440 0.2000
1.0000 0.9366 0.8748 0.8160 0.7614 0.7121 0.6684 0.6307 0.5988 0.5722 0.5502 0.5319 0.5163 0.5023 0.4889 0.4751 0.4600 0.4428 0.4228 0.3997 0.3732 0.3434 0.3105 0.2752 0.2381 0.2000
1.0000 0.9432 0.8876 0.8341 0.7836 0.7369 0.6943 0.6562 0.6226 0.5931 0.5673 0.5447 0.5244 0.5057 0.4879 0.4700 0.4513 0.4313 0.4095 0.3855 0.3592 0.3307 0.3001 0.2677 0.2342 0.2000
un =
Gambar 8.5. Keluaran Program Contoh 8.5
241 Contoh 8.6. Distribusi Temperatur sebagai Fungsi Waktu pada Plat Tipis
Plat besi yang sangat luas mempunyai tebal 2 cm. Temperatur mula-mula dalam plat merupakan fungsi jarak dari salah satu sisinya sebagai berikut : u = 100x
untuk 0 # x # 1,
u = 100( 2 – x)
untuk 0 # x # 1.
Tentukan temperatur tebal plat sebagai fungsi x dan t, jika kedua permukaan tetap dijaga 0 OC. Untuk besi k = 0,13 kal/detik.cm. OC, c = 0,11 cal/g. OC, ρ = 7,8 g/cm3.
Penyelesaian k∆t cρ(∆x )
2
=
1 1 , = 2 M
∆x = 0,25 sehingga ∆t = 0,206 detik
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; k=0.13; c=0.11; rho=7.8; % Interval N=8; M=0.5; delx=L/N;
% % % %
tebal plat, cm konduktivitas panas, kal/det.cm.oC kapasitas panas, kal/g.oC densitas, g/cm^3
% modulus
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
25.0000 25.0000 25.0000 25.0000 21.8750 21.8750 18.7500 18.7500 16.0156 16.0156 13.6719
50.0000 50.0000 50.0000 43.7500 43.7500 37.5000 37.5000 32.0313 32.0313 27.3438 27.3438
75.0000 75.0000 62.5000 62.5000 53.1250 53.1250 45.3125 45.3125 38.6719 38.6719 33.0078
100.000 75.0000 75.0000 62.5000 62.5000 53.1250 53.1250 45.3125 45.3125 38.6719 38.6719
75.0000 75.0000 62.5000 62.5000 53.1250 53.1250 45.3125 45.3125 38.6719 38.6719 33.0078
50.0000 50.0000 50.0000 43.7500 43.7500 37.5000 37.5000 32.0313 32.0313 27.3438 27.3438
25.0000 25.0000 25.0000 25.0000 21.8750 21.8750 18.7500 18.7500 16.0156 16.0156 13.6719
0 0 0 0 0 0 0 0 0 0 0
t = 0.2062 0.4125 0.6187 0.8250 1.0313 1.2375 1.4437 1.6500 1.8563 2.0625 u = 0 0 0 0 0 0 0 0 0 0 0
Contoh 8.7. Difusi Alkohol
243 Suatu tabung panjang 20 cm mula-mula berisi udara dengan 2 % uap alkohol. Pada bagian bawah tabung berhubungan dengan bejana berisi alkohol sehingga alkohol tersebut menguap melalui tabung yang mula-mula berisi udara diam tersebut. Pada bagian ini konsentrasi alkohol dijaga tetap 10 %. Pada bagian atas (puncak) tabung uap alkohol di permukaan atas tabung dapat dianggap selalu nol.
20 cm
Gambar 8.6. Difusi Alkohol
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; D=0.119;
% panjang tube, cm % 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
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
8
12
16
20
245 u = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2.0000 1.0000 1.0000 0.7500 1.2500 1.1250 1.5000 1.4219 1.6719 1.6211 1.7852 1.7520 1.8594 1.8376 1.9080 1.8937 1.9398
2.0000 2.0000 1.5000 2.5000 2.2500 3.0000 2.8438 3.3438 3.2422 3.5703 3.5039 3.7188 3.6753 3.8159 3.7875 3.8795 3.8609
2.0000 2.0000 4.0000 3.7500 4.7500 4.5625 5.1875 5.0625 5.4688 5.3867 5.6523 5.5986 5.7725 5.7373 5.8511 5.8281 5.9025
2.0000 6.0000 6.0000 7.0000 6.8750 7.3750 7.2813 7.5938 7.5313 7.7344 7.6934 7.8262 7.7993 7.8862 7.8687 7.9255 7.9140
10.0000 10.0000 10.0000 10.0000 10.0000 10.0000 10.0000 10.0000 10.0000 10.0000 10.0000 10.0000 10.0000 10.0000 10.0000 10.0000 10.0000
8.2.2. METODE IMPLISIT Berikut penggunaan fungsi
heat
untuk penyelesaian persamaan
differensial parsial secara implisit. function u=heat(nx,hx,nt,ht,init,lowb,hib,K) % Penyelesaian persamaan PD Parsial Parabolik % d^2 U d U % K ----- = ---% d x^2 d t % Cara menggunakan fungsi ini % nx,hx = jumlah dan ukuran titik x % nt,ht = jumlah dan ukuran titik t % init = vektor baris (nx+1) nilai awal fungsi % lowb, hib = batas bawah dan atas x % lowb dan hib mempunyai nilai skalar % K = konstanta persamaan parabolik % % Nama File : heat.m % Surakarta, Oktober 2005 % --------------------------------------------------------------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.
Penyelesaian dengan menggunakan fungsi
heat,
dan diambil 15 subdivisi untuk
x dan 50 subdivisi untuk t. Program Matlab % Distribusi Temperatur Dinding Tahan Api % Persamaan Parabolik % Tebal dinding 0.3 m % Temperatur mula-mula seragam 100 oC % Secara tiba-tiba kedua sisi menjadi 20 oC % dan dijaga tetap seperti itu % Penyelesaian dengan Metode Finite Difference % Metode Implisit % --------------------------------------------------------------% Surakarta, Oktober 2005 % Jurusan Teknik Kimia, Fak. Teknik % Universitas Sebelas Maret % *************************************************************** % Data-data K=5e-7; hx=0.02; nx=15; ht=440; nt=50;
% % % % %
m^2/detik ukuran interval x jumlah interval x detik, ukuran interval t 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
Gambar 8.7. Keluaran Program Contoh 8.8.
DAFTAR PUSTAKA
---, 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”, AdisonWesley 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.