Komputasi Proses Teknik Kimia 2014
September 10, 2017 | Author: rahulbahrul | Category: N/A
Short Description
Komputasi Proses Teknik Kimia...
Description
KATA PENGANTAR MATLAB adalah sebuah bahasa pemrograman untuk komputasi teknik yang mengintegrasikan komputasi, visualisasi dan pemrograman dalam suatu lingkungan yang mudah digunakan. Permasalahan dan solusinya dapat diekspresikan dalam bentuk notasi-notasi matematis yang sudah dikenal. Dibandingkan dengan bahasa pemrograman lainnya seperti Fortran, Turbo Pascal ataupun Quick Basic, bahasa pemrograman MATLAB ini relatif lebih mudah dipelajari dan diaplikasikan untuk kebutuhan komputasi sederhana, rumit hingga sangat rumit. Para pemula yang pernah mempelajari metode-metode perhitungan numerik pasti akan merasa takjub dengan MATLAB ini, karena metode-metode numerik yang dipelajari dengan susah payah di bangku kuliah ternyata hanya merupakan hal kecil saja karena MATLAB akan dapat menyelesaikannya dengan sangat mudah dan sangat cepat. Buku ini disusun dengan satu tujuan, yakni memudahkan pengguna pemula, khususnya Mahasiswa Teknik Kimia yang sedang mempelajari MATLAB, dapat memahami MATLAB dengan lebih cepat sehingga mampu menyelesaikan permasalahan-permasalahan dalam teknik kimia, baik secara manual (perhitungan satu-satu, seperti layaknya kalkulator) atau secara pemrograman (perhitungan serentak). Bab I akan membahas tentang komponen-komponen dari MATLAB yang penting seperti matrik dan operasioperasi matematika terhadap matrik. Pada bab II akan dibahas fungsi-fungsi MATLAB yang penting yang dapat dipergunakan untuk menyelesaikan banyak model-model matematika yang berhubungan dengan operasioperasi teknik kimia. Terakhir, pada bab III akan dibahas contoh-contoh soal beserta jawabannya dan soal-soal untuk menguji tingkat pemahaman tentang penggunaan MATLAB ini. Penyusun mengucapkan terima kasih kepada semua pihak yang telah membantu penyelesaian buku ini. Akhirnya, penyusun berharap semoga buku ini berguna untuk pengembangan perkuliahan mata kuliah Komputasi Proses atau Matematika Teknik Kimia pada Jurusan Teknik Kimia Politeknik Negeri Ujung Pandang. Makassar, Oktober 2014 Penyusun
DAFTAR ISI KATA PENGANTAR .............................................................................................................. iii DAFTAR ISI ...................................................................................................................... ......... iv Bab 1
MENGENAL MATLAB DAN KOMPONEN-KOMPONENNYA 1.1 1.2 1.3 1.4
1.5
1.6 Bab 2
Pendahuluan ...................................................................................... Memulai MATLAB ........................................................................... Matrik ................................................................................................. Ekspresi 1.4.1 Ekspresi Variabel ................................................................... 1.4.2 Ekspresi Angka ....................................................................... 1.4.3 Ekspresi Operator ................................................................... 1.4.4 Ekspresi Fungsi ...................................................................... Operasi-Operasi Matematis dan Analisis Data 1.5.1 Fungsi-Fungsi Polinom dan Interpolasi ................................. 1.5.2 Permasalahan Harga Nol (fzero) ............................................ 1.5.3 Integral Numerik (quad) ......................................................... 1.5.4 Regresi Polinom dan Linearisasi (bck slash) ........................ 1.5.5 Penyelesaian Sistem Persamaan Linear (back slash) ............. 1.5.6 Penyelesaian Sistem Persamaan Non-Linear (fsolve) ............ 1.5.7 Minimasi Fungsi (fminbnd dan fminsearch) .......................... 1.5.8 Persamaan Diferensial Ordiner (ode45 ; ode15i ; ode15s) ..... Latihan Soal-Soal ...............................................................................
1 1 2 4 5 6 12 14 24 26 27 37 37 39 42 44
MEMBUAT PROGRAM MATLAB 2.1 2.2 2.2 2.3 2.4
2.5 2.6 2.7 2.8
Pendahuluan ...................................................................................... Membuat M-File ................................................................................ Komponen-Komponen Program Dasar .............................................. Pemrograman M-File ......................................................................... 2.3.1 Script ...................................................................................... 2.3.2 Function ................................................................................. Program Control Statements .............................................................. 2.4.1 Conditional Control ............................................................... 2.4.2 Loop Control .......................................................................... 2.4.3 Break ...................................................................................... Referensi Simbol-Simbol .................................................................. Built-in Function ................................................................................ Grafik ................................................................................................. 2.7.1 Penggambaran dengan plot .................................................... 2.7.2 Penggambaran dengan fplot ................................................... Beberapa Trik Pemrograman 2.8.1 Membuat Gambar Fungsi Polinom ........................................ 2.8.2 Permasalahan Harga Nol ........................................................ 2.8.3 Permasalahan Persamaan Diferensial .....................................
50 50 51 51 51 52 55 55 57 59 60 60 60 60 62 64 64 67
2.9 Bab 3
2.8.4 Permasalahan Metode Least Square ....................................... 68 Latihan Soal-Soal ............................................................................... 73
KOMPUTASI TEKNIK KIMIA Pendahuluan 3.1 Pengayakan ...................................................................................... 3.2 Sieving .............................................................................................. 3.3 Hubungan Cp versus T .................................................................... 3.4 Hubungan P versus T ....................................................................... 3.5 Proses Filtrasi Pada FTU ................................................................. 3.6 Continuous Countercurrent Dryer .................................................. 3.7 Proses Level ..................................................................................... 3.8 Batch Sedimentation ....................................................................... 3.9 Distilasi Sederhana Pada Tekanan Atmosfer .................................. 3.10 Flash Vaporization 1 ...................................................................... 3.11 Flash Vaporization 2 ...................................................................... 3.12 Kecepatan Aliran dalam Pipa .......................................................... 3.13 Tangki Berpengaduk ........................................................................ 3.14 Reaksi Pembentukan Etil Ester ........................................................ 3.15 Bubble Point dan Dew Point ........................................................... 3.16 Plate Distillation ............................................................................. 3.17 Persamaan Keadaan Untuk Real Gas ..............................................
DAFTAR PUSTAKA
................................................................................................
80 82 87 89 91 93 95 96 98 101 103 106 108 109 111 112 114 116
BAB 1 MENGENAL MATLAB
1.1
Pendahuluan
Pada bab ini Anda akan mempelajari MATLAB dan mencoba menyelesaikan beberapa permasalahan yang mungkin pernah diangkat pada mata kuliah Matematika Teknik atau mata kuliah lainnya dengan menggunakan fungsi-fungsi MATLAB atau fungsi-fungsi dengan algoritma buatan sendiri. Jika Anda menginginkan informasi yang lebih detail berkaitan dengan topik tertentu dan tidak terdapat dalam buku ini, maka Anda dipersilahkan mencari sendiri informasi tersebut pada help menu. Semua yang Anda butuhkan ada disana.
1.2
Memulai MATLAB
MATLAB pada sistem Windows dapat dijalankan melalui beberapa cara, misalnya dengan klik ganda pada ikon MATLAB pada desktop atau melalui start menu. Segera setelah MATLAB dijalankan, maka muncul MATLAB desktop, yang berisikan tools (graphical user interfaces) untuk mengatur file, variabel dan aplikasi-aplikasi. MATLAB desktop terdiri atas Command Line Window, Command History, Current Directory, Workspace, Help, dan Profiler. Gambar 1.1 berikut memperlihatkan Command Line Window yang otomatis tampil ketika Anda menjalankan MATLAB.
Gambar 1.1 : Tampilan Command Line Window
1
Anda dipersilahkan untuk meng-explore sendiri Command Line Window pada MATLAB desktop ini. Jika Anda mengetikkan kode-kode MATLAB pada
Command Line Window dan setelah itu menekan tombol ENTER, maka kodekode tersebut langsung di eksekusi dan nilai-nilai variabel dan konstanta akan tetap ada dan tersimpan didalam memori, tentu saja selama Anda belum menghapusnya. Dengan Command Line Window ini, Anda dapat menggunakan MATLAB selayaknya sebuah kalkulator yang canggih, yang memiliki kemampuan diatas rata-rata kalkulator yang ada. Sebelum Anda dapat menggunakan MATLAB seperti selayaknya sebuah kalkulator, Anda perlu memahami terlebih dahulu tentang matrik, jenis-jenis ekspresi dan beberapa fungsi khusus yang dapat membantu Anda menyelesaikan permasalahan-permasalahan matematika dan sekaligus membuat suatu analisis / interpretasi data.
1.3 Matrik Matrik di dalam MATLAB pada dasarnya adalah sekumpulan data yang tersusun dalam baris dan kolom sehingga seakan-akan membentuk bidang segi empat. Dalam hal ini, MATLAB mampu mengidentifikasi apakah suatu matrik merupakan sebuah matrik skalar, matrik kuadrat, vektor baris atau vektor kolom. Matrik skalar adalah matrik yang memiliki elemen matrik yang tersusun dalam 1 baris dan 1 kolom saja atau dengan kata lain hanya memiliki 1 elemen saja. Matrik yang elemen-elemennya tersusun dalam 1 kolom atau 1 baris saja disebut vektor, sehingga sehubungan dengan hal tersebut dikenal 2 jenis vektor, yakni vektor baris dan vektor kolom. Matrik yang elemen-elemennya tersusun sedemikian rupa sehingga memiliki jumlah baris yang sama banyak dengan jumlah kolom disebut matrik kuadrat. Berikut ini adalah aturan atau cara penulisan yang digunakan dalam pembuatan matrik di dalam MATLAB: (1) elemen elemen matrik yang terletak dalam 1 baris dipisahkan oleh tanda koma atau spasi (2) pergantian semikolon ” ; ”
setiap
baris
matrik
menggunakan
tanda
(3) semua elemen matrik diletakkan didalam tanda kurung sudut ” [ ] ”.
2
Berikut adalah contoh data matrik dengan penulisan yang benar: A=10
A adalah matrik skalar dengan nilai 10
A=[1 4] dan B=[1;4] A adalah vektor baris dan B vektor kolom A=[1 3 5 ; 2 2 4] A=3:12 A=3:4:12
Matrik A berdimensi 2 x 3 (2 baris dan 3 kolom)
Vektor A bernilai 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 Vektor A bernilai 3 , 7 , 11
A=[3:4:12 4:4:10] Vektor A bernilai 3 , 7 , 11 , 4 , 8 A=[3:4:12 4:4:12] Vektor A bernilai 3 , 7 , 11 , 4 , 8 , 12 A=[3:4:12 ; 2:2:9] Ekspresi salah, dimensi matrik tidak konsisten A=[3:4:12 ; 4:4:12] Matrik A berdimensi 2 x 3 (2 baris dan 3 kolom) A=[3:4:12 ; 4:4:12]' Matrik A berdimensi 3 x 2 (3 baris dan 2 kolom) Berikut adalah contoh cara mengakses data matrik (matrix
indexing) dengan penulisan yang benar: Jika matrik A=[1 2 3 4 ; 5 6 7 8 ; 9 10 11 12], maka A(1 : 3) adalah vektor baris [1 5 9], sedangkan A(1 : 5) adalah [1 5 9 2 6] A(1 , 3) adalah elemen matrik A pada baris ke- 1 dan pada kolom ke- 3, yaitu 3 A(1 , 2 : 3) adalah sebuah vektor baris [2 3], yang mana merupakan elemen matrik A pada baris ke - 1 dan pada kolom ke- 2 dan ke- 3. A(: , 2 : 4) adalah elemen-elemen matrik A pada semua baris dan kolom ke- 2, 3 dan 4. Ekspresi yang agak identik adalah A(: , 1)=[ ]. Mengapa disebut agak identik?? A([1 3] , 2 : 4) adalah elemen matrik A pada baris ke- 1 dan ke- 3 dan pada kolom ke- 2, 3, dan 4 A(2 : 3 , :).^2 adalah kuadrat setiap elemen matrik A pada baris ke- 2 dan 3
3
sum(A) adalah jumlah elemen matrik A pada setiap kolom, jadi [15 18 21 24] sum(sum(A))
adalah jumlah semua elemen matrik A, jadi [78]
sum(sum(A).^2) menghasilkan [1566]. Mengapa?? Jika diketahui A=1 : 5, B=6 : 10, C=11 : 15, dan D=16 : 20, maka E=[A; B; C; D] adalah operasi untuk membuat matrik baru E dengan baris ke-1 berisi vektor A, baris ke- 2 berisi vektor B, baris ke- 3 berisi vektor C dan baris ke- 4 berisi vektor D. Sebaliknya F=[A' B' C' D'] adalah operasi untuk membuat matrik dengan kolom-kolom berisi A, B, C, dan D.
Untuk menghapus misalnya seluruh elemen pada baris ke- 2 dari matrik E, maka digunakan E(2 , :)=[ ].
Untuk menghapus misalnya seluruh elemen matrik F pada kolom 2 dan 4 , maka digunakan F(: , [2 4])=[ ]
1.4
Ekspresi
Seperti pada kebanyakan bahasa-bahasa pemrograman komputer pada umumnya, MATLAB juga menyediakan ekspresi-ekspresi matematis, diantaranya adalah ekspresi variabel, ekspresi angka, ekspresi operator dan ekspresi fungsi. Ekspresi-ekspresi pada MATLAB tersebut dapat dikatakan selangkah lebih maju dibandingkan dengan ekspresi-ekspresi pada bahasa pemrograman komputer yang lain, karena semua ekspresi MATLAB berbasis pada data matrik seperti akan Anda lihat pada pembahasanpembahasan lebih lanjut.
1.4.1 Ekspresi Variabel MATLAB tidak mensyaratkan variabel harus dideklarasikan atau diberi dimensi terlebih dahulu. Saat MATLAB mengeksekusi ekspresiekspresi yang Anda tuliskan dan menemukan suatu variabel baru, maka MATLAB secara otomatis akan membuat variabel baru tersebut dan menempatkannya pada memori internal MATLAB. Jika variabel sudah ada sebelumnya didalam memori, maka MATLAB hanya akan mengganti nilainya saja.
4
Nama variabel dimulai dari sebuah huruf tertentu, kemudian dapat diikuti dengan sejumlah angka, huruf atau underscores ( _ ) atau gabungannya. Pada prinsipnya, MATLAB dapat menerima 63 karakter sebagai nama dari variabel, dan selain itu MATLAB juga membedakan antara huruf besar dan huruf kecil. Berikut adalah contoh nama variabel yang benar : a; A, a1, A2; WperD ; d_media_filter ; rho ; TebalCakeRataRata; fungsi_di_trial
1.4.2 Angka
Ekspresi
MATLAB mengekspresikan suatu angka dengan menggunakan notasi desimal dengan tambahan tanda titik desimal dan tanda plus atau minus. Pada notasi scientific digunakan simbol huruf e untuk menunjukkan perkalian dengan 10 pangkat. Contoh : 1.2345e+002 1,2345 x 102 123,45 Angka merupakan tipe data numerik yang meliputi integer (bilangan bulat), single- dan double-precision floating-point numbers (bilangan-bilangan nyata). Nilai maksimum dan minimum dari bilangan nyata dapat diperoleh melalui fungsi realmin dan realmax. Pada default setting, semua angka disimpan pada memori internal MATLAB sebagai double-precision floating-point dan ditampilkan dengan 5 digit ( format short ), tetapi sesuai kebutuhan, angka juga dapat diubah penampilannya menjadi 15 digit ( format long ), eksponensial ( format short e atau format long e ), pecahan ( format rational ), dan heksa desimal ( format hex ). Anda dipersilahkan untuk mencoba satu-persatu format-format di atas pada MATLAB desktop Command Line Window. Bilangan kompleks merupakan tipe data dari 2 bagian terpisah, yaitu bagian bilangan nyata imaginer. Bagian bilangan imaginer dinyatakan tambahan huruf i atau j ( contoh bilangan kompleks :
numerik yang terdiri dan bagian bilangan dengan menggunakan 1-2i ).
MATLAB juga menggunakan nilai-nilai khusus yang menyatakan – Inf , Inf ( infinity, tak terhingga, contoh: log(0), exp(10000) atau 1/0 ) dan NaN ( non a number, bukan angka, untuk menyatakan suatu bilangan nyata maupun bilangan kompleks, contoh: 2i/0, 0/0, Inf/Inf )
5
1.4.3 Ekspresi Operator Operator-operator pada MATLAB terbagi dalam tiga kategori, yaitu operator aritmatika, operator relasional, dan operator logika. Operator Aritmatika Selain operator-operator dasar seperti penjumlahan (+), pengurangan (–), perkalian (*), pembagian ( / ), dan perpangkatan ( ^ ), MATLAB juga menggunakan operator khusus, yakni perkalian antar elemen dari 2 matrik ( .* ), pembagian antar elemen dari 2 matrik ( ./ ) dan perpangkatan untuk elemen- elemen matrik ( .^ ) serta transpose ( ' ) dan kolon ( : ). Berikut adalah penjelasan operator-operator menggunakan contoh vektor A=[1 2 3] dan B=[2 3 4] (1) 3]
tersebut
dengan
Operasi A' dan A.' adalah transpose dari A menghasilkan vektor [1; 2; >> A=[1 2 3], A', A.' 1
2
3
ans = 1 2 3
ans = 1 2 3
6
(2) Operasi A+B atau A-B adalah penjumlahan atau pengurangan antara matrik A dan matrik B. Operasi matrik ini berhasil jika matrik A dan matrik B memiliki ukuran yang sama atau salah satunya merupakan matrik skalar. >> A+B , A-B ans = 3
5
7
-1
-1
ans = -1 (3)
Operasi A*B adalah perkalian antara matrik A dan B. Operasi berhasil jika jumlah kolom matrik A sama dengan jumlah baris matrik B, atau salah satunya merupakan skalar. >> A*B ??? Error using ==> mtimes Inner matrix dimensions must agree. >> A'*B , A*B' , 3*A ans = 2
3
4
4
6
8
6
9
12
ans = 20 ans = 3 6
9
7
(4) Operasi A.*B adalah perkalian antar elemen matrik A dan B. Operasi berhasil jika A dan B berukuran sama atau salah satunya merupakan matrik skalar. >> A.*B , B.*A ans = 2 6 12 ans = 2
6
12
(5)
Operasi A/B, baca A slash B Lihat referensi fungsi MATLAB : mrdivide.
(6)
Operasi A./B adalah pembagian antar elemen-elemen matrik dengan hasil A(i,j)/B(i,j). Operasi ini berhasil jika matrik A dan B memiliki dimensi sama atau salah satunya merupakan matrik skalar. >> A/B , A./B ans = 0.6897
ans = 0.5000
0.6667
0.7500
Contoh-contoh lain : A/2
[0.5000 1.0000
1.5000] A./2
[0.5000
1.0000 1.5000] 2/A
error, karena dimensi matrik tidak sesuai
2./A
[2.0000 1.0000 0.6667]
8
(7)
Operasi A\B, baca A backslash B. Lihat referensi fungsi : mldivide. Operasi backslash ( \ ) ini digunakan pada penyelesaian persamaan linear dan analisis regresi. Lihat sub bab 1.4.4 dan 1.4.5
(8)
Operasi A^B : Lihat referensi fungsi : mpower. Jika salah satu matrik skalar, maka matrik lainnya harus matrik kuadrat. >> A^B ??? Error using ==> mpower At least one operand must be scalar. >> A^3 ??? Error using ==> mpower Matrix must be square. >> 3^A ??? Error using ==> mpower Matrix must be square.
(9) Operasi A.^B menghasilkan matrik dengan elemen A(i,j) pangkat B(i,j). Operasi ini berhasil jika A dan B memiliki dimensi yang sama atau salah satunya merupakan matrik skalar. >> A.^B , B.^A ans = 1 8
81
ans = 2
9
64
9
Operator Relasional Operator relasional membandingkan operand secara kuantitatif, dan meliputi lebih kecil dari ( < ), lebih kecil dari atau sama dengan ( ), lebih besar dari atau sama dengan ( >= ), sama dengan ( = = ), dan tidak sama dengan ( ~= ). Operator-operator relasional ini menghasilkan data logika berupa 1 untuk true dan 0 untuk
false. >> A=5, B=A*ones(3 , 3) A = 5
B= 5
5
5
5
5
5
5
5
5
>> X=A>=[1 2 3 ; 4 5 6 ; 7 8 10] , Y=B>=[1 2 3 ; 4 5 6 ; 7 8 10] X= 1
1
1
1
1
0
0
0
0
1
1
1
1
1
0
0
0
0
Y=
10
>> X==Y, X=Y ans = 1 1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
ans =
ans =
Operator Logika Tipe data logika merepresentasikan logika benar atau salah menggunakan angka 1 untuk benar dan 0 untuk salah. Operator logika menggunakan AND, OR, NOT atau dengan menggunakan simbol ” & ”, ” | ” , dan ” ~ ”. Berikut adalah tabel logika yang dapat membantu Anda memahami operator-operator logika ini. Tabel 1.1 : Tabel Logika A B A & B atau
A | B atau
~A atau
or(A,B) 0
not(A)1
0
0 and(A,B)0
0
1
0
1
1
1
0
0
1
0
1
1
1
1
0
11
Contoh 1: Jika A=5; B=A*ones(3,3), maka ekspresi logika X=A&B atau X=and(A,B) akan menghasilkan matrik [1 1 1; 1 1 1; 1 1 1]. Buktikan!! Contoh 2: Ekspresi 3>6 menghasilkan 0 sedangkan ekspresi (5*10)>40 menghasilkan 1 dan ekspresi [30 40 50]>40 menghasilkan [0 0 1]. Contoh 3: Jika a=5; dan b=[4 5 6], maka ekspresi or(a>=b,a>b) akan menghasilkan [1 1 0] sedangkan and(a>=b,a>b) menghasilkan [1 0 0]
1.4.4 Ekspresi Fungsi MATLAB menyediakan fungsi standar dalam jumlah yang banyak sekali, seperti fungsi-fungsi matematika dasar (abs, sqrt, exp, sin , dan lain lain) dan matematika tinggi. Daftar fungsi-fungsi MATLAB ini dapat Anda lihat pada MATLAB online help, yakni di MATLAB-Functions-Alphabetical List Fungsi-fungsi seperti sqrt dan abs merupakan built-in function dari MATLAB dengan kode-kode komputasi yang tidak dapat dilihat. Fungsifungsi lain yang bukan merupakan built-in function dapat dilihat kode-kode komputasinya dan dimodifikasi. MATLAB juga menyediakan beberapa fungsi khusus yang menghasilkan konstanta-konstanta penting seperti pi untuk 3.14159265..., i atau j untuk unit bilangan imaginer, eps untuk ketelitian relatif yang -52
setara dengan 2 , namelengthmax untuk panjang maksimum nama variabel, realmin dan realmax untuk angka floating-point terkecil/terbesar, Inf untuk ketakterhinggaan dan NaN untuk bukan sebuah angka. Nama-nama fungsi boleh diubah dan isinya diganti dengan nilai variabel baru, misalnya eps=1.e-6 dan pi=3.14 Fungsi-fungsi MATLAB selain built in function merupakan kelompok M-file function dan salah satunya adalah anonymous function. Konstruksi M-file function secara umum akan dijelaskan pada bab 2 , sedangkan konstruksi anonymous function secara umum mengikuti cara penulisan berikut : Nama_Fungsi=@(Daftar_Argumen) Ekspresi_Persamaan
12
Nama_Fungsi adalah suatu variabel yang melambangkan variabel bebas dari suatu persamaan tertentu. Adapun Daftar_Argumen adalah daftar semua variabel tidak bebas dari persamaan tersebut. Nama_Fungsi dan argumen juga merupakan suatu variabel sehingga mengikuti aturan penamaan untuk variabel. Contoh 1: Untuk menghitung nilai fungsi
y1
2 3
x 4
pada x = [1 2 3], maka
>> y=@(x) 1 + 2./(x.^3+4); x1=[1 : 3]'; y1=y(x1); [x1 y1] ans = 1.0000 1.400 0 2.0000 1.166 7 3.0000 1.064 5 Contoh 2: misalnya
Jika r adalah fungsi dari x ,
y dan z,
2
3
r 3x 2 y 3z
, maka nilai r untuk x=1 ,y=2 dan z=3 didapat dengan kode-kode berikut: >> r=@(x,y,z) 3*x.^2+2*y.^3-2*z.^4; r(1,2,3) ans = -143 MATLAB juga memiliki fungsi yang tidak membutuhkan masukan argumen. Perhatikan contoh pendefinisiannya berikut : >> t=@( ) datestr(now) t= @( ) datestr(now) >> t( ) ans = 04-Oct-2014 04:51:39
13
4
Beberapa fungsi anonymous juga dapat didefinisikan sekaligus seperti: A = {@(x) 3*x.^2, @(y) 2*y.^3, @(x,y) 3*x.^2+2*y.^3} Ekspresi A{1}(2) adalah cara menjalankan fungsi pertama untuk x=2, sehingga operasi seperti A{1}(2)+A{2}(3) pada prinsipnya identis dengan A{3}(2,3) Untuk memudahkan dalam membaca fungsi, terutama fungsifungsi yang panjang dan rumit, maka perlu melakukan trik penulisan seperti contoh berikut: A1=@(x) 3*x.^2; A2=@(y) 2*y.^3; A3=@(x,y) 3*x.^2+2*y.^3; A={A1,A2,A3}
1.5 Operasi-Operasi Matematis dan Analisis Data Pada sub bab ini, Anda akan melihat MATLAB dapat dipergunakan seperti layaknya sebuah kalkulator dengan fasilitas yang efisien. Bersama dengan contoh-contoh yang sudah dibahas pada subsub bab sebelumnya, topik-topik bahasan pada sub-bab ini juga akan memberikan pengetahuan pada Anda, bahwa MATLAB memang lebih baik dibandingkan dengan kalkulator biasa.
1.5.1 Fungsi-Fungsi Polinom dan Interpolasi Anda dipersilahkan meng-explore sendiri fungsi built in untuk operasi- operasi standar terhadap polinom pada MATLAB online help di MATLAB- Mathematic-Polynomials and Interpolation. Secara umum, sebuah fungsi polinom diwakili oleh vektor koefisien dari persamaan fungsinya. Sebagai contoh, misalnya diketahui 5 2 sebuah fungsi polinom 3x – 2x + x -5 , maka untuk memasukkan fungsi ini ke dalam MATLAB digunakan ekspresi sebagai berikut: >> p=[ 3 0 0 -2 1 -5 ] p= 3
0
0
-2
1
-5
Ingat : Vektor koefisien dari persamaan fungsi polinom dimulai dari pangkat tertinggi hingga ke konstanta, bukan sebaliknya. polyval(p,x) Ekspresi polyval(p,x) akan menghasilkan nilai fungsi polinom yang diwakili oleh vektor koefisien p pada nilai x tertentu. Dalam hal ini nilai x bisa skalar (satu nilai saja) atau merupakan suatu vektor dengan beberapa elemen. Contoh : Evaluasi nilai polinom x3 – 3 x2 – 13 x + 15 pada x=1, 2, 3, 4, dan 5 >> p=[1 -3 -13 15], r=polyval(p,[1 2 3 4 5]) p= 1
-3 -13
15
r= 0 -15 -24 -21
0
Ekspresi yang identik dengan ekspresi diatas adalah seperti berikut: >> p=[1 -3 -13 15]; x=[1:5]; r=polyval(p,x) Dengan menggunakan fungsi MATLAB polyval ini, maka kita juga bisa mendefinisikan
fungsi
polinom
dalam
bentuk
fungsi
anonymous,
sehingga contoh diatas juga dapat diselesaikan dengan cara sebagai berikut: >> p=[1 -3 -13 15]; y=@(x) polyval(p,x); x=[1:5]; r=y(x) roots(p) dan poly(r) Ekspresi r=roots(p) akan menghasilkan vektor sebagai titik-titik potong terhadap sumbu x dari fungsi polinom, yang mana berarti juga harga nol dari fungsi polinom tersebut, termasuk juga yang imajiner. Dalam hal ini p adalah vektor koefisien dari fungsi polinom yang dievaluasi.
Ekspresi q=poly(r) akan menghasilkan vektor koefisien fungsi polinom berdasarkan masukan vektor r sebagai harga nol fungsi polinom yang dicari. Contoh : Dari polinom p dengan persamaan x3 – 3 x2 – 13 x + 15 tentukanlah vektor r sebagai titik-titik potong terhadap sumbu x, kemudan buktikan dari vektor r tersebut dapat dihasilkan kembali vektor koefisien polinom p. >> p=[ 1 q=poly(r)
-3
-13 15 ], r=roots(p),
p = 1
-3 -13
15
r = 5.0000 -3.0000 1.0000
q = 1.0000 -3.0000 -13.0000 15.0000 Ekspresi r=roots(p) diatas menghasilkan vektor r=[5 ; -3 ; 0] sebagai harga nol dari polinom ( titik-titik potong terhadap sumbu x ). Sebaliknya, operasi berikutnya dengan q=poly(r) menghasilkan vektor koefisien fungsi polinom dengan urutan mulai dari pangkat tertinggi hingga konstanta. Dari contoh ini terlihat bahwa fungsi-fungsi MATLAB roots dan poly merupakan sepasang fungsi yang sifatnya saling berkebalikan. Polyder(p) dan polyint(p) atau polyint(p,k) Ekspresi polyder(p) akan menghasilkan vektor koefisien polinom hasil diferensiasi fungsi polinom dengan koefisien p sedangkan ekspresi polyint(p) dan polyint(p,k) akan menghasilkan vektor koefisien polinom hasil integrasi tidak tentu dari fungsi polinom p. Dalam hal ini k adalah konstanta integrasi yang ditetapkan sepihak, artinya jika diinginkan hasil integrasi yang memiliki kontanta integrasi, maka nilai k harus ditetapkan.
Contoh 1: Diferensialkan polinom x2 - 2 x – 15 dan kemudian integralkan hasilnya. >> p=[1 -2 -15]; d=polyder(p), q=polyint(d), qk=polyint(d,-15) d= 2
-2
q= 1
-2
0
qk = 1 -2 -15 Terlihat bahwa ekspresi polyint(d) menghasilkan vektor [1 -2 0], yang mana merupakan integral dari fungsi polinom d = 2x - 2 , dan konstanta integrasi ditetapkan sepihak sama dengan nol. Untuk 2 mendapatkan kembali fungsi polinom p = x – 2x – 15, maka digunakan polyint([2 -2],-15). Untuk hitung integral tentu terhadap fungsi polinom, maka dapat dimanfaatkan secara bersama-sama fungsi MATLAB polyint dan polyval seperti contoh 2 berikut: Contoh 2 : Integralkan polinom p = x2 – 2x – 15 dengan batas integrasi atas dan bawah berturut-turut adalah 3 dan 0. >> p=[1 -2 -15]; q=polyint(p); Q=polyval(q,3)polyval(q,0) Q = -45 conv dan deconv Ekspresi ab=conv(a,b) menghasilkan vektor hasil perkalian antara vektor koefisien polinom a dan b. Misal a = x + 5 ; b = x + 3 dan c = x - 1, maka perkalian 3 polinom ini dapat dilakukan dengan cara sebagai berikut: 2
>> a=[1 5]; b=[1 0 3]; c=[1 -1]; ab=conv(a,b), abc=conv(ab,c) ab = 1
5
3
4
-2
15
abc = 1
12 -15
Sebaliknya, jika polinom ab dibagi dengan b, maka operasi dalam MATLAB-nya adalah sebagai berikut: >> [h s]=deconv(ab,b) h= 1
5
s= 0
0
0
0
Dalam hal ini h adalah vektor koefisien polinom hasil pembagian dan s adalah vektor koefisien polinom sisa pembagian. residue Untuk menyederhanakan suatu pecahan polinom menjadi pecahan-
a( x )
pecahan parsialnya dalam bentuk : x) ,
b( x)
r1
r2
x p1 x p2
r n
k(
x pn
maka digunakan fungsi MATLAB berikut: [r p k]=residue(a,b) Contoh polinom 3
1:
Untuk
mendapatkan
pecahan-pecahan
parsial
2
2x 3x 32x 15 2
x 2x 15
, maka digunakan ekspresi-ekspresi berikut:
dari
>> a=[2 3 -32 15]; b=[1 2 -15]; [r p k]= residue(a,b) r= 0 0
p= -5 3
k= 2
-1
Hasil operasi ini memberi arti, bahwa pecahan polinom diatas dapat disederhanakan menjadi pecahan-pecahan parsial dalam bentuk :
0 0 2x 1 2x 1 x5 x3 3
Contoh 2: berikut
Sederhanakan pecahan
2
2x 3x 32x 20 2
x 2x 15
>> a=[2 3 -32 20]; b=[1 2 -15]; [r p k]= residue(a,b) r= -0.6250 0.6250 p= -5 3 k= 2
-1 3
Jadi :
2
2x 3x 32x 20 2
x 2x 15
0.6250 x5
0.6250 x3
2x 1
, maka
polyfit(x,y,n) Jika vektor data x berpasangan dengan vektor data y dan dicari fungsi polinom yang memiliki kesalahan kuadrat terkecil ( SSE, sum of the squared errors, least square method ) terhadap semua data (x,y), maka hubungan fungsional y = f(x) sebagai suatu fungsi polinom orde ke- n tercakup melalui penggunaan fungsi MATLAB p=polyfit(x,y,n). Dalam hal ini, p adalah vektor koefisien dari persamaan fungsi polinom yang dicari. (baca keterangan lebih lanjut pada MATLAB online help). Contoh 1 : Dari data x dan y berikut, nyatakan hubungan fungsional antara keduanya sebagai fungsi polinom order ke- 3 kemudian tentukan prediksi nilai y berdasarkan fungsi polinom tersebut untuk nilai x=[1 2 3 4 5]. Hitung pula nilai error kuadrat ( SSE) -nya. x
1
2
y
9
11
3
7
8
11.3 12.5 13.1
10 22
>> x=[1 2 3 7 8 10]; y=[9 11 11.3 12.5 13.1 22]; p3=polyfit(x,y,3), polyval(p3,[1:5]) p3 = 0.0726 -0.9925
4.2963
5.6345
ans = 9.0108 10.8374 11.5496 11.5829 11.3727 >> SSE=sum((ypolyval(p3,x)).^2) SSE = 0.6715 Untuk memperlihatkan kinerja fungsi polyfit ini, maka fungsi polinom p3 dapat dievaluasi nilai fungsinya y1 pada setiap nilai x1=[1:0.1:10] sebagai berikut : >> x1=1:0.1:10; y1=polyval(p3, x1); plot(x,y,'o',x1,y1); grid on;
>> legend(4,'data','polyfit')
22
20
18
16
14
12
10 data polyfit 8 1
2
3
4
5
6
7
8
9
10
Gambar 1.2 : Interpretrasi data x dan y sebagai fungsi polinom Gambar 1.2 yang dihasilkan memperlihatkan bahwa polyfit menghasilkan fungsi polinom dengan kurva fungsi yang tidak selalu melewati titik-titik data (x,y). Anda bisa membandingkannya nanti dengan fungsi MATLAB lainnya, misalnya interp1 Catatan : Anda hanya boleh mencocokkan 6 pasang data (x,y) diatas sebagai fungsi polinom order ke- 1 sampai dengan order ke- 5 saja. Contoh 2 : Data x dan y berikut dicocokkan untuk memiliki hubungan fungsional sebagai fungsi polinom y = ax3 + b. Tentukan nilai a dan b terbaik dan perkiraan data y untuk x=[2.5 3.5] x
1
2
3
4
5
6
y
5
26
83
194
377
650
>> x=1:6; y=[5 26 83 194 377 650]; r=[2.5 3.5]; >> ab=polyfit(x.^3,y,1), ab(1)*r.^3+ab(2) ab = 3.0000
2.0000
ans = 48.8750 130.6250 Pada contoh 2 terlihat modifikasi penggunaan polyfit(x,y,n), yang mana argumen x disubstitusikan dengan x.^3, sehingga pada akhirnya terbentuk persamaan fungsi polinom order 1. Perlakuan yang sama bisa juga diterapkan untuk argumen y. interp1 Interpolasi adalah perkiraan nilai titik data yang terletak diantara titik-titik data yang sudah diketahui berdasarkan suatu asumsi bahwa semua titik-titik data tersebut dilewati oleh suatu kurva fungsi tertentu. Sedangkan ekstrapolasi adalah perkiraan nilai-nilai titik data diluar range dari titik data yang diketahui. Terdapat beberapa pilihan syntax interpolasi/ekstrapolasi, diantaranya adalah : yi = interp1(x,y,xi) yi = interp1(x,y,xi,'method') yi = interp1(x,y,xi,'method','extrap') Metode interpolasi diantaranya adalah 'linear', 'spline' dan 'cubic'. Contoh 1 : Berdasarkan data x dan y pada tabel dibawah ini, tentukanlah nilai perkiraan data y pada x=[2.5 3.5] menggunakan a) polyfit dan b) menggunakan interpolasi linear dan spline. x
1
2
3
4
5
6
y
5
26
83
194
377
650
>> x=1:6; y=[5 26 83 194 377 650]; r=[2.5 3.5]; >> p5=polyfit(x,y,5); polyval(p5,r) ans = 48.8750 130.6250 >> interp1(x,y,r), interp1(x,y,r,’spline’) ans = 54.5000 138.5000
ans = 48.8750 130.6250 Contoh 2 : Evaluasi lebih lanjut Contoh 1 dengan membuat visualisasi data x dan y dan kurva nilai-nilai perkiraannya menggunakan polyfit dan interpolasi/ekstrapolasi pada xi=[1:0.1:8]. >> x=1:6; y=[5 26 83 194 377 650]; xi=[1:0.1:8]; >> p5=polyfit(x,y,5); polyval(p5,x);
fp5=@(x)
>> y1=interp1(x,y,xi,'linear','extrap '); >> y2=interp1(x,y,xi,'spline','extrap '); >> plot(x,y,'o',xi,y1,'--',,xi,y2,xi,fp5(x i)); >> grid legend(2,'data','linear','spline','polyfit')
on,
1600 data linear
1400
spline polyfit
1200 1000 800 600 400 200 0
1
2
3
4
5
6
7
8
Gambar 1.3 : Interpretasi data menggunakan interp1 versus polyfit Gambar 1.3 memperlihatkan kurva interpolasi/ekstrapolasi metode
spline berhimpit dengan kurva polyfit, yang mana menunjukkan tingkat ketelitian perhitungan yang hampir sama. Anda dapat membuktikannya dengan ekspresi [y2' fp5(xi)']
1.5.2 Permasalahan Harga Nol ( fzero ) Permasalahan harga nol secara singkat dapat dijelaskan sebagai berikut: Pada suatu fungsi tertentu, misalnya y=f(x), ingin dicari nilai x sedemikian rupa sehingga nilai y sama dengan 0. Nilai x yang dicari ini selanjutnya disebut harga nol. Untuk menemukan satu harga nol suatu fungsi yang memiliki 1 variabel saja, MATLAB menyediakan fungsi fzero dengan syntax berikut: x0 = fzero(fun, x) Argumen fun adalah nama fungsi (anonymous atau M-file lainnya), sedangkan x adalah nilai awal yang dianggap cukup dekat dengan harga nol yang dicari. Contoh 1: Selesaikan persamaan >> y=@(x) x0=fzero(y,2)
3
x x10
x.^3-x-1;
x0 = 1.3247 Contoh 2: x=cos(x)
Selesaikan
persamaan
:
Untuk menemukan satu nilai dari x yang cocok dan sesuai dengan persamaan x=cos(x), maka mula-mula didefinisikan dahulu fungsi y dengan y=@(x) x-cos(x); atau y=@(x) cos(x)-x; Selanjutnya operasi x=fzero(y,1) akan menghasilkan x= 0.7391 sebagai nilai yang dicari. Contoh 3: Ekspresi berikut menyelesaikan persamaan : ini >> y=@(x) 1./x-3./(x.^2-1)+x.^3./(x.^2+4)-0.5; x0=fzero(y,4)
x0 = 2
1 3
x 2
3
x 4 x x 2 1
0.5
Contoh 4: persamaan
Untuk
menemukan
nilai
x
yang
cocok
dengan
3(2x 3)(x 5) 7 , maka ekspresi MATLAB yang benar adalah: >> y=@(x) 7-3*(2*x-3).*(x-5); a=fzero(y,1), b= fzero(y,6) a= 1.1935
b= 5.3065 Contoh 5: Diketahui
y
f ( x)
x
ln( x) . Pada nilai x berapa fungsi 3 x 3 tersebut
memiliki nilai tepat 4? >> y=@(x) x./(x.^3+3)+log(x)-4; fzero(y,50) ans = 54.5798 Contoh 6: Diketahui koefisien polinom p=[1 2 3 4] . Berapa nilai x yang cocok supaya fungsi polinom tersebut memiliki nilai 6? >> p=[1 2 3 4]; y=@(x) polyval(p,x)-6; x=fzero(y,1) x= 0.4780 Untuk mendapatkan nilai perkiraan nilai 50 pada contoh 5, sebenarnya telah dilakukan beberapa kali eksekusi fungsi fzero. Jika fzero memberikan hasil yang tidak diharapkan, MATLAB menyarankan untuk mengecek fungsinya apakah ada yang salah, lalu mencoba lagi dengan nilai perkiraan yang baru. Untuk mendapatkan nilai perkiraan awal x yang paling dekat dengan akar persamaan fungsi yang dicari, dianjurkan membuat kurva fungsi tersebut
terlebih dahulu, misalnya dengan menggunakan fplot(y,[0 60]). Terlihat pada kurva, bahwa titik potong terhadap sumbu x terletak diantara 50 dan 60. Berdasarkan kurva tersebut, maka ditetapkan nilai awal yang cukup dekat dengan harga nol yang dicari, misalnya 50. Dari contoh-contoh yang ada, terlihat fungsi fzero hanya menghasilkan 1 harga nol saja. Harga nol lainnya (jika ada) dicari dengan menggunakan nilai awal yang lain.
1.5.3 Integral Numerik ( quad ) b
Untuk menyelesaikan perhitungan integral tentu seperti
q
f ( x) dx a
dapat memanfaatkan fungsi MATLAB berikut: q=quad(f,a,b) dengan f adalah nama fungsi ( bisa fungsi anonymous atau M-file lainnya ), dan a adalah batas bawah integrasi serta b adalah batas atas integrasi. Contoh tentu :
1:
2
q
x
2
Ekspresi
berikut
untuk
menyelesaikan
hitung
integral
3 dx
1
>> f=@(x) x.^2+3; q=quad(f,1,2) q= 5.3333 Karena f adalah fungsi polinom order ke- 2, maka operasi diatas juga dapat diselesaikan dan diperbandingkan dengan fungsi MATLAB polinom berikut: >> q=polyint([1 0 3]); hasil=polyval(q,2)-polyval(q,1) hasil = 5.3333
a
x
Contoh 2: Tentukan nilai a supaya
2
3 dx 1
1
>> f=@(x) x.^2+3; g=@(a) quad(f,1,a)-1; fzero(g,2) ans = 1.2351 Karena f adalah fungsi polinom order ke- 2, maka operasi diperbandingkan.
berikut dapat
>> q=polyint([1 0 3]);y=@(a)polyval(q,a)-polyval(q,1)-1; fzero(y,2) ans = 1.2351 Atau dengan : >> f=@(x) polyval([1 0 3],x); f1=@(a) quad(f,1,a)-1; fzero(f1,2) ans = 1.2351
1.5.4 Regresi Polinom dan Linearisasi Regresi
polinom
adalah
pencocokan
secara
least square
hubungan fungsional pasangan data x dan y sebagai fungsi polinom. Dalam hal ini order polinom dibatasi sebanyak jumlah pasangan data dikurangi satu. Jadi, jika terdapat 5 data x dan y, maka order fungsi polinom maksimal adalah 4. Meskipun demikian, mewakili
fungsi
polinom
yang
benar-benar
cocok
hubungan fungsional pasangan data x dan y bisa saja memiliki
order dibawah 4 , seperti contoh-contoh berikut: Contoh 1 : Jika data x=[0:5];y=[1 9 17 25 33 41] dicocokkan memiliki hubungan fungsional sebagai:
(1) y=ax ax +bx+c
(2) y=ax+1
(3) y=ax+b
(4) y =
2
,maka untuk menentukan nilai a, b dan atau c yang cocok ( secara least square ) digunakan kode-kode MATLAB sebagai berikut: >> x=[0:5]; y=[1 9 17 25 33 41]; >> x=x'; y=y'; vektor kolom >> a=x\y
%data dibuat %soal (1)
a= 8.2727 >> a=x\(y-1)
%soal (2)
a= 8 >> ab=[x ones(size(x))]\y
%soal (3)
ab = 8.0000 1.0000 >> abc=[x.^2 x ones(size(x))]\y
%soal (4)
abc = -0.0000 8.0000 1.0000 Catatan : Hasil-hasil ini dapat dibandingkan dengan cara yang sudah dipelajari pada mata kuliah Matek (topik bahasan Least Square : Regresi Polinom) sebagai berikut:
Untuk y=ax
, a , sehingga penyelesaiannya dalam MATLAB :
xy 2 x
>> a=sum(x.*y)/sum(x.^2) a= 8.2727 Untuk y=ax+b
nxy
a
x y
dan b y ax sehingga penyelesaiannya :
x 2 n x 2
>> sx=sum(x); sy=sum(y); sxy=sum(x.*y); sx2=sum(x.^2); n=length(x); >> a=(sx*sy-n*sxy)/(sx^2-n*sx2), b=sy/na*sx/n a = 8
b= 1 atau langsung dengan : >> ab=[n sx; sx sx2]\[sy; sxy]; a=ab(2), b=ab(1) a= 8
b= 1.0000
Untuk y = ax + bx +c maka penyelesaiannya adalah: 2
>> sx=sum(x); sx2=sum(x.^2); sx3=sum(x.^3); sx4=sum(x.^4); >> sy=sum(y); sxy=sum(x.*y);sx2y=sum(x.^2.*y); n=length(x); >> RL=[n sx sx2; sx sx2 sx3; sx2 sx3 sx4]\[sy; sxy; sx2y]; >> a=RL(3), b=RL(2), c=RL(1) a= 0
b= 8
c= 1.0000 Kode-kode penyelesaian dengan MATLAB terlihat lebih sederhana dibandingkan dengan metode penyelesaiannya sendiri. Untuk seterusnya tanpa melupakan prinsip dasar dari metode least square sendiri, Anda diminta untuk menggunakan cara penyelesaian MATLAB ini dalam menyelesaikan semua permasalahan-permasalahan regresi atau linearisasi. Contoh 2: Diketahui data x dan y sesuai tabel dibawah. x
1
2
3
4
y
-7
-25.75
-54.55
-93.44
5
6
7
-142.36 -201.31 -270.26
Jika data dicocokkan pada persamaan : y= nilai a, b, c, d, dan e terbaik.
a x2
b
8 -349.23
+c+dx+ex2 , maka
+ tentukanlah x
>> x=[1:8]'; y=[-7 -25.75 -54.55 -93.44 -142.36 -201.31 -270.26 -349.23]';
>> m=[1./x.^2 1./x ones(size(x)) x x.^2]; RL=m\y; >> a=RL(1), b=RL(2), c=RL(3), d=RL(4), e=RL(5) a= 1.1039
b= -2.2008
c= 3.1222
d= -4.0274
e= -4.9980 Contoh 3: Diketahui x=[1 2 3 4 5]'; y=[6 20 58 132 254]'; Bentuk manakah yang paling cocok menggambarkan hubungan fungsional data x dan y? 1) y a x
b
Mula-mula, menjadi :
b 2) y a x 4 bentuk
1)
dilinearisasi
b 3) y a x c ln( y) ln(a) b ln( x)
sehingga berdasarkan bentuk linearnya ini, maka : >> x=[1 2 3 4 5]'; y=[6 20 58 132 254]'; RL=[ones(size(x)) log(x)]\log(y);
,
>> a1=exp(RL1(1)), b1=RL1(2), a1 = 5.0512
b1 = 2.3332 >> SSE1=sum((ya1*x.^b1).^2) SSE1 = 1.5553e+003 Dengan cara sama, bentuk persamaan ln( y 4) ln(a) b ln( x)
b y a x 4 juga dilinearisasi menjadi
>> m=[ones(size(x)) log(x)]; RL2=m\log(y-4); a2=exp(RL2(1)), b2=RL2(2) a2 = 2.0000
b2 = 3.0000 >> SSE2=sum((y(a2*x.^b2+4)).^2) SSE2 = 1.1304e-027 Nilai SSE pada bentuk 2) lebih kecil daripada nilai SSE pada bentuk 1) sehingga bentuk 2) lebih cocok menggambarkan hubungan fungsional antara data x dan y.
Bentuk 3) sendiri tidak dapat diselesaikan secara eksak menggunakan metode linearisasi ini. Contoh 4: Data x dan y pada tabel akan dicocokkan hubungan fungsionalnya sebagai y a x bx c Tentukan nilai a, b dan c terbaik dan tentukan error kuadratnya. x
0.1
0.2
0.3
0.4
0.5
y
0.4755
1.8534
2.4977
3
3.3227
Linearisas y a x bx c menghasilkan ln( y) ln(a) bx ln( x) c ln( x) , sehingga i : >> x=[0.1:0.1:0.5]'; y=[0.4755 1.1422 1.8534 2.4977 3]'; >> m=[ones(size(x)) x.*log(x) log(x)]; RL=m\log(y); >> a=exp(RL(1)), b=RL(2), c=RL(3), sse=sum((y-a*x.^(b*x+c)).^2) a= 3.0005
b= -1.9995
c= 1.0000
sse = 2.7640e-009
Contoh 5: Diketahui x=1:5; y=2:6; z= [8 13 18 23 28]. Jika hubungan dari ke- 3 variabel tersebut dapat dinyatakan sebagai : 1) z ax by
2) z ax
2
2
by
b
3) z a x y
c
c
,maka tentukan nilai a, b, atau c yang paling cocok. >> x=1:5; y=2:6; z= [8 13 18 23 28]; m=[x' y']; RL1=m\z'; a1=RL(1), b1=RL(2) a1 = 1.098 8
b1 = -1.9995 >> m=[x'.^2 y'.^2 ones(size(x'))]; RL2=m\z'; a2=RL2(1), b2=RL2(2), c2=RL2(3) a2 = -2.5000
b2 = 2.500 0
c2 = 0.500 0 >> m=[ones(size(x')) log(x') log(y')]; RL3=m\z'; a3=RL3(1), b3=RL3(2),c3=RL3(3) a3 =
31.5583
b3 = -26.8140
c3 = 57.1742 Berikut adalah kesimpulan pada penyelesaian persamaan regresi Yr=f(x) dengan menggunakan pembagian kiri (back slash) ( \ ): 1) Data x dan y harus merupakan vektor kolom. 2) Buat matrik m yang elemen-elemennya sesuai dengan bentuk ekspresi data x pada fungsi Yr=f(x)), khusus untuk konstanta gunakan ones(size((x)) 3) Koefisien-koefisien yang dicari pada fungsi Yr=f(x) adalah m\y Berdasarkan 3 hal di atas, semua permasalahan tentang regresi, baik pada regresi linear, regresi polinomial, ataupun regresi linear multi fungsi, dapat diselesaikan. Pada Tabel 1.2 dapat dilihat beberapa bentuk regresi dan linearisasi.
Tabel 1.2 : Ringkasan Bentuk-Bentuk Regresi dan Linearisasi No
Bentuk
Linearisasi
m
RL
HASIL
1
y ax
-
[ x]
m\ y
2
y ax b
-
[x ones(size(x))]
m\ y
a RL a RL(1)
3
yae
bx
ln( y) ln(a) bx
[ones(size(x)) x]
m \ log( y)
4
yax
b
ln( y) ln(a) b ln( x)
[ones(size(x)) log( x)]
m \ log( y)
5
yax
bx
ln( y) ln(a) bx ln( x)
[ones(size(x)) x. * log( x)]
m \ log( y)
6
yax
ln( y) ln(a) bx ln( x) c ln( x) [ones(size(x)) x. * log( x) log( x)]
m \ log( y)
7
8
9
ya
bx c
b ex
a
y e xb
a y bc 3x e x
ln( y) ln(a) b a x ln( y) xb 1 xb x b ln( y) a a a
[ones(size(x)) 1. / x]
m \ log( y)
[x ones(size(x))]
m \ 1. / log( y)
b RL(2) a exp( RL(1)) b RL(2) a exp( RL(1)) b RL(2) a exp( RL(1)) b RL(2) a exp( RL(1)) b RL(2) c RL(3) a exp( RL(1)) b RL(2) 1 a RL(1) RL(2) b RL(1) a RL(1)
-
[1. / x ones(size(x)) exp(3 * x)]
m\ y
b RL(2) c RL(3)
.
36
1.5.5 Penyelesaian Sistem Persamaan Linear Jika diketahui sistem persamaan linear berikut : 2a +
b
+
3c
=
2a +
3b
-
2c
=
2a
+
=
4
3b
-
13
c
Mula-mula dibuat matrik koefisien dan vektor kolom kontanta dari persamaan linear diatas sebagai berikut: >> Koef=[2 1 3 ; 2 3 -2 ; 1 3 -1]; Konst=[13 ; 2 ; 4]; Penyelesaian ala MATLAB adalah hasil pembagian kiri dari matrik koefisien Koef dan vektor konstanta Kons. Jadi : >> abc=Koef \ Konst; a=abc(1), b=abc(2), c=abc(3) a= 1
b= 2
c= 3
1.5.6
Penyelesaian Sistem Persamaan Non Linear
Contoh-contoh berikut memperlihatkan cara penyelesaian sistemsistem non linear yang terdiri dari 2 persamaan dalam bentuk fungsi implisit dengan 2 variabel.
37
Contoh 1 : Selesaikan persamaan non linear berikut: 2
2a b 4 0 3
2
a 2b 9 0 >> F = @(x) [2*x(1).^2 + x(2) - 4; x(1).^3 + 2*x(2).^2 - 9]; >> Tebakan_Awal = [2; 1]; % tebakan awal sebagai hasil penyelesaian >> xy = fsolve(F, Tebakan_Awal); x=xy(1), y=xy(2) Optimization terminated: first-order optimality is less than options.TolFun. x = 1.0000
y= 2.0000 Contoh 2 : Selesaikan persamaan non linear berikut: 3
2
3
2
2a a b 2b 19 0 2
2
a b 0.5 a b 6 0 >> f=@(x) [2*x(1).^3 + x(1).^2 + x(2).^3 + 2*x(2).^2 - 19; x(1).^2 + x(2).^2 + 0.5*x(1).*x(2) - 6]; >> xy=fsolve(f , [1 3]), xy=fsolve(f , [3 3]), xy=fsolve(f , [-3 3]) Optimization terminated: first-order optimality is less than options.TolFun. xy = 1.0000
2.0000
38
Optimization terminated: first-order optimality is less than options.TolFun. xy = 1.6659
1.4269
Optimization terminated: first-order optimality is less than options.TolFun. xy = -1.5200
2.3380
Anda bisa melihat, bahwa fsolve memiliki prinsip kerja mirip fzero, jadi untuk menemukan harga nol lain eksekusi fungsi harus diulang lagi dengan nilai awal yang lain. Anda disarankan membaca lebih lanjut tentang fsolve pada MATLAB online help. 1.5.7
Minimasi Fungsi ( fminbnd dan fminsearch )
Untuk mendapatkan nilai minimum fungsi, MATLAB menyediakan fungsi fminbnd untuk fungsi yang mengandung 1 jenis variabel saja pada interval tertutup [x1, x2] yang tetap dan fminsearch untuk fungsi yang mengandung beberapa jenis variabel.
Syntax : x = fminbnd(fungsi,x1,x2) dan x = fminsearch(fungsi,x0) Contoh 1 : Tentukan minimum dari fungsi polinom >> y=@(x) 3*x.^3 -4*x - 5; fminbnd(y, 0, 4)
3
y f (x) 3x 4x 5
%y=@(x) polyval([3 0 -4 -5],x);
ans = 0.6667 Contoh 2: Diketahui vektor koefisien fungsi polinom p=[1 2 3 4 5 6 -7 -8 -9]. Tentukanlah titik-titik minimum dan maksimumnya.
39
>> p=[1 2 3 4 5 6 -7 -8 -9]; y=@(x) polyval(p , x); >> xmin=fminbnd(y , -20 , 20), ymin=y1(xmin) xmin = -1.3462
ymin = -14.2007 Jadi, pada interval dari -20 s/d 20, terdapat titik mínimum (-1,3462 ; -14,2007) Untuk mencari titik maksimum, fungsi polinom harus dikalikan dengan faktor -1, sehingga : >> y2=@(x) -polyval(p,x); xmax=fminbnd(y2,-20,20), ymax=y2(xmax) Benarkah telah dihasilkan titik maksimum??? Untuk membuktikan hal tersebut, kurva fungsi polinom digambarkan pada interval -20 s/d 20 dan pada interval -2 s/d 1.5 sebagai berikut: 10
3
x 10
140 120
2.5
100 2 80 1.5 60 1 40 0.5
20
0
-0.5 -20
0
-15
-10
-5
0
5
10
15
20
-20 -2
-1.5
-1
-0.5
0
0.5
1
1.5
Dari kurva diatas, terlihat jelas terdapat 2 titik mínimum absolut dan 1 titik maksimum relatif. Hal ini membuktikan kebenaran titik mínimum yang sudah dihitung tetapi sekaligus juga membuktikan adanya titik mínimum lain dan kesalahan perhitungan titik maksimum yang dilakukan. Menyikapi hal ini, maka sangat baik untuk mengikuti saran berikut:
Buatlah terlebih dahulu kurva fungsinya sehingga dapat diperkirakan hal-hal penting seperti titik-titik ekstrim dan titik-titik potong terhadap sumbu x dan titik- titik lainnya yang diamati. Selanjutnya berdasarkan gambar fungsi diatas, titik-titik mínimum dan titik maksimum ditentukan sebagai berikut: >> y=@(x) polyval(p , x); xmin1=fminbnd(y , -2 , -1), xmin2=fminbnd(y , 0.5 , 1) xmin1 = -1.3462
xmin2 = 0.6106 >> ymin=y([xmin1 , xmin2]) ymin = -14.2007 -13.8561 Jadi, kurva memiliki 2 titik mínimum pada (-1,3462 ; -14,2007) dan (0,6106 ; 13,8561). Berikutnya untuk titik maksimum : >> y=@(x) -polyval(p , x); xmax=fminbnd(y , -1 , 0) , ymax=-y(xmax) xmax = -0.4192
ymax = -7.2032
Jelaslah sudah, bahwa kurva fungsi perlu digambarkan terlebih dahulu pada perhitungan yang membutuhkan masukan berupa interval seperti pada fminbnd atau nilai awal seperti pada fzero . Hal ini berguna untuk ketelitian perhitungan dan tidak menyesatkan “MATLAB”. Semakin sempit interval dan semakin dekat nilai awal dengan nilai yang dicari, maka MATLAB akan memberikan jawaban yang lebih eksak. Contoh 3 : Tentukan minimum dari
2
2
y f (x1 , x2 ) 100(x2 x1 ) (1 x1 )
2
>> f= @(x) 100*(x(2)-x(1)^2)^2+(1-x(1))^2; x0=[2 2]; fminsearch(f , x0) ans = 1.0000
1.0000
Berbeda dengan variabel x pada fminbnd, variabel x pada fminsearch merupakan sebuah vektor dari semua variabel fungsi sehingga pendefinisian fungsinya menggunakan ekspresi variabel x(1), x(2), x(3), dan seterusnya.
1.5.8 Persamaan Diferensial Dengan Nilai Awal Pada
MATLAB
online
help
atau
tepatnya
pada
MATLAB-
Mathematics- Differential Equations-Initial Value Problems for ODEs and DAEs, Anda dapat menemukan beberapa jenis solver yang berbeda, diantaranya adalah ode45 dan ode15s untuk fungsi eksplisit
y' f (x, y) dan ode15i untuk fungsi impisit f (x, y, y' ) 0 . Salah satu syntax –nya adalah : [X,Y] = ode45(odefun , Xspan , y0) [X,Y] = ode15i(odefun , Xspan , y0 , dy0)
Contoh 1: Persamaan y' y x dengan nilai awal (0 , 0) akan diferensial dicari penyelesaian pada x = 0.2 ; 0.4 ; 0.6 dan 0,8, maka kode MATLAB-nya adalah: >> D=@(x,y) y - x; x0=0; y0=0; >> Xspan=[x0 : 0.2 : 0.8]; >> [x , y]=ode45(D , Xspan , y0); [x y]
%fungsi eksplisit
ans = 0
0
0.200 0 0.400 -0.0214 0 0.600 0.0918 0 0.800 -0.2221 0 0.4255 Jika fungsi didefinisikan secara implisit, maka: >> D=@(x,y,yp) y – x - yp; x0=0; y0=0;
%fungsi implisit
>> Xspan=[x0 : 0.2 : 0.8]; yp0=y0 - x0; >> [x,y]=ode15i(D , Xspan , y0 , yp0); [x y] ans = 0
0
0.200 0 0.400 -0.0214 0 0.600 -0.0918 0 0.800 0.2221 0 0.4256 2 Contoh 2: Diketahui persamaan y' x 2x 1 dengan nilai awal diferensial y (1,0). Buatlah tabel penyelesaian pada x = 2 ; 5 ; 7 ; 10
>> D=@(x,y) x.^2+2*x-1-y; x0=1; y0=0; xspan=[x0 2 5 7 10]; >> [x y]=ode45(D , xspan , y0); [x y] ans = 1.0000
0
2.0000 3.0000 5.0000 24.000 0 7.0000 47.999 10.000 399.000 0 5
1.6
Latihan Soal-Soal Jika a=[1:4;5:8;9:12] dan b=[13:16;17:20;21:24], maka
(1)
Jelaskan makna operasi-operasi berikut kemudian tentukan hasil operasinya a) a.*b
b) a*b(1,:)'
c) a(:,3)
d) sum(a) e) sum(a') (2)
f) sum(a(2,2:3))
g) sum(a(2,2:3).^2)
Tentukan ekspresi yang diperlukan untuk menentukan ukuran, jumlah kolom dan jumlah baris matrik a
(3) Diketahui matrik A berukuran 6x7. Jika elemen matrik B diambilkan dari elemen-elemen matrik A dengan ketentuan bahwa: a) Matrik B berukuran 3x3 dengan elemen-elemen pada baris ke- 1, 2, dan 3 berturut-turut adalah elemen-elemen matrik A pada baris ke2, 4, dan 6 dan pada kolom ke- 1, 3, dan 4. b) Matrik B berukuran 3x7 dengan elemen-elemen pada baris ke- 1, 2, dan 3 berturut-turut adalah kuadrat dari elemen-elemen matrik A pada baris ke1, 3, dan 6 Tentukan ekspresi yang diperlukan untuk membentuk matrik B diatas. (4) Hitung jumlah seluruh bilangan ganjil pada interval 3 s/d 999 (5) Hitung jumlah kuadrat dari seluruh bilangan ganjil pada interval 3 s/d 999 (6) Hitung jumlah rata-rata dari 1 s/d 1000; 1001 s/d 2001 dan 3001 s/d 4000 (7) Nyatakan bilangan 0.012333333333333... sebagai suatu pecahan (8) Matrik A adalah matrik yang berukuran 4x6, nilai elemen-elemen pada baris ke- 1 adalah [1 2 3 4 5 6]. Tentukan matrik A tersebut jika nilai elemen-elemen pada baris ke- 2, 3, dan 4 berturut-turut merupakan elemen-elemen pada pada baris ke- 1 pangkat nomor barisnya masing-masing.
x 1 2 (9) Diketahui tabel data x dan y sebagai berikut : y 0 14
3
4
5
44 96 176
.
a) Tentukan koefisien polinom yang paling cocok untuk hubungan a1) x vs y
a2) x vs 1/(5x-y)
a3)
x vs ln(y-
30x) Selesaikan dengan prinsip dari polyfit dan regresi/linearisasi b) Jika fungsi polinom yang berlaku dan benar adalah pada soal a1), maka b1) hitung nilai y pada x=1.5 , 2.5, 3.5 dan 4.5 b2) hitung nilai x jika y=45 b3) hitung integral fungsi tersebut dari 1.5 s/d 6 b4) hitung batas integrasi atas b jika integral fungsi dari 1 s/d b bernilai 3 b5) tentukan hasil bagi dan hasil kali polinom tersebut dengan (x-3) b6) hitung nilai maksimum/minimum dari fungsi polinom tersebut (10) Pada proses filtrasi pada dP= 0.5 bar dan diameter media filter 20 cm, diketahui data pengamatan berikut: Volume Filtrat, L
1
2
3
4
5
6
7
8
9
9.5
Waktu, detik
45
92
160 290 405 586 788 1060 1328 1520
Rumus-rumus : Persamaan garis filtrasi adalah
rF t rc k V 2 A dP V 2A dP k
Vca ke
1 bar = 100000 Pa ; a)
rc
0.001 Pa
Hitung slope dan intercept garis filtrasi menggunakan prinsip: a1) regresi
b)
r
2 ; Vcake A x tebal cake A d ;L F V Filtrat rC 4 ;
Hitung
a2) polyfit
dan rF serta L, jika terbentuk cake setebal 3 cm
(11) Jika data pada soal no (9b1) akan diperlembut dan diperluas untuk x=1:0.1:5, maka tentukan nilai y dengan menggunakan prinsip least square dan prinsip interpolasi/ekstrapolasi (12) Tabel berikut adalah data tentang suhu T dan kapasitas panas Cp suatu gas tertentu. T[ K]
400
480
520
Cp[kal/(gmol K)
41
45
47
0
Hitunglah energi yang dibutuhkan untuk memanaskan 3 gmol gas dari 410 sampai 510K dengan data T dan Cp diatas. T2
Petunjuk : Gunakan rumus : Q T1
(13) Untuk fungsi
y (2x 3)
C
p
dT .
4
x 3
2
2
, tentukan
x 1
a) Nilai x supaya fungsi bernilai 0 b) Nilai x supaya fungsi memiliki nilai 3 c) Nilai batas integrasi bawah a supaya integral fungsi diatas dari a s/d 7 bernilai 316 d) Nilai batas integrasi bawah a supaya integral fungsi diatas dari a s/d a+2 bernilai 316 (14) Hitung volume 40 kg CO pada kondisi standar. ( V = 20.4 m ) 3
2
(15) Hitung densitas N pada 27 C dan 100 kPa ( 1.123 kg3 / m ) 0
2
(16) Diketahui persamaan diferensial ordiner
3
2
y' y x 3x 2x 4
nilai awal (0 ; 2). Tentukan nilai y untuk x=[1 3 6 9]
dengan
Jawaban Soal 1.6 (1) a. [13 28 45 64; 85 108 133 160; 189 220 253 288] b. [150; 382; 614]
??
c. [3; 7; 11]
semua elemen matrik pada kolom ke- 3
d. [15 18 21 24]
jumlah elemen pada setiap kolom
matrik a e. [10 26 42]
jumlah elemen pada setiap
baris matrik a f. 13
yaitu jumlah dari a(2,2) =6 dan
a(2,3)=7 g. 85
jumlah dari kuadrat
a(2,2) dan a(2,3) (2) A=size(a) nkolom=A(2)
ukuran matrik a jumlah kolom
matrik a nbaris=A(1)
jumlah
baris matrik a (3) a) B=A([2 4 6],[1 3 4]) b) B=[A(1,:).^2; A(3,:).^2; A(6,:).^2] (4) sum(3:2:999) (5) sum([3:2:999].^2) (6) sum([sum(1:1000) sum(1001:2001) sum(3001:4000)])/3 (7) 37/3000 (8) a=[1 2 3 4 5 6]; A=[a; a.^2; a.^3; a.^4] (9) x=[1 2 3 4 5]'; y=[0 14 44 96 176]'; a11) p1=polyfit(x,y,length(x)-1) a12) RL1=[x.^4 x.^3 x.^2 x ones(size(x))]\y a21) p2=polyfit(x, 1./ (5*x-y),length(x)-1)
a22) RL2=[x.^4 x.^3 x.^2 x ones(size(x))]\(1./(5*x-y)) a31) p3=polyfit(x, log(y+30*x),length(x)-1) a32) RL3=[x.^4 x.^3 x.^2 x ones(size(x))]\ log(y+30*x) b1) x1=[1.5 2.5 3.5 4.5]; y1=polyval(p1,x1) b2) y=@(x) polyval(p1,x)-45; x=fzero(y,1) b3) polyval(polyint(p1),1.5)- polyval(polyint(p1),6) b4) q=polyint(p1); y=@(b) polyval(q,1)- polyval(q,b)-3; b=fzero(y,1) b5) hasilbagi=deconv(p1,[1 -3]), hasilkali=conv(p1,[1 -3]) b6) tidak ada (10) t=[45 92 160 290 405 586 788 1060 1328 1520]';tc=3e-3; V=[1 2 3 4 5 6 7 8 9 9.5]'; dP=0.5e+5;d=0.2; A=pi/4*d*d; k=A*tc/V(length(V)); miu=0.001; a1) RL=[V ones(size(V))]\(t./V) a2) p=polyfit(V,t./V,1) b1) rc=RL(1)*2*A^2*dP/miu/k , rf=RL(2)*A*dP/miu, L=rf/rc b2) rc=p(1)*2*A^2*dP/miu/k , rf=p(2)*A*dP/miu, L=rf/rc (11) x=[1 2 3 4 5]';y=[0 14 44 96 176]'; p=polyfit(x,y,length(x)1); y1=polyval(p, [1:0.1:5]'); y2=interp1(x,y,[1:0.1:5]');[y1 y2] (12) T=[400 480 520]; Cp=[41 45 47]; p=polyfit(T,Cp,2);
q=polyint(p); Q=3*(polyval(q,510)-polyval(q,410)) (13) y=@(x) (2*x-3).^2-(x.^4+3)/(x.^2+1); a)
x=fzero(y,1)
b)
x=fzero(@(x) y(x)-3,1)
c) x1=fzero(y,1);x2=fzero(y,10); L=abs(quad(y,x1,x2))+quad(y,x2,7)316; f=@(a) abs(quad(y,a,x1)) +L;fzero(f,-3) d)
f=@(a) quad(y,a,a+2)-316;a=fzero(f,10)
(14) M=40; BM=44; R=8314; V=M/BM*R*273/101325 (15) T=27+273; BM=28; P=100e+3; R=8314; rho=BM/R/T*P (16) Dy=@(x,y) y-x.^3+3*x.^2+2*x4; xSpan=[0 1 3 6 9]; [x y]=ode45(Dy,xSpan, 2); [x y]
BAB 2 MEMBUAT
2.1
PROGRAM MATLAB
Pendahuluan
Sebuah program MATLAB sebenarnya adalah sekumpulan ekspresiekspresi MATLAB seperti yang Anda biasa tuliskan dalam MATLAB command line window, tetapi kode-kode tersebut terkumpul dalam satu file dan akan dieksekusi oleh MATLAB secara berurutan, satu persatu dengan cepat sehingga mengesankan program tereksekusi secara serentak. Pada prinsipnya program MATLAB dapat dituliskan melalui penggunaan suatu text editor dan disimpan dalam bentuk file dengan ekstensi .m pada folder tertentu yang dikehendaki sehingga membuat file tersebut masuk dalam kategori MATLAB M-file. Bab ini akan membahas program MATLAB dasar dan beberapa trik pemrograman MATLAB. Melalui contoh-contoh yang diberikan, diharapkan Anda dapat dengan lebih mudah memahami MATLAB ini sehingga dapat dipergunakan untuk menyelesaikan beberapa permasalahan-permasalah matematis dan pada gilirannya nanti dapat menyelesaikan permasalahanpermasalahan pada bidang teknik kimia. Jika dalam penulisan program Anda mengalami keraguan tentang suatu syntax fungsi MATLAB, dianjurkan Anda mengkombinasikan text-editor dengan help navigator.
2.1.
Membuat M-File
Sebuah M-file baru dapat dibuat dengan cara meng-klik menu MATLAB [File] kemudian memilih [New]-[M-File] atau langsung dengan shortcut [New M-File] pada editor toolbar. Pada halaman kosong yang terbentuk Anda dapat menuliskan seluruh kode program dan mengeksekusi program dengan menekan tombol F5 untuk run dan melihat hasilnya di command line window.
2.2
Komponen-Komponen Program Dasar
Program MATLAB pada dasarnya adalah sekumpulan kode-kode yang dapat dikelompokkan sebagai variabel, keywords, konstanta-konstanta dan fungsi-fungsi, serta operator. Gabungan dari kode-kode tersebut membentuk ekspresi yang memiliki tujuan khusus. Beberapa ekspresi yang dituliskan berurutan dan dalam satu kelompok disebut blok. Jika Anda ingin belajar MATLAB lebih mendalam, maka Anda dipersilahkan untuk meng-explore sendiri pada help menu, khususnya tentang komponen-komponen dasar pada MATLAB- Programming.
2.3
Pemrograman M-File
M-File adalah file eksternal yang memiliki nama ekstensi .m , berisikan teks-teks komentar dan kode-kode dalam bahasa MATLAB seperti yang sudah pernah Anda lakukan saat melakukan perhitungan pada command line windows. M-File tidak memerlukan deklarasi variabel ataupun pembatas seperti begin/end. Teks-teks komentar yang ada harus diawali dengan tanda persen ( % ).
2.3.1 Script Script adalah bentuk paling sederhana dari M-file yang tidak menerima masukan ( tidak memiliki argumen input ) atau menghasilkan argumen keluaran. Script dapat mengolah data yang sudah ada didalam memori internal MATLAB, atau membuat data baru. Meskipun script tidak menghasilkan keluaran argumen, setiap variabel yang dibuat tetap akan berada pada memori internal MATLAB sehingga dapat digunakan pada komputasi berikutnya. Sebagai tambahan, script juga dapat menghasilkan keluaran grafis menggunakan perintah sejenis plot. Contoh : Script berikut menghitung rho untuk beberapa fungsi trigonometri,
kemudian
membuat
beberapa
gambar
koordinat polar (Sumber : MATLAB online help). % script utk menggambar "flower petal" teks/komentar theta = -pi:0.01:pi; rho(1,:) = 2 * sin(5 * theta) .^ 2; rho(2,:) = cos(10 * theta) .^ 3;
Baris % Komputasi
dalam
sistem
rho(3,:) = sin(theta) .^ 2; rho(4,:) = 5 * cos(3.5 * theta) .^ 3; for k = 1:4 polar(theta, rho(k,:)) % Keluaran grafis pause end Jika ekspresi-ekspresi diatas akan dieksekusi, Anda harus menekan tombol F5 atau klik debug-run. Pada saat mengeksekusi kode-kode MATLAB untuk yang pertama kali, maka jendela Save file as akan muncul dan Anda diminta memberi nama file dan menyimpannya pada folder tertentu. Untuk itu masukkan saja nama file ( tanpa nama ekstensi ), yang tentunya juga harus mengikuti aturan pembuatan nama variabel. Setelah script menampilkan sebuah grafik, tekan tombol ENTER untuk menggerakkan gambar grafik berikutnya. Dalam hal ini tidak ada argumen masukan atau keluaran, ekspresi-ekspresi diatas hanya membuat variabel- variabel yang dibutuhkan di dalam memori internal MATLAB. Ketika eksekusi telah lengkap, variabel-variabel (i, theta, dan rho) tetap berada dalam memori. Jika Anda ingin melihatnya, ketikkan saja pada command line windows : whos.
2.3.2 Function Function adalah salah satu bentuk M-File yang dapat menerima argumen masukan dan menghasilkan argumen keluaran. Function bekerja dengan variabel-variabel yang berasal dari argumen masukan dan atau variabel- variabel yang berlaku secara lokal, artinya setiap M-File function memiliki daerah memori tersendiri dan terpisah dengan memori MATLAB. Selama menggunakan MATLAB, satu-satunya variabel yang dapat diakses keluar dari sebuah function adalah variabel dari argumen keluaran yang telah didefinisikan pada function tersebut. MATLAB menyediakan beberapa jenis function, diantaranya adalah: - Primary M-file function, yakni
fungsi pertama didalam M-file, dan
biasanya berisi program utama.
- Subfunctions merupakan sub-rutin dari fungsi utama. Anda dapat menggunakan subfunction ini untuk mendefinisikan rangkaian fungsi didalam sebuah M-file.
- Nested functions adalah fungsi-fungsi yang didefinisikan didalam fungsi lain. Jenis fungsi ini baru digunakan jika diinginkan kejelasan teks program terutama untuk program fungsi yang rumit sehingga akses terhadap variabel- variabel akan menjadi lebih fleksibel. - Anonymous functions adalah fungsi yang didefinisikan sebagai bagian dari ekspresi MATLAB, artinya bisa dituliskan didalam function, script, dan bahkan pada command line window. Untuk mendeklarasikan sebuah fungsi, maka gunakan syntax berikut: function [out1, out2, ...] = NamaFungsi(input1,input2, ...) Pernyataan diatas digunakan untuk mendefinisikan sebuah fungsi dengan nama NamaFungsi dengan masukan input1, input2, dst, dan keluaran out1, out2, dst. Anda dapat mengakhiri setiap fungsi dengan pernyataan end, tetapi pada banyak kasus, pernyataan end hanya dibutuhkan pada M-file yang mengandung satu atau lebih nested functions. Contoh 1: M-File function berikut bernama RL, mengolah data x dan y menjadi slope, intercept, dan sse function [slope, intercept, sse] = RL(x,y) n = length(x); sx=sum(x); sy=sum(y); sxy=sum(x.*y); sx2=sum(x.^2); xr=sx/n; yr=sy/n; slope=(sx*sy-n*sxy)/(sx^2-n*sx2); intercept=yr-slope*xr; sse=sum((y-(slope*x+intercept)).^2); Setelah
menuliskan
menyimpannya dengan
fungsi
nama
RL.m,
diatas maka
dengan
text-editor
jika sebuah
pernyataan berikut : clc x=1 : 0.1 : 100; y=2*x + 5; [a, b, sse]=RL(x,y); fprintf('slope = %1.4f \n',a); fprintf('intercept = %1.4f \n',b); fprintf('SSE = %1.4f \n',sse); ,maka jika dieksekusi akan menghasilkan : slope = 2.0000 intercept = 5.0000 SSE = 0.0000
dan
script berisi
Contoh 2: Jika Error adalah subfunction didalam file RL.m, maka function [slope, intercept, sse] = RL(x,y) n = length(x); sx=sum(x); sy=sum(y); sxy=sum(x.*y); sx2=sum(x.^2); xr=sx/n; yr=sy/n; slope=(sx*sy-n*sxy)/(sx^2-n*sx2); intercept=yr-slope*xr; sse=Error(x,y,slope,intercept);
function sse = Error(x,y,a,b) sse=sum((y-(a*x+b)).^2); Fungsi RL.m pada contoh 2 ini akan berfungsi sama seperti RL.m pada contoh 1. Contoh 3: Fungsi tersebut pada
2 f (x, y) 2 x x akan didefinisikan dan dihitung nilai y fungsi
x 2 ; 3 ; 4 dan y 3 ; 7 ; 2
M-file function yang melakukan komputasi fungsi ini harus menerima 2 masukan berupa vektor x dan y. Mula-mula pilih New pada MATLAB File menu, lalu pilih M- File sehingga terbuka sebuah jendela editor. Didalam jendela editor ini tuliskan 2 baris kode berikut: function f = MyFun(x,y) f=2*x.^2+x.*y; Simpan M-file ini didalam directori pada MATLAB path. Untuk mengecek fungsi ini menghasilkan nilai yang benar, buat script berikut : MyFun([2 3 4],[3 7 2]) Setelah Anda menekan tombol F5 kemudian memberi nama file secara benar, maka Anda akan mendapatkan hasil: ans = 14
39
40
Nilai 14 adalah hasil perhitungan dari 2 x 22 + 2 * 3, sedangkan 39 dari 2 x 32 + 3*7 dan nilai 40 berasal dari 2 x 42 + 4 * 2.
2.4
Program Control Statements
Program control statement sebenarnya adalah suatu kode atau beberapa kode yang memiliki kemampuan untuk mengatur alur program. Pada MATLAB terdapat 4 program control yang meliputi conditional control, loop control, error control dan program termination. Berikut pembahasan singkat tentang conditional control dan loop control.
2.4.1 Conditional Control Bentuk if , if-else , dan if-elseif-else Melalui control ini kode-kode atau ekspresi-ekspresi dalam suatu blok tertentu dapat dieksekusi berdasarkan kondisi benar atau salah dari
suatu ekspresi
logika
tertentu.
Bentuk
paling
sederhana
dari
conditional control ini adalah bentuk if sebagai berikut: if [ ekspresi logika ] [kode atau gabungan kode-kode MATLAB] end Jika [ ekspresi logika ] bernilai benar, maka MATLAB akan mengeksekusi semua kode-kode ( blok kode ) yang berada diantara baris if dan end, sebaliknya jika [ ekspresi logika ] bernilai salah, maka MATLAB akan melewatinya saja, artinya alur program langsung meloncat ke kode end. Contoh : Kode-kode berikut untuk menentukan sebuah bilangan genap: a=input('Angka Anda = '); if rem(a, 2) == 0 disp('sebuah bilangan genap') a= a/2 end Jika Anda mengetikkan sebuah bilangan genap untuk nilai variabel a, maka akan ditampilkan tulisan “sebuah bilangan genap” dan dibawahnya nilai variabel a yang menjadi setengahnya. Berikut adalah modifikasi dari contoh diatas yang berguna untuk membedakan bilangan ganjil dan bilangan genap.
a=input('Angka Anda = '); if rem(a, 2) == 0 disp('sebuah bilangan genap') else disp('sebuah bilangan ganjil') end Tetapi karena bilangan nol bukan bilangan genap maupun bilangan ganjil, maka contoh diatas dapat dimodifikasi lagi menjadi : a=input('Angka Anda = '); if rem(a, 2) == 0 disp('sebuah bilangan genap') elseif a==0 disp('sebuah bilangan nol') else end
disp('sebuah bilangan ganjil')
Jika Anda mengeksekusi program diatas dan mengetikkan angka 0, program akan menampilkan tulisan ”sebuah bilangan genap”. Program seakan- akan tidak membedakan bilangan nol dan genap. Hal ini disebabkan karena ekspresi logika rem(a, 2) == 0 dituliskan didepan sehingga tereksekusi terlebih dahulu, dimana untuk a=0 ekspresi tersebut akan bernilai benar. Untuk mengatasi hal tersebut, maka ekspresi logika a==0 harus diletakkan paling depan. Bentuk switch, case, and otherwise Bentuk dasar switch adalah : switch ekspresi case value1 [blok 1] % dieksekusi jika ekspresi bernilai value1 case value2 [blok 2] % dieksekusi jika ekspresi bernilai value2 . . otherwis e [blok ...] % dieksekusi jika ekspresi tidak ada yang cocok end
Bentuk switch bekerja dengan cara membandingkan nilai ekspresi dengan setiap nilai kasus. Untuk ekspresi numerik, nilai kasus akan benar jika (value==ekspresi), sedangkan untuk ekspresi string, nilai kasus akan benar jika strcmp(value,ekspresi). Contoh : a=input('Ketikkan Angka Anda = '); switch a case 0 disp('sebuah bilangan nol') case {1 3 5 7 9} disp('sebuah bilangan ganjil kurang dari 10') case {2 4 6 8 10} disp('sebuah bilangan genap lebih kecil atau sama dengan 10') otherwise disp('bilangan apa ya???') end
2.4.2 Loop Control Dengan
loop control Anda dapat membuat pengulangan blok
kode sesuai keperluan. MATLAB menyediakan 2 bentuk pengulangan, yaitu for dan while. Bentuk for Bentuk umum pengulangan menggunakan for adalah : for index = awal : penambahan : akhir kode 1 kode 2 kode 3 dst... end Jika nilai penambahan sama dengan 1, maka penambahan tersebut tidak perlu dituliskan. Jika nilai penambahan negatif, maka nilai awal harus lebih besar daripada nilai akhir.
Contoh 1: Program berikut menghasilkan perkalian 1 x 1 x 2 x 3 x 4 = 24 A=1; for index=1 : 4 A=A*index; end A Contoh 2: Program berikut menghasilkan matrik A berukuran 4 x 5 dengan elemen-elemen yang merupakan hasil kali dari nomor baris dan nomor kolomnya. for baris=1:4 for kolom=1:5 A(baris,kolom)=baris*kolom; end end A Contoh 3: Sebuah vektor juga dapat digunakan sebagai pada pengulangan menggunakan for seperti contoh berikut: M=[1 2 4 0 6 5 4 0 0 9 8 11]; Genap=0; Ganjil= 0; Nol=0; for a=M if a==0 Nol=Nol+1; elseif rem(a, 2) == 0 Genap=Genap+1; else Ganjil=Ganjil+1; end end fprintf('jumlah bilangan Nol = %1.0f \n',Nol) fprintf('jumlah bilangan Genap = %1.0f \n',Genap) fprintf('jumlah bilangan Ganjil = %1.0f \n',Ganjil)
indeks
Bentuk while Bentuk umum pengulangan menggunakan while adalah : while ekspresi [kode atau blok kode] End Kode atau blok kode akan diulang seterusnya selama ekspresi bernilai benar. Jika ekspresi pada tahap awal sudah salah, maka tidak terjadi pengulangan. Contoh : Program berikut menghasilkan perkalian 1 x 1 x 2 x 3 x 4 = 24 A=1; i=1; while i=Tol x1=x0y(x0)/Dy(x0); selisih=abs(x1x0); x0=x1; end x0 x0=fzero(y, 4)
3)
M-file function function f=NewtonRaphson(y,x0) Dy=@(x) (y(x+1e-4)- y(x-1e4))/2/1e-4; Tol=1e-5; selisih=1; while selisih >=Tol x1=x0y(x0)/Dy(x0); selisih=abs(x1x0); x0=x1; end f=x0 ; Script: y=@(x) x.^2 +2*exp(x1)-3 x= NewtonRaphson(y,4)
4)
Script: y=@(x) x.^2+2*x./(x.^2+2) Xdata=[1 2 3 5 7 0.1 0.2 0.3 0.4]; Ydata=[1.6 4.7 9.5 25.4 49.3 0.11 0.22 0.38 0.53]; SSE=sum(Ydata-y(Xdata)).^2
5)
M-file function: function fSSE=SSE5(awal,h,x,y,abc) n=length(x); f=0; a=abc(1); b=abc(2); c=abc(3); fun=@(x,y) a*x.^2+b*x+c-y; for jx=1:n xi=awal(1); yi=awal(2); for i=xi+h:h:x(jx) k1=h*fun(xi,yi); k2=h*fun(xi+h/2,yi+k1/2); k3=h*fun(xi+h/2,yi+k2/2); k4=h*fun(xi+h,yi+k3); K=(k1+2*k2+2*k3+k4)/6; xi=xi+h; yi=yi+K; end f=f+(y(jx)-yi).^2; end fSSE=f ; Scrift: x=[1:4 0.1:0.1:0.5]; y =[6 12 20 30 2.31 2.64 2.99 3.36 3.75]; abc=[50 5 5]; h=0.1; awal=[0 2]; abc=fminsearch(@(abc) SSE5(awal,h,x,y,abc),abc)
6)
Script: %Persamaan Antoinne %ln P = A - B/(T+C) --> P : mmHg T : K clc %Konstanta A, B, C dari persamaan Antoinne amonia =[16.9481 2132.5 -32.98]; benzena=[15.9008 2788.51 -52.36]; aceton =[16.6513 2940.46 -35.93]; metanol=[18.5875 3626.55 -34.29]; etanol =[18.9119 3803.98 -41.68]; water =[18.3036 3816.44 -46.13];
data=[amonia; benzena; aceton; metanol; etanol; water]; T=30:10:60; for i=1:length(data) p1(i,:)=exp(data(i,1)-data(i,2)./ (T+273.15+data(i,3))); end for i=1:length(T) p2(:,i)=exp(data(:,1)-data(:,2)./(T(i) +273.15+data(:,3))); end p1, p2 7a) Script: x=[1 2 3 4 5]'; y=[2.0000 8.6931 19.0986 33.3863 RL=[x.^2 log(x)]\y; a=RL(1),b=RL(2) 7b) M-file function:
51.6094 ]';
function f=SSE7b(x,y,k) a=k(1); b=k(2); fun=@(x) a*x.^2+b*log(x); f=sum((y-fun(x)).^2);
Script: clc; x=[1 2 3 4 5]'; y=[2.0000 8.6931 19.0986 33.3863 k=[1 1]; ab=fminsearch(@(k) SSE7(x,y,k),k)
51.6094 ]';
8a) Script: clc eps_per_D=1e4; Re=1e5; g=@(f) f-1./(0.86*log(eps_per_D/3.7+2.51/Re/f.^0.5)).^2; fzero(g,0.1)
8b)
Script: clc eps_per_D=1e4; f=0.02; g=@(Re) f-1./(0.86*log(eps_per_D/3.7+2.51/Re/f.^0.5)).^2; fplot(g,[1e4 1e5]); grid on fzero(g,7e+4)
8c)
Script: clc f=0.018 9; Re=1e+ 5; g=@(eps_per_D) f-1./(0.86*log(eps_per_D/3.7+2.51/Re/f.^0.5)).^2; fplot(g,[1e-6 0.0002]); grid on fzero(g,1e-4)
BAB 3 KOMPUTASI PROSES TEKNIK KIMIA
3.1
Pendahuluan
Pada bab ini Anda akan mempelajari bagaimana membuat komputasi proses-proses teknik kimia dengan menggunakan MATLAB menjadi lebih mudah dan fleksibel. Sebagian besar dari kesulitan yang pernah Anda alami saat Anda belajar pada mata kuliah Matematika Teknik Kimia dan Satuan Operasi, umumnya berhubungan dengan penguasaan manipulasi matematika yang cukup tinggi. Kini semua kesulitan tersebut dapat diselesaikan dengan cepat oleh MATLAB. Tugas Anda tinggal bagaimana mengatur fasilitas-fasilitas pada MATLAB tersebut sedemikian rupa sehingga dapat menyelesaikan atau membantu perhitungan Anda dengan lebih cepat dan teliti. Contoh proses-proses yang ditinjau diambil dari buku-buku literatur sehingga metode penyelesaiannya mengacu pada rumus-rumus yang ada pada buku tersebut dan MATLAB hanya berperan dalam penyelesaian persamaan- persamaan yang ada.
3.1
Pengayakan
Pada sebuah sistem pengayakan dengan 3 tahap ayakan cascade seperti yang ditunjukkan pada Gambar 3.1, diketahui efisiensi masing-masing screen adalah E1=80% ; E2=60% dan E3= 40%. Jika efisiensi screen didefinisikan sebagai perbandingan antara material yang ditolak ( oversize product ) dan material yang masuk, maka tentukanlah berat aliran masuk dan keluar dari semua screen untuk basis N=100 kg.
80
Screen 1 undersize
h kg
dikumpulkan berikut:
Recycled undersize
a kg
persamaan-persamaan
Untuk screen 1 :
b kg Recycled undersize c kg e kg d kg
(1) N=100 (2) h=N-d
N-d-h=0
(4) b=N. E1
N. E1-b=0
Untuk screen 2 :
Screen 2
Oversize to waste g kg
f kg Screen 3
(5) c=b+f
b-c+f=0
(7) e=c.E2
cE2-e=0
Untuk screen 3 : (8) f=e-g (9) g=e.E3
Gambar 3.1 : Sistem Ayakan Cascade
e-f-g=0 e.E3-g=0
Dari persamaan-persamaan diatas, maka disusunlah matrik berikut: No
N
a
b
c
d
e
f
g
h
Konstanta
1
1
0
0
0
0
0
0
0
0
100
2
1
0
0
0
-1
0
0
0
-1
0
3
1
-1
-1
0
0
0
0
0
0
0
4
E1
0
-1
0
0
0
0
0
0
0
5
0
0
1
-1
0
0
1
0
0
0
6
0
0
0
1
-1
-1
0
0
0
0
7
0
0
0
E2
0
-1
0
0
0
0
8
0
0
0
0
0
1
-1
-1
0
0
9
0
0
0
0
0
E3
0
-1
0
0
Persamaan
Segera kita melihat, bahwa terbentuk sistem persamaan linear dengan 9 persamaan linear dan 9 variabel anu, yakni N, a, b, c, d, e, f, g, dan h. Berdasarkan data matrik diatas, maka program MATLAB disusun sebagai berikut: E1=0.8; E2=0.6; E3=0.4; N=100; No1=[1 0 0 0 0 0 0 0 0]; No2=[1 0 0 0 -1 0 0 0 -1]; No3=[1 -1 -1 0 0 0 0 0 0]; No4=[E1 0 -1 0 0 0 0 0 0]; No5=[0 0 1 -1 0 0 1 0 0]; No6=[0 0 0 1 -1 -1 0 0 0];
81
No7=[0 0 0 E2 0 -1 0 0 0]; No8=[0 0 0 0 0 1 -1 -1 0]; No9=[0 0 0 0 0 E3 0 -1 0]; Koef=[No1; No2; No3; No4; No5; No6; No7; No8; No9]; Konst=[N; 0; 0; 0; 0; 0; 0; 0; 0]; Nabcdefgh=Koef\Konst; Nabcdefgh=Nabcdefgh' Program diatas harus Anda ketikkan menggunakan text editor sebagai M-File . Hasil eksekusi program diatas menghasilkan keluaran berikut: Nabcdefgh = 100
3.2
20
80 125
50
75
45
30
50
Sieving
Selesaikanlah tabel sieve analysis berikut dan tentukan juga dpF dan dpm ( Jawaban. : dpm = 0.3133 mm dan dpF = 0.267 mm ). Lebar Ayak dp ( mm )
No i
Oversize Oversize Cumulativ product product e OP percentage percentage ( kg ) ( OPP ) ( CPOP )
1
0,710
0,0139
2
0,500
0,0711
3
0,355
0,1201
4
0,250
0,1167
5
0,180
0,0763
6
0,125
0,0500
7
0,071
0,0346
8
0,045
0,0103
Pan
0
0,0070
Total M
0,5000
OP Rumus : 1) OPPi i
in
2) CPOPi
M OPPi
3) PiPi d Pi
i1
4) PuP
OPi
in
Probability percentage size
particle
interval PiP (1/mm) --
size PuP (1/mm)
OPPi
M
d (CPOP) d (dp)
i1
Metode Penyelesaian : 1) Data dp dan OP dituliskan sebagai suatu vektor, sehingga OPP, CPOP dan PiP juga merupakan vektor dan dapat dihitung dengan kode-kode berikut dp=[0.71 0.5 0.355 0.25 0.18 0.125 0.071 0.045 0]; OP=[0.0139 0.0711 0.1201 0.1167 0.0763 0.05 0.0346 0.0103 0.007]; M=sum(OP); OPP=OP/M; CPOP(1)=OPP(1); PiP(1)=0; for i=1:8 CPOP(i+1)=CPOP(i)+OPP(i+1); PiP(i+1)=OPP(i+1)/(dp(i)dp(i+1)); end 2) Untuk menghubungkan CPOP sebagai suatu fungsi dari dp, dan PuP sebagai turunan negatif dari CPOP ( rumus 4 ), diusulkan suatu fungsi polinom order ke-7, sehingga : fCPOP=polyfit(dp, CPOP,7); fPuP=-polyder(fCPOP); 3) Untuk mendapatkan nilai PuP untuk setiap nilai dp, digunakan: PuP=polyval(fPuP,dp) 4) Sesuai definisi d , yakni nilai dp pada CPOP=50%, maka nilai dp merupakan harga nol dari fungsi polinom fCPOP dikurangi 0.5. Untuk itu perlu dilakukan manipulasi berikut: pm
g=@(dp) polyval(fCPOP,dp)-0.5; dpm=fzero(g,0.2) 5) Sesuai definisi d , yakni nilai dp pada puncak / nilai maksimum dari fungsi polinom fPuP, maka dapat digunakan fungsi MATLAB fminbnd sebagai berikut: pF
h=@(dp) -polyval(fPuP,dp); dpf=fminbnd(h,0.1,0.3) Pemrograman : dp=[0.71 0.5 0.355 0.25 0.18 0.125 0.071 0.045 0]; OP=[0.0139 0.0711 0.1201 0.1167 0.0763 0.05 0.0346 0.0103 0.007]; M=sum(OP); OPP=OP/M; CPOP(1)=OPP(1); PiP(1)=0; for i=1:length(dp)-1 CPOP(i+1)=CPOP(i)+OPP(i+1); PiP(i+1)=OPP(i+1)/(dp(i)-dp(i+1)); end
fCPOP=polyfit(dp, CPOP,7); fPuP=-polyder(fCPOP); PuP=polyval(fPuP,dp); g=@(dp) polyval(fCPOP,dp)-0.5; dpm=fzero(g,0.2) h=@(dp) -polyval(fPuP,dp); dpf=fminbnd(h,0.1,0.3) [dp' OP' OPP' CPOP' PiP' PuP'] Program diatas harus Anda ketikkan menggunakan text editor sebagai M-File . Hasil eksekusi program diatas menghasilkan keluaran sebagai berikut: dpm = 0.3133
dpf = 0.2670
ans = 0.7100 0.0139 0.0278 0.0278 0 0.1083 0.5000 0.0711 0.1422 0.1700 0.6771 1.2144 0.3550 0.1201 0.2402 0.4102 1.6566 2.0673 0.2500 0.1167 0.2334 0.6436 2.2229 2.2777 0.1800 0.0763 0.1526 0.7962 2.1800 2.0235 0.1250 0.0500 0.1000 0.8962 1.8182 1.5778 0.0710 0.0346 0.0692 0.9654 1.2815 0.9607 0.0450 0.0103 0.0206 0.9860 0.7923 0.6193 0 0.0070 0.0140 1.0000 0.3111 0.0017 Berikut adalah alternatif penyelesaian menggunakan pendekatan distribusi RRSB, dimana rumus 2 didekati dengan persamaan
CPOP exp [(dp
n dpp) ] dengan dpp dan n adalah parameter dari
distribusi RRSB. Kembangkanlah program sieving diatas untuk menggambarkan kurva CPOP dan PuP versus dp dan tentukan nilai dpm , dpF , dpmin dan dpmaks ( dpmin dan dpmaks adalah dp dengan CPOP=0.999 dan 0.001)
Metode Penyelesaian : 1)
Perhitungan untuk sebelumnya, yakni:
M,
PiP,
dan
CPOP
identik
dengan
program
dp=[0.71 0.5 0.355 0.25 0.18 0.125 0.071 0.045 0]; OP=[0.0139 0.0711 0.1201 0.1167 0.0763 0.05 0.0346 0.0103 0.007]; M=sum(OP); OPP=OP/M; CPOP(1)=OPP(1) ; PiP(1)=0; for i=1:length(dp)-1 CPOP(i+1)=CPOP(i)+OPP(i+1); PiP(i+1)=OPP(i+1)/(dp(i)-dp(i+1)); end 2) Untuk menghitung parameter n dan dpp, maka rumus CPOP dari RRSB harus dilinearkan dengan cara dilogaritmakan 2 kali menjadi : ln ( ln (CPOP)) n ln (dp) n ln (dpp) . Dengan demikian, bentuk regresi linearnya adalah ln(-ln(CPOP)) sebagai data y vs ln(dp) sebagai data x dan diperoleh slope = n dan intercept = -n ln(dpp). Karena logaritma pada dp=0 tidak terdefinisi, maka data ke 9 tersebut tidak dipertimbangkan. Penyelesaian menggunakan polyfit adalah : p=polyfit(log(dp(1:8)),log(-log(CPOP(1:8))),1); n=p(1), dpp=exp(-p(2)/n), 3) Untuk menggambarkan fungsi CPOP, kita harus mendefinisikan dahulu fungsi CPOP sesuai RRSB berikut: fCPOP=@(dp) exp(-(dp/dpp).^n); fplot(fCPOP,[0 1]); grid on 4) Untuk menghitung dpm, dpmin dan dpmaks kita harus mengingat kembali definisinya. Untuk itu, kita harus mendefinisikan dahulu suatu fungsi anonymous g , min dan max yang mana memiliki harga nol masing masing dpm, dpmin dan dpmaks yang dicari. g=@(dp) fCPOP(dp)-0.5; dpm=fzero(g,0.2) min=@(dp) fCPOP(dp)-0.999; dpmin=fzero(min,0.2) max=@(dp) fCPOP(dp)0.001; dpmaks=fzero(max,0.2)
5) Untuk menggambarkan fungsi PuP, fungsi fCPOP harus didiferensialkan secara analitis. fPuP=@(dp) n*(dp/dpp).^(n-1)/dpp.*exp(-(dp/dpp)).^n; fplot(fPuP, 0, 0.8); grid on 6) Untuk menghitung dpF, yaitu titik puncak/maksimum dari fungsi PuP: h=@(dp) -fPuP(dp); dpF=fminbnd(h,0 0.5) Pemrograman : dp=[0.71 0.5 0.355 0.25 0.18 0.125 0.071 0.045 0]; OP=[0.0139 0.0711 0.1201 0.1167 0.0763 0.05 0.0346 0.0103 0.007]; M=sum(OP); OPP=OP/M; CPOP(1)=OPP(1); PiP(1)=0; for i=1:length(dp)-1 CPOP(i+1)=CPOP(i)+OPP(i+1); PiP(i+1)=OPP(i+1)/(dp(i)dp(i+1)); end p=polyfit(log(dp(1:8)),log(-log(CPOP(1:8))),1); n=p(1); dpp=exp(-p(2)/n); fCPOP=@(dp) exp(-(dp/dpp).^n); fplot(fCPOP,[0 1]); grid on pause g=@(dp) fCPOP(dp)-0.5; dpm=fzero(g,0.2); min=@(dp) fCPOP(dp)-0.999; dpmin=fzero(min,0.01); max=@(dp) fCPOP(dp)0.001; dpmaks=fzero(max,0.9); fPuP=@(dp) n*(dp/dpp).^(n-1)/dpp.*exp(-(dp/dpp)).^n; PuP=fPuP(dp); fplot(fPuP,[0 1]); grid on h=@(dp) -fPuP(dp); dpF=fminbnd(h,0, 0.5); n_dpp=[n dpp] dpmin_dpmaks=[dpmin dpmaks], dpm_dpF=[dpm dpF] dp_OP_OPP_CPOP_PiP_PuP=[dp' OP' OPP' CPOP' PiP' PuP'] Program diatas harus diketikkan menggunakan text editor sebagai M- File. Hasil eksekusi menghasilkan 2 buah grafik dan keluaran berikut: dp_OP_OPP_CPOP_PiP_PuP = 0.7100 0.0139 0.0278 0.0278
0
0.2287
0.5000 0.0711 0.1422 0.1700 0.6771 0.4930 0.3550 0.1201 0.2402 0.4102 1.6566 0.7571
0.2500 0.1167 0.2334 0.6436 2.2229 0.931 5 0.1800 0.0763 0.1526 0.7962 2.1800 0.972 0.1250 0.0500 0.1000 0.8962 1.8182 2 0.903 1 0.0710 0.0346 0.0692 0.9654 1.2815 0.681 5 0.0450 0.0103 0.0206 0.9860 0.7923 0.494 0
0.0070
0.0140
1.0000
6 0.3111
0
n_dpp = 2.0075
0.3760
dpmin_dpmaks = 0.0120
0.9847
dpm_dpF = 0.3133 3.3
0.1887 Hubungan Cp versus T
Pada percobaan penentuan nilai kapasitas panas (Cp) dari gas CO2 diperoleh hasil berikut: T[K]
300
400
500
600
700
800
Cp [ Joule/gmol K ]
39.87 39.85 39.90
45.16 45.23 45.17
50.72 51.03 50.90
56.85 56.80 57.02
63.01 63.09 63.14
69.52 69.68 69.63
Jika hubungan data Cp versus data T didekati melalui persamaan fungsi polinom order 2, maka tentukanlah : a) prediksi nilai Cp pada suhu T=450 K, b) pada suhu berapa gas memiliki nilai Cp=65 Joule/gmol K, c) berapa energi yang dibutuhkan untuk memanaskan 2 gmol gas dari 350 s/d 750 K??
Metode Penyelesaian : 1) Mula-mula data T dan Cp dapat Anda tuliskan dengan susunan berikut : clc T=[300 400 500 600 700 800]'; %suhu, C Cp=[39.87 39.85 39.9; 45.16 45.23 45.17; 50.72 51.03 50.90; 56.85 56.8 57.02; 63.01 63.09 63.14; 69.52 69.68 69.63]'; % J/gmol/K 2) Menghitung Cpr, yakni Cp rata-rata pada suhu T. Elemen-elemen Cpr harus tersusun sebagai vektor kolom (mengapa?), maka dapat digunakan rumus : Cpr=sum(Cp/3)'; 3) Bentuk regresi polinom order 2 adalah sesuai
2
Cp aT bT c ,
dengan sehingga : RL=[ T.^2 T ones(size(T))]\Cpr; p=polyfit(T,Cpr,2);
%atau
4) Prediksi nilai Cp pada T=450 K adalah dengan kode berikut : polyval(p,450) 5) Prediksi nilai T pada Cp=65 Joule/gmol K adalah dengan kode berikut : fCp=@(T) polyval(p,T)-65; fzero(fCp,700 ) 6) Untuk 2 gmol gas, maka pemanasan gas dari 350 s/d 750 K membutuhkan energi : 750
Q2
Cp
dT
350
Pemrograman : T=[300 400 500 600 700 800]'; %suhu, C Cp=[39.87 39.85 39.9; 45.16 45.23 45.17; 50.72 51.03 50.90; 56.85 56.8 57.02;
63.01 63.09 63.14; 69.52 69.68 69.63]'; Cpr=sum(Cp/3)'; p=polyfit(T,Cpr,2); polyval(p,450) fCp=@(T) polyval(p,T)-65; fzero(fCp,700 ) C=@(T) polyval(p,T); 2*quad(C,350,750 )
% J/gmol/K
%prediksi Cp pada T=450 K
Program diatas harus Anda ketikkan menggunakan text editor sebagai M-File . Hasil eksekusi program diatas menghasilkan keluaran sebagai berikut: ans = 48.0247
ans = 729.7438
ans = 4.3221e+004 3.4
Hubungan P versus T Diketahui beberapa data tekanan dan suhu dari uap air sebagai berikut.
T, C
10
p, kPa
1.228
o
20
30
2.338 4.242
40
50
7.375 12.33 3
60
70
19.92
31.16
80
90
47.34 70.1
Jika hubungan fungsional antara tekanan dan suhu adalah p=exp(a/T+b), maka a) gambarkan data p vs T dan kurfa fungsinya, b) hitung tekanan uap air pada suhu 35 C, c) pada suhu berapa uap air memiliki tekanan 20 kPa? o
Metode Penyelesaian : 1) Data suhu T dan tekanan p disusun sebagai vektor kolom sebagai berikut. T=[10 20 30 40 50 60 70 80 90]'; p=[1.228 2.338 4.242 7.375 12.333 19.92 31.16 47.34 70.1]'; 2) Linearisasi
menghasilkan
dapat dilakukan
dengan
ln(p) = a/T+b, 2
cara,
yaitu
sehingga dengan
penyelesaiannya
back slash atau
dengan fungsi MATLAB polyfit RL=[1./(T+273) ones(size(T))]\log(p*1000); P1=exp(RL(1)./(35+273)+RL(2))/1000 %atau q=polyfit(1./(T+273), log(p*1000),1); P2=exp(q(1)./(35+273)+q(2))/1000 3) Penggambaran data dan kurva dapat dilakukan dengan: x=(10:0.1:100); Pr=exp(q(1)./(x+273)+q(2)); plot(T,p*1000,'o',x,Pr); grid on 4) Tekanan 20 kPa terjadi pada suhu g=@(x) exp(q(1)./(x+273)+q(2))/1000-20;fzero(g,300) Pemrograman : T=[10 20 30 40 50 60 70 80 90]'; %suhu, C p=[1.228 2.338 4.242 7.375 12.333 19.92 31.16 47.34 70.1]'; %tekanan, kPa RL=[1./(T+273) ones(size(T))]\log(p*1000); %cara linearisasi/regresi q=polyfit(1./(T+273), log(p*1000),1); %cara polyfit P1=exp(RL(1)./(35+273)+RL(2))/1000 %atau P2=exp(q(1)./(35+273)+q(2))/1000 x=(10:0.1:100); Pr=exp(q(1)./ (x+273)+q(2)); plot(T,p*1000,'o',x,Pr); grid on g=@(x) exp(q(1)./(x+273)+q(2))/1000-20; fzero(g,300)
Program diatas harus Anda ketikkan menggunakan text editor sebagai M-File
sehingga eksekusi program diatas menghasilkan sebuah gambar
dan keluaran berikut: P1 = 5.5579
P2 = 5.5579
ans = 60.3167
3.5 Proses Filtrasi pada Filter Testing Unit (FTU) Tabel berikut adalah data hasil percobaan filtrasi pada FTU dengan viskositas filtrat = 0,001 Pa.s ; diameter media filter d = 0,2 m; dan beda tekanan P = 0.5 bar . Jika A adalah luas penampang filter dan diperoleh cake dengan tebal rata-rata tcr = 0,82 cm, maka hitung nilai tahanan-tahanan filtrasi rc
dan rF
serta tebal cake ekivalen L. Gambarkan juga data filtrasi dan garis filtrasinya. Waktu t [
45 92
detik] Volume V [ L]
1
2
160
290
405
586
788
3
4
5
6
7
rc k rF Rumus : t V 2 V
2 A P
A P
r dan L F serta
rc
Metode Penyelesaian 1) Pemasukan data yang diketahui
k
1060 1328 8
Vc V
9
1520 9,5
V=[1:9 9.5]'; %volume filtrat, L V=V/1000; %konversi ke m3
t=[45 92 160 290 405 586 788 1060 1328 1520]'; %waktu, s dp=0.5; %dlm bar dP=dp*1e+5; %konversi ke Pa tcr=0.82/100; %tebal cake rata-rata, m d=0.2; %diameter media filter, m miu=0.001; %viskositas air, Pas 2) Persamaan garis filtrasi adalah garis hubungan antara V sebagai data x dan t/V sebagai data y. Dicari adalah slope dan intercept garis filtrasi tersebut,
sehingga
penyelesaiannya
menggunakan linearisasi (dengan polyfit.
Ingat:
Penggunaan
bisa
dengan
back slash)
2
cara,
yaitu
atau fungsi MATLAB
back slash mengharuskan data dalam
bentuk vektor kolom. RL=[V ones(size(V))]\(t./V); slope=RL(1); intercept=RL(2); %p=polyfit(V,t./V,1); slope=p(1); intercept=p(2); 3) Dengan A=pi/4*d^2, maka Vc, k, rc, rf dan L dapat dihitung dengan rumus: Vc=A*tcr; k=Vc/V(length(V)); rc=slope*2*A^2*dP/miu/ k; rf=intercept*A*dP/miu ; L=rf/rc; Pemrograman : %Program : Cake Filtration clc V=[1:9 9.5]'; %volume filtrat, L V=V/1000; %konversi ke m3 t=[45 92 160 290 405 586 788 1060 1328 1520]'; %waktu, s dp=0.5; %dlm bar dP=dp*1e+5; %konversi ke Pa tcr=0.82/100; %tebal cake rata-rata, m d=0.2; %diameter media filter, m miu=0.001; %viskositas air, Pas RL=[V ones(size(V))]\(t./V); slope=RL(1); intercept=RL(2); %p=polyfit(V,t./V,1); slope=p(1); intercept=p(2); A=pi/4*d^2; %Luas media filter, m2
Vc=A*tcr; %Volume cake, m3 k=Vc/V(length(V)); %konstanta proporsional rc=slope*2*A^2*dP/miu/k; %specific cake resistence rf=intercept*A*dP/miu; %filter medium resistence L=rf/rc*1000; %tebal eqivalen, mm disp('Cake filtration pada beda tekanan konstan'); fprintf(' rc [1/m2] = %1.3e \n',rc); fprintf(' rf [1/m] = %1.3e \n',rf); fprintf(' L [mm] = %3.0g \n',L); plot(V,t./V,'*'); hold on %plot titik data fgf=@(V) RL(1)*V+RL(2); xr=(0:0.0001:0.01)'; yr=fgf(xr); plot(xr,yr,'-r','LineWidth',2); grid on xlabel('V [m3]'); ylabel('t/V [sm-3]') title('Cake Filtration'); legend(2,'0.5 bar'); Eksekusi program akan menghasilkan keluaran berikut: Cake filtration pada beda tekanan konstan rc [1/m2] = 5.149e+013 rf [1/m] = 2.781e+010 L [mm]
= 0.5
Continuous Countercurrent Dryer
3.6
Q
G ; Tu1 ; H1 solid Ls ; Ts1 ; X1
Udara G ; Tu2 ; H2
Dryer
Ls ; Ts2 ; X2
Pada
sebuah
continuous countercurrent
dryer (lihat sketsa) yang digunakan untuk mengeringkan suatu padatan, diketahui beberapa hal sebagai berikut:
a) Padatan - Ls
= 453,6 kg dry solid/h
- X1 = 0,04 kg H O/kg dry solid (free moisture) 2
- Ts1 = 26,7 C Cps = 1,465 kJ/kg/K (konstant) 0
b) Udara - Udara masuk : G=1166 kg dry air/h ; Tu2=93,3 C ; H O/kg dry air - Udara keluar : Tu1=37,8 C 0
H2=0,01 kg
2
0
- Humid heat dari campuran udara-uap air cs = 1,005 + 1,88 H - Panas laten air pada To = 0 C , λo = 2501 kJ/kg - Cp udara 4,187 kJ/kg H2O Tentukan humidity udara keluar H1 dan free moisture padatan keluar X2 0
dengan asumsi tidak ada panas yang hilang. Penyelesaian : Entalpi udara masuk : Eu2 = cs (Tu2-To)+H2 λo = (1,005 + 1,88 . 0,01) . (93,3 – 0) + 0,01 . 2501 = 120,5 kJ/kg dry air Entalpi udara keluar : Eu1 = cs (Tu1-To)+ H1 λo = (1,005 + 1,88 . H1) . (37,8 – 0) + H1 . 2501 = 37,989 + 2572,064 H1 Entalpi padatan masuk : Es1
= Cps (Ts1-To) + X1 Cpu (Ts1-To) = 1,465 (26,7-0) + 0,04 . 4,187 . (26,7-0)=43,59 kJ/kg dry solid
Entalpi padatan keluar : Es2
= Cps (Ts2-To)+X2 Cpu (Ts2-To) = 1,465 (62,8-0) + X2 . 4,187 . (62,8-0) = 92,002 + 262.9436 X2 kJ/kg dry solid
Neraca entalpi dengan Q=0 adalah : Es2 + Q
G . Eu2 + Ls . Es1 = G . Eu1 + Ls .
1166 (120,5) + 453,6 (43,59) = 1166 (37,989 + 2572,064 H1) + 453,6 (92,002 + 262.9436 X2) + 0 2.999.026,624 H1 + 119.271,21696 X2 = 74.248,1428 .......................................(1)
Neraca massa untuk air adalah :
G H2 + Ls X1 = G H1 + Ls X2
1136 (0,01) + 453,6 (0,04) = 1136 H1 + 453,6 X2 1136 H1 + 453,6 X2 = 29.504 ......................................................................................(2) Dari uraian permasalahan, terlihat dihasilkan 2 persamaan linear berikut : 2.999.026,624 H1 + 119.271,21696 X2 = 74.248,1428 1136 H1 + 453,6 X2 = 29.504 Jadi hasil penyelesaiannya adalah : H1_X2=[1136 453.6; 2999026.624 119271.21696]\ [29.504;74248.1428] H1_X2 = 0.0246 0.0034
3.7
Proses Level
Suatu tangki dengan luas penampang A = 1 m2 memiliki fasilitas pengisian, pengosongan dan pengukuran level air. Tangki mengalami kondisi steady pada level air h = 4 m dengan laju pengosongan L = 8 kg/menit. Suatu saat terjadi perubahan mendadak pada laju pengisian air menjadi F = 10 kg/menit, yang mana mengakibatkan perubahan pada level h dan laju pengosongan air L dalam tangki. Tentukan kurva level air h versus waktu t dan nilai level air h tiap 15, 150, 1500, 3000, 4500, 6000, 7500, 9000, 10500 menit. Metode Penyelesaian: 1) Asumsi : Laju pengosongan L sebanding dengan sehingga Pada kondisi steady, c
2) Neraca massa air dalam tangki :
L
h
Lc h
st
hst FL
dM dh sehingga : dt A dt
Fc h
dh F c h dh dM A dt dt dt A
Hasil penyelesaian merupakan persamaan diferensial order 1 tidak linear jenis
initial value problem. Penyelesaian dengan MATLAB adalah sebagai berikut: hst=4; Lst=8; c=Lst/sqrt(hst); %data pd kondisi steady F=10; h0=hst; tSpan=[0:15:10500]; dh=@(t,h) (F-c*sqrt(h))/1000; [t h]=ode45(dh,tSpan,h0); plot(t,h); grid on DataWaktu=t([2 11 101 201 301 401 501 601]'); DataLevel=h([2 11 101 201 301 401 501 601]'); Waktu_dan_Level=[DataWaktu DataLevel] Hasil eksekusi program diatas adalah sebuah gambar kurva waktu versus level dan tabel waktu dan level berikut: Waktu_dan_Level = 1.0e+003 * 0.0150 0.004 0 0.1500 0.004 1.5000 3 0.005 6 3.0000 0.006 4.5000 1 0.006 2 6.0000 0.006 2 7.5000 0.006 9.0000 2 0.006 2
3.8
Batch Sedimentation Pada batch sedimentation dari limestone slurry diperoleh data
pengamatan tinggi garis demarkasi antara cairan jernih dan padatan tersuspensi sebagai fungsi dari waktu. Waktu (jam)
0
0.2
0.4
1
1.74
3
4.74 12
20
Tinggi H (cm) 36 32.4 28.6 21 14.7 12.3 11.6 9.8 8.8
Jika pada daerah kompresi berlaku : ln(H-He)=-k t +ln(Hc-He), maka tentukan nilai konstanta sedimentasi k dan tinggi kritis Hc 1) Mula-mula masukkan data ke dalam sistem MATLAB sebagai vektor kolom (mengapa??) t=[0 0.2 0.4 1 1.74 3 4.74 12 20]'; H=[36 32.4 28.6 21 14.7 12.3 11.6 9.8 8.8]'; 2) Gambarkan hubungan waktu t vs tinggi H plot(t,H,'-*r'); grid on %titik waktu mulai 3 jam terlihat kira-kira masuk daerah kompresi 3) Perhatikan bahwa kira-kira titik waktu mulai dari 3 jam keatas terlihat masuk daerah kompresi sehingga untuk menghitung k dan Hc, rumus daerah kompresi dipergunakan dengan menggunakan data mulai dari titik waktu 3 jam. He=H(length(H)); data_t=t(6:8); data_H=H(6:8)He; RL=[data_t ones(size(data_t))]\log(data_H); k=-RL(1) Hc=He+exp(RL(2 )) Pemrograman : clc t=[0 0.2 0.4 1 1.74 3 4.74 12 20]'; H=[36 32.4 28.6 21 14.7 12.3 11.6 9.8 8.8]'; plot(t,H,'-*r'); grid on %titik mulai 3 jam terlihat kira-kira masuk daerah kompresi He=H(length(H)); data_t=t(6:8); data_H=H(6:8)He; RL=[data_t ones(size(data_t))]\log(data_H); k=-RL(1) Hc=He+exp(RL(2 ))
Hasil eksekusi program diatas adalah sebuah gambar kurva waktu versus tinggi dan keluaran berikut: k= 0.1400
Hc = 14.1750
3.9 Distilasi Sederhana pada Tekanan Atmosfer Cairan biner mengandung 50 mol% n-heptane (A) dan 50 mol% noctane (B) di distilasi secara diferensial pada tekanan atmosfer hingga 60% cairan dapat terdistilasi. Hitung komposisi dari distilat
y D,
dan residu xW
avg
(Soal dari : Robert E. Treybal : Mass-Transfer Operations . Ilustrasi 9.6 hal. 370) Data equilibrium n-heptane:
x
0.50 0.46 0.42 0.38 0.34 0.32 * 0.689 0.648 0.608 0.567 0.523 0.497 y * 1 ( y x) ? ? ? ? ? ? F ln W
Rumus : 1) 2)
D
xF
y
xW
F W
dx *
x
(persamaan Rayleight)
dan F x F D y D, avg W xW
Permasalahan di atas dapat diselesaikan dengan pentahapan berikut : 1) Dengan basis nilai F tertentu, misalnya 100, maka W dapat dihitung sehingga
SisiKiri persamaan Rayleight juga dapat dihitung. x=[0.5 0.46 0.42 0.38 0.34 0.32]'; %data kesetimbangan nheptane yb=[0.689 .648 .608 .567 .523 .497]';
F=100; xF=0.5; D=0.6*F; W=F-D; SisiKiri=log(F/W);
%basis feed, mol %utk komponen n-heptane %distilat 60%, mol %residu, mol %Nilai sisi kiri persamaan Rayleight
2) Hubungan fungsional antara data x dan
* 1 ( y x) didekati sebagai
fungsi polinom order ke- 5 menggunakan fungsi MATLAB polyfit. Fungsi polinom yang didapat kemudian diintegralkan menggunakan fungsi MATLAB polyint dan dievaluasi nilainya pada dan menggunakan fungsi
xF
xW
polyval.
Karena
xW
belum
diketahui
MATLAB nilainya
xW
(
adalah
nilai
yang
dicari/ditanyakan!!), maka
harus di-trial and error supaya
xW
persamaan
Rayleight pada sisi kiri dan sisi kanan memiliki nilai yang sama. p=polyfit(x,1./(yb-x),5); q=polyint(p); g=@(xw) polyval(q,xF)-polyval(q,xw)-SisiKiri; xW=fzero(g,0.3) 3) Komposisi distilat terkumpul kemudian dapat dihitung melalui rumus :
y D, avg
F x F W xW D
Pemrograman x=[0.5 0.46 0.42 0.38 0.34 0.32]'; %data kesetimbangan nheptane yb=[0.689 .648 .608 .567 .523 .497]'; F=100; %basis feed, mol xF=0.5; %utk komponen n-heptane D=0.6*F; %distilat 60%, mol W=F-D; %residu, mol SisiKiri=log(F/W); %Nilai sisi kiri persamaan Rayleight p=polyfit(x,1./(yb-x),5); q=polyint(p); g=@(xw) polyval(q,xF)-polyval(q,xw)-SisiKiri; xW=fzero(g,0.3) yDavg=(F*xF-W*xW)/D %komposisi distilat terkumpul Hasil eksekusi program diatas adalah keluaran berikut:
xW = 0.328 7 yDavg = 0.6142 Alternatif jawaban soal : Permasalahan diatas juga dapat diselesaikan dengan cara berikut: *
y (1
1) Tentukan nilai avg x)
x (1 y )
2) Hitung
nilai
xW
melalui cara linearisasi, kemudian *
dengan
menggunakan
hubungan
persamaan:
log
F xF F (1 x F ) avg log W xW W (1 xW )
Pemrograman : x=[0.5 0.46 0.42 0.38 0.34 0.32]'; %data kesetimbangan nheptane yb=[0.689 .648 .608 .567 .523 .497]'; F=100; xF=0.5; D=0.6*F; W=F-D; DataY=yb.*(1-x); DataX=x.*(1-yb); alfa=DataX\DataY; %Cara MATLAB dgn operator ‘\’ g=@(xW) F*xF/W./xW-(F*(1-xF)/W./(1-xW))^alfa; fplot(g,[0.1 0.5]); grid on xW=fzero(g,0.3), yDavg=(F*xF-W*xW)/D Hasil eksekusi program diatas adalah keluaran berikut: xW = 0.328 9 yDavg = 0.6140
3.10 Flash Vaporization Cairan yang mengandung 50 mol% benzene (A), 25 mol% toluene (B), dan 25 mol% o-xylene (C) di vaporisasi secara flash pada tekanan atmosfer dan suhu 100 C. Hitunglah jumlah dan komposisi dari cairan dan 0
uap yang diperoleh. ( Soal : RE. Treybal , Mass-Transfer Operations ,ilustrasi 9.5 hal.366 s/d 367) Berikut adalah skema perhitungan yang dibuat untuk memperjelas permasalahan pada soal sekaligus untuk memudahkan perhitungan. Tekana Komposis n p, Komponen i mmHg z F , mol% A
0.50
1370
Koefisie n Distribu si m=p/pt ?
B
0.25
550
C
0.25
200
y *D
W 1) D W ( 1) Dm z F(
*
xW
y D m
?
?
?
?
?
?
?
?
D
x
W
1
Permasalahan diatas diselesaikan dengan menggunakan berikut pentahapan : 1) Mula-mula ditetapkan susunan data komposisi zF dan tekanan p sebagai vektor baris, sehingga rumus perhitungan untuk koefisien distribusi kesetimbangan m adalah zF=[0.50 0.25 0.25]; p=[1370 550 200]; m=p/760; 2) Untuk menghitung D tiap komponen yang memenuhi syarat *
y
y *D 1 ,
maka dibuatkan sebuah fungsi Sigma yang memiliki harga nol WperD (maksudnya : W/D). Fungsi Sigma tersebut adalah:
z F ,i (WperD 1) 1 . Fungsi ini didefinisikan dalam i 1 WperD / mi 1 MATLAB sebagai sebuah fungsi anonymous berikut: 3
Sigma f (WperD)
Sigma = @(WperD) sum(zF.*(WperD+1)./ (WperD./m+1))-1;
Untuk mengetahui titik awal yang paling dekat dengan nilai WperD yang dicari, maka fungsi Sigma dapat digambarkan dengan menggunakan fungsi MATLAB fplot berikut: fplot(Sigma,[1 5]); grid on; Interval [1 5] dapat diubah-ubah sesuai keperluan. Dari kurva fungsi yang diperoleh, akhirnya dapat diketahui bahwa nilai awal senilai 2 dapat dipakai, sehingga : WperD=fzero(Sigma,2); 3) Dengan diketahuinya nilai WperD, maka nilai y
D
*
dan xW
untuk tiap
komponen dapat dihitung sebagai berikut: yD=zF.*(WperD+1)./(WperD./m+1); xW=yD./m; 4) Berikutnya dengan basis nilai F = 100 mol , nilai W dan D dapat dihitung. Dalam hal ini terdapat 2 buah persamaan linear berikut:
F W D
(1) dan
W WperD D
atau
0W DWperD
(2)
Penyelesaian persamaan linear menggunakan back slash membutuhkan pembuatan matrik koefisien dan matrik konstanta berikut: Koef=[1 1;1 -WperD]; Konst=[F;0]; WdanD=Koef\Konst; Pemrograman : p=[1370 550 200]; m=p/760; zF=[0.50 0.25 0.25]; Sigma=@(WperD) sum(zF.*(WperD+1)./(WperD./m+1))-1; fplot(Sigma,[1 5]); grid on %melihat titik potong smb WperD WperD=fzero(Sigma,2); yD=zF.*(WperD+1)./(WperD./m+1); xW=yD./m; %penyelesaian persamaan linear F=100; MatKoef=[1 1;1 -WperD]; MatKonst=[F;0]; WdanD=MatKoef\MatKonst;
%keluaran program disp('FLASH VAPORIZATION') disp('Komponen Feed Cairan Uap') fprintf(' benzene %0.2f %0.4f %0.4f\n',zF(1),xW(1),yD(1)) fprintf(' toluene %0.2f %0.4f %0.4f\n',zF(2),xW(2),yD(2)) fprintf(' 0-xylene %0.2f %0.4f %0.4f\n',zF(3),xW(3),yD(3)) disp('Basis F = 100 mol, maka') fprintf(' Cairan = %2.2f mol Uap = %2.2f mol \n',WdanD(1),WdanD(2)) Program ini harus Anda ketikkan sebagai M-File dan hasil eksekusi program diatas menghasilkan keluaran berikut: FLASH VAPORIZATION Komponen Feed Cairan Uap benzene 0.50 0.3965 0.7147 toluene 0.25 0.2747 0.1988 0-xylene 0.25 0.3288 0.0865 Basis F = 100 mol, maka Cairan = 67.46 mol Uap = 32.54 mol
3.11 Flash Vaporization Suatu feed ( 82 C dan tekanan 1035 kPa ) dengan komponen sesuai dengan tabel dibawah, mengalami flash vaporization pada saat masuk kolom distilasi fraksionasi. Hitunglah kualitas uap q dari feed yang masuk ke kolom. ( Soal dari : RE. Treybal , Mass-Transfer Operations ,ilustrasi 9.13 hal. 436 s/d 439 ) Identik dengan persoalan pada sub bab 3.10, maka semua data dan metode perhitungannya dipaparkan dalam bentuk tabel sebagai berikut:
zF,
Komponen
fraksi mol
0
Koefisien Distribusi 0 0 Kesetimbangan m
0
0 m82
30 C
60 C
90 C
120 C
82 C
L 1) G y L 1 Gm z F(
C1 : CH4
0.03
16.1
19.3
21.8
24.0
?
?
C2: C2H6
0.07
3.45
4.90
6.25
8.15
?
?
C3: n-C3H8
0.15
1.10
2.00
2.90
4.00
?
?
C4: n-C4H10
0.33
0.35
0.70
1.16
1.78
?
?
C5: n-C5H12
0.30
0.085
0.26
0.50
0.84
?
?
C6: n-C6H14
0.12
0.030
0.13
0.239
0.448
?
? 6
y
i
1
i1
Permasalahan diatas diselesaikan dengan menggunakan berikut pentahapan : 1) Nilai m82 setiap komponen akan dihitung melalui interpolasi linear Untuk memudahkan perhitungan, maka data suhu T dan koefisien distribusi kesetimbangan m disusun berdasarkan urutan nomor komponen sebagai vektor baris dan dalam kelompok suhu. Jadi, terdapat vektor baris T dan vektor m30, m60, m90, dan m120 sebagai berikut: T=[30 60 90 120]; m30=[16.1 3.45 1.1 0.35 0.085 0.03]; m60=[19.3 4.9 2 0.7 0.26 0.13]; m90=[21.8 6.25 2.9 1.16 0.5 0.239]; m120=[24 8.15 4 1.78 0.84 0.448]; zF=[0.03 0.07 0.15 0.33 0.3 0.12]; Dengan demikian, untuk mendapatkan data m pada suhu 82 C untuk setiap komponen melalui cara interpolasi, maka dapat menggunakan kode berikut : o
m82=interp1(T,[m30; m60; m90; m120],82) 2) Sesuai tabel diatas, nilai y setiap komponen didapat dengan cara mentrial6
error nilai L/G seterusnya sehingga terpenuhi syarat:
y
i
1.
i1
Untuk itu didefinisikan fungsi anonymous Sigma sebagai berikut: Sigma=@(LperG) sum(zF.*(LperG+1)./(LperG./m82+1))-1;
3) Kualitas uap q adalah perbandingan antara L dan F dan karena F=L+G, maka kualitas uap q dapat dinyatakan sebagai :
q
L
G . 1L G
4) Untuk melihat kurva fungsi Sigma di dalam interval [1 5], menghitung nilai L/G , kualitas uap dan komposisinya, maka digunakan kode-kode berikut: fplot(Sigma,[1 5]); grid on ; LperG=fzero(Sigma,1.5); q=LperG/ (1+LperG); y=zF.*(LperG+1)./ (LperG./m82+1) Pemrograman : T=[30 60 90 120]; m30=[16.1 3.45 1.1 0.35 0.085 0.03]; m60=[19.3 4.9 2 0.7 0.26 0.13]; m90=[21.8 6.25 2.9 1.16 0.5 0.239]; m120=[24 8.15 4 1.78 0.84 0.448]; zF=[0.03 0.07 0.15 0.33 0.3 0.12]; m82=interp1(T,[m30; m60; m90; m120],82) %interpolasi linear Sigma=@(LperG) sum(zF.*(LperG+1)./(LperG./m82+1))1; fplot(Sigma,[1 5]); grid on ; %melihat titik potong smb LperG LperG=fzero(Sigma,1.5); q=LperG/(1+LperG) y=zF.*(LperG+1)./(LperG./m82+1) Berikut adalah hasil eksekusinya. m82 = 21.1333
5.8900
2.6600
1.0373
0.4360
0.2099 q = 0.615 7y= 0.0726
0.1432
0.2436
0.3375
0.1670
0.0362
3.12 Kecepatan Aliran dalam Pipa Suatu cairan dialirkan dari tangki 1 ke tangki 2 melalui pipa berdiameter D = 4 cm dengan bantuan sebuah pompa. Diketahui beberapa hal sebagai berikut: - Head pompa : Hm = 3718.5 - 2.3496*Q + 7.8474e-4*Q - 9.5812e-8*Q - Debit aliran Q = Av = pi/4 D . v - Faktor gesekan f = 0.0596 / Re ( pers. d'Arcy ) - Bilangan reynold Re = rho v D / miu - Panjang ekivalen pipa Le = 20000 cm - Persamaan Bernoulli antara level air pada tangki 1 dan tangki 2 (disederhanakan) 2
3
2
0.215
2
z2 – z1 + f.Le.v / 2/g/D – Hm = 0 Hitung kecepatan aliran dalam pipa v untuk rho=1 g/cm3, miu=0.01 g/cm/det, g=981 cm/det2, z = 300 cm, dan z = 800 cm 1
1
( Soal dari WBS, Pemodelan Matematis dan Penyelesaian Numeris dalam Teknik Kimia, Bab 5 hal. 115 ) Skema Perhitungan 1) trial dan error : tebak v lalu dengan nilai v tersebut hitung secara berturut-turut Re, f, Q, dan Hm. Selesaikan persamaan Bernoulli sehingga nilai v yang diperoleh dapat dipakai lagi sebagai tebakan nilai v yang baru. Perhitungan diulang seterusnya hingga didapatkan nilai v yang tidak jauh berbeda. 2) penyelesaian langsung semua persamaan yang disusun sebagai fungsi dari v Pemrograman 1: clc rho=1; %g/cm3, massa jenis miu=0.01; %g/cm/det, viskositas g=981; %cm/det2, percepatan grafitasi z1=300; %cm, tinggi level cairan pd tangki 1 z2=800; %cm, tinggi level cairan pd tangki 2 D=4; %cm, diameter pipa
Le=20000; %cm, panjang ekivalen pipa Tol=0.001; dv=1; v=200; %perkiraan awal while dv > Tol Re=rho*v*D/miu; f=0.0596/Re^0.215; Q=pi/4*D^2*v; Hm=3718.5-2.3496*Q+7.8474e4*Q.^2-9.5812e-8*Q.^3; fPB=@(v) z2z1+f*Le*v^2/2/g/D-Hm; v1=fzero(fPB,v); dv=abs(v1-v); v=v1; end Q=pi/4*D^2*v; fprintf('Kecepatan : %g cm/det.\n',v) fprintf('Debit : %g cm3/det.\n',Q) Eksekusi prorgram diatas menghasilkan : Kecepatan : 227.674 cm/det. Debit : 2861.03 cm3/det. Pemrograman 2: rho=1; miu=0.01; g=981; z1=300; z2=800; D=4; Le=20000; Re=@(v) rho*v*D/miu; f=@(v) 0.0596./Re(v)^0.215; Q=@(v) pi/4*D^2*v; Hm =@(v) 3718.5 - 2.3496*Q(v) + 7.8474e-4*Q(v)^2-9.5812e-8*Q(v)^3; fPB=@(v) z2-z1 + f(v)*Le*v^2/2/g/D-Hm(v); v=fzero(fPB,200); fprintf('Kecepatan : %g cm/det.\n',v) fprintf('Debit : %g cm3/det.\n',Q(v)) Eksekusi prorgram diatas menghasilkan : Kecepatan : 227.674 cm/det. Debit : 2861.03 cm3/det. Berikut adalah penyelesaian dengan menggunakan M-File function menggunakan kode-kode berikut: function k=KecAlir(v,z1,z2,Le,D,rho,miu,g) Re=rho*v*D/miu; f=0.0596/Re^0.215; Q=pi/4*D^2*v; Hm=3718.5-2.3496*Q+7.8474e4*Q^2-9.5812e-8*Q^3; k=z2z1+f*Le*v^2/2/g/D-Hm;
Fungsi diatas kemudian di test dengan script berikut: rho=1; miu=0.01; g=981; z1=300; z2=800; D=4; Le=20000; v=fzero(@(v) KecAlir(v,z1,z2,Le,D,rho,miu,g),200); Q=pi/4*D^2*v; fprintf('Kecepatan : %g cm/det.\n',v) fprintf('Debit : %g cm3/det.\n',Q) Eksekusi prorgram diatas menghasilkan : Kecepatan : 227.674 cm/det. Debit : 2861.03 cm3/det.
3.13 Tangki Berpengaduk Tangki berpengaduk mula-mula
M 0 1000 kg air murni.
berisi
Mulai
suatu saat dimasukkan larutan garam
x F 70% (kg garam/kg
berkadar
larutan)
ke dalam tangki F 15 kg/menit dan secara bersamaan sebanyak juga dikeluarkan cairan dari dalam tangki sebanyak L kg/menit. Tentukanlah kadar garam larutan keluar tangki setiap t 30 menit jika dianggap terjadi pengadukan yang sempurna. Tinjaulah untuk beberapa kasus nilai F L Metode Penyelesaian : Dari neraca massa total diperoleh :
FL
dM dt
M M0t
dM dx Dari neraca massa komponen F x L x d (Mx) x F L M dt dt : dt Asumsi pengadukan sempurna adalah mengandaikan bahwa proses pengadukan telah mengakibatkan homogenisasi konsentrasi cairan dalam tangki disetiap sudut dalam tangki sehingga dapat dikatakan konsentrasi cairan dalam tangki sama dengan konsentrasi keluar tangki. Jika konsentrasi cairan dalam dan keluar tangki sama dengan x, maka neraca massa komponen berubah menjadi:
F xF L x x
dM dx M dt dt
a)
Jika L = F,
maka :
F
0
dx F xF L x dt M
dt
0
F . xF L x x (F L) M (F L) t dx 0 dt
b) Jika L < F, maka :
Fx
dx
F Fx sehingga dt M 0 (F L) t :
F ( x xF ) M0 t
F . xF L x x (F L) M (F L) t dx 0 dt
c) Jika L > F, maka :
sehingga :
Fx Lxx.0M dx
dx dt
F M0 t
x
F
x
Semua persamaan pada kasus a), b), dan c) memiliki nilai awal Berikut adalah penyelesaiannya dengan MATLAB:
(t 0 ; x0 ) (0; 0) .
clc; M0=1000; xF=0.7; Fa=15; La=15; %utk F=L Fb=15; Lb=10; delta_b=5; %utk F>L Fc=15; Lc=20; delta_c=5; %utk F
View more...
Comments