Anda di halaman 1dari 132

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

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


[ ] .

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

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.

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 )

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

ans =
1
2
3

ans =
1
2
3

(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

-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

12

ans =
20
ans =
3
6

(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

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]

(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

64

Operator Relasional
Operator relasional membandingkan operand secara kuantitatif, dan
meliputi lebih kecil dari ( < ), lebih kecil dari atau sama dengan ( <= ),
lebih besar dari ( > ), 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

>> X=A>=[1 2 3 ; 4 5 6 ; 7 8 10] , Y=B>=[1 2 3 ; 4 5 6 ; 7 8 10]


X=
1

Y=

10

>> X==Y, X<=Y , X>=Y


ans =
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 and(A,B)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,

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

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

-2

-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

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

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

-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

s=
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

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

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 :

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

11

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

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

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

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

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)

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

x 4
x x
2
1

0.5

Contoh 4:
persamaan

Untuk

menemukan

nilai

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

f ( 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

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:

Ekspresi

berikut

untuk

menyelesaikan

hitung

integral

3 dx

>> 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

Contoh 2: Tentukan nilai a


supaya

3 dx 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 =

,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

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

-7

-25.75

-54.55

-93.44

-142.36 -201.31 -270.26

Jika data dicocokkan pada persamaan :


y=
nilai a, b, c, d, dan e terbaik.

a
x2

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

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

0.4755

1.8534

2.4977

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

by

3) z a x y

,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

RL

HASIL

y ax

[ x]

m\ y

y ax b

[x ones(size(x))]

m\ y

a RL
a RL(1)

yae

bx

ln( y) ln(a) bx

[ones(size(x)) x]

m \ log( y)

yax

ln( y) ln(a) b ln( x)

[ones(size(x)) log( x)]

m \ log( y)

yax

bx

ln( y) ln(a) bx ln( x)

[ones(size(x)) x. * log( x)]

m \ log( y)

yax

ln( y) ln(a) bx ln( x) c ln( x) [ones(size(x)) x. * log( x) log(


x)]

m \ log( y)

ya

bx c

b
ex

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 +

3c

2a +

3b

2c

2a

3b

13

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

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

2a a b 2b 19 0
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)

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 mnimum (-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

x 10

140
120

2.5

100
2
80
1.5
60
1
40
0.5

20

-0.5
-20

-15

-10

-5

10

15

20

-20
-2

-1.5

-1

-0.5

0.5

1.5

Dari kurva diatas, terlihat jelas terdapat 2 titik mnimum absolut dan
1 titik
maksimum relatif. Hal ini membuktikan kebenaran titik mnimum yang
sudah dihitung tetapi sekaligus juga membuktikan adanya titik mnimum 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 mnimum
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 mnimum 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

y f (x1 , x2 ) 100(x2 x1 ) (1 x1 )

>> 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.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.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

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

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

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)

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

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)

dT .

x 3

, 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

(15) Hitung densitas N pada 27 C dan 100 kPa ( 1.123 kg3 / m )


0

(16) Diketahui persamaan diferensial


ordiner

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<=4
A=A*i;
i=i+1;
end
A

2.4.3 Break
Untuk mengakhiri suatu pengulangan menggunakan for atau
while, maka digunakan break. Berikut adalah bentuk lain dari program
contoh diatas, yang mana sama-sama menghasilkan nilai A=24
A=1;
i=1;
while
i<100
A=A*i
;
i=i+
1;
break
if
i==5
end
end
A

2.5

Referensi Simbol-Simbol

MATLAB menggunakan banyak simbol dan Anda dapat membacanya


di MATLAB-Programming-Basic Program Components-Symbol Reference.
Apakah Anda masih ingat tentang kegunaan simbol-simbol yang pernah
digunakan pada pembahasan yang lalu, seperti at ( @ ), percent ( % ),
colon ( : ), comma ( , ) , semicolon ( ; ), single quotes ( ' ' ), dan square
brackets ( [ ] )?
Simbol lain yang penting dalam penulisan teks program dan
khususnya untuk

keperluan

mencetak

teks

program

adalah

Dot-Dot-

Dot (Ellipsis) ( ... ). Simbol ini berguna untuk memutus suatu baris ekspresi
dalam MATLAB dan melanjutkannya pada baris berikutnya. Tanda ini tidak
dapat digunakan untuk memotong string panjang yang terletak dalam tanda

single quotes.

2.6

Built-in Function
MATLAB

built-in functions tak terbilang banyaknya dan Anda

dapat melihatnya

sendiri

pada

pada Functions - Alphabetical

MATLAB-Functions-Categorical List atau

List.

Fungsi-fungsi

tersebut

ada

yang

tidak membutuhkan argumen, tetapi kebanyakan membutuhkan argumen


dengan syntax yang tertentu dan harus diikuti.

2.7

Grafik

MATLAB menyediakan 2 cara penggambaran kurva 2-D, yaitu


dengan menggunakan plot dan fplot.

2.7.1 Penggambaran dengan plot


Informasi lebih lengkap dapat dilihat pada help menu, yaitu pada
MATLAB Function Reference : plot
Contoh-contoh berikut menggunakan x1=1:501; x2=1 : 100 : 501 dan
y=@(x)
x.^2-1. Pelajari dan buat kesimpulan operasi dengan menggunakan plot ini:
(1) a) plot(x1)

b) plot(x1,'o')

plot(x1,'*r') (2) a) plot(x1,y)


plot(x1,y(x1),x2,y(x2),'-dm')

c) plot(x1,'r')

d) plot(x1,'o-r')

b) plot(x1,y(x1))

c)

e)

(3) a) plot(x1,y(x1),x2,y(x2), '*r')

b) plot(x2,y(x2),'-.or')

(4) a) plot(x1,y(x2), '*')


LineSpec adalah parameter yang berhubungan dengan beberapa
karakteristik penggambaran yang meliputi line style, line width, color,

marker type, marker size, marker face and edge coloring (for filled
markers)
Line Style Specifiers:
Specifier
-

--

Line Style Solid line

-.

Dashed line Dotted line Dash-dot line

(default)
Marker Specifiers
Specifier

Marker Type

Plus sign

Circle

Asterisk

Point

Cross

'square' or s
'diamond' or d

Square
Diamond

Upward-pointing triangle

Downward-pointing triangle

>

Right-pointing triangle

<

Left-pointing triangle

'pentagram' or

Five-pointed star (pentagram)

p
Color Specifiers
Specifier
Color

red green blue cyan magenta yellow black white


LineSpec dapat menerima 3 komponen sekaligus untuk
mendefinisikan

sebuah garis, yaitu : line style, marker symbol dan

color
Contoh : plot(x,y,'-.or') adalah cara penggambaran titik-titik data y versus
data x menggunakan dash-dot line (-.), circular markers (o) pada setiap
titik data, dan menggunakan warna merah (r, red) untuk garis dan marker.

Karakteristik penggambaran yang lain juga dapat dilakukan melalui :


(1) LineWidth : ketebalan garis dalam satuan points (default:0.5)
(2) MarkerEdgeColor : warna marker (circle, square, diamond,
pentagram,
hexagram, and the four triangles)
(3) MarkerFaceColor : warna dari face of filled

markers (4) MarkerSize : ukuran marker dalam


satuan points Contoh : plot(x,y,'-rs','LineWidth',2,'MarkerEdgeColor','k',...
'MarkerFaceColor','g','MarkerSize',
10)
Untuk mengatur lokasi tick mark dan untuk membuat label, title,
meletakkan teks tertentu, maka Anda dapat memperhatikan contoh berikut:
x = -pi:.1:pi; y = sin(x);
plot(x,y, 'r','LineWidth',2)
set(gca,'XTick',pi:pi/2:pi)
set(gca,'XTickLabel',{'-pi','pi/2','0','pi/2','pi'}) xlabel('-\pi \leq
\Theta \leq \pi') ylabel('sin(\Theta)')
title('Kurva Fungsi Sinus (\Theta)')
text(-pi/4,sin(-pi/4),'\leftarrow sin(-\pi\div4)','HorizontalAlignment','left')
Untuk melengkapi gambar dengan garis-garis pembagi (grid),
maka dapat ditambahkan kode : grid on dan untuk menghilangkan grid
tersebut dengan : grid off.
Jika menggunakan perintah plot 2 kali atau lebih dan diinginkan
semua kurva ditampilkan bersama, maka dapat ditambahkan lagi : hold on

2.7.2 Penggambaran dengan fplot


Informasi lebih lengkap dapat dilihat pada help menu, yaitu pada
MATLAB Function Reference : fplot
Fungsi fplot menggambarkan kurva fungsi pada interval tertentu.

Syntax:
fplot(fungsi,limits)
fplot(fungsi,limits,LineSpe
c)
Fungsi fplot harus dalam bentuk y = f(x), dimana x adalah vektor
dengan batas-batas tertentu dan y adalah vektor dengan ukuran yang
sama dengan vektor x dan berisi nilai fungsi tersebut pada / didalam
interval x. Argumen limits dapat berupa interval dalam x ( [xmin
xmaks]
) atau interval dalam x dan y sekaligus ( [xmin xmaks ymin ymaks] ).
Perhatikan contoh-contoh berikut:
1)
2*pi])

y=@sin; fplot(y,[0

2)
y=@(x) 200*sin(x)./x; fplot(y,[20 20])
3)
y=@(x) sin(x); fplot(y,[0 2*pi
-1.5 1.5])
4)
y=@(x) 0.5*sin(1.5*x); fplot(y,[0 2*pi -1.5
1.5],'-r')
5)
y=@(x) [sin(x) 0.5*sin(1.5*x)]; fplot(y,[0
2*pi])
Pada contoh 1) terlihat fungsi built in MATLAB sin diawali dengan
simbol
@ dan penggambaran dilakukan pada interval sumbu x dari 0 s/d 2 .
Pada
contoh 2) digunakan fungsi anonymous dan penggambaran pada interval
sumbu x dari -20 s/d 20. Pada contoh 3) digunakan fungsi anonymous
dan penggambaran pada interval sumbu x dari 0 s/d 2 dan sekaligus
juga pada
sumbu y dari -1.5 s/d 1.5. Pada contoh 4) didefinisikan juga LineSpec jenis
garis berwarna merah. Terakhir pada contoh 5) dua buah fungsi berbeda
digambarkan dalam interval sumbu x dari 0 s/d 2 .
Jika fungsi didefinisikan melalui M-file, maka dilakukan seperti
berikut: Misal diinginkan fungsi y dapat menghasilkan 4 vektor kolom,
maka:
function
y
=
myfun(x)
y(:,1) = 20*sin(x(:))./x(:);
y(:,2) =
10*sin(x(:)).^2./x;
y(:,3) = (x.^2+1).^0.5;
y(:,4) = 20*sin(x(:)-pi)./(x(:)
+5*pi).^0.5;

Pemanggilan fungsi harus menggunakan function handle seperti


berikut:
fungsiku=@myfu
n;
fplot(fungsiku,[-15
15])

2.8

Beberapa Trik Pemrograman

2.8.1 Membuat gambar kurva fungsi polinom


Sejauh ini Anda sudah belajar bagaimana menggambarkan
sebuah kurva berdasarkan titik-titik data (plot) dan berdasarkan fungsi
(fplot). Berikut adalah beberapa contoh penggambaran kurva fungsi
polinom:
Contoh 1 : Diketahui sebuah polinom yang direpresentasikan dalam MATLAB
sebagai : p=[1 2 -3 -4], maka untuk menggambarkannya pada interval [a,b]
perlu beberapa tahapan seperti berikut:
p=[1 2 -3 -4]; interval=[-5 5];
y=@(x) p(1)*x.^3+p(2)*x.^2+p(3)*x+p(4)
fplot(y,interval)
atau
p=[1 2 -3 -4]; a=-5; b=5; x=a:0.01:b;
y=polyval(p,x);
plot(x,y)
atau
p=[1 2 -3 -4]; interval=[5 5]; y=@(x)
polyval(p,x);
fplot(y,interval)

2.8.2 Permasalahan Mencari Harga Nol


Anda pasti mengingat, bahwa roots adalah fungsi polinom yang
menghitung harga nol dari suatu fungsi polinom. Dalam prakteknya
fungsi polinom ini agak merepotkan karena menghasilkan seluruh harga nol
yang ada, termasuk jika harga nol tersebut merupakan bilangan komplek.
Pada komputasi teknik kimia, lebih sering diinginkan hanya 1 harga nol saja
sebagai satu-satunya hasil yang dianggap benar. Berikut adalah beberapa
contoh permasalahan harga nol:

Contoh 1: Diketahui vektor koefisien fungsi polinom p=[1 2 3 4 5 6 -7


-8 -9].
Buatlah program MATLAB yang dapat
menentukan a) harga nolnya,
b) nilai prediksi x pada
y=12
c) batas integrasi atas a supaya integrasi fungsi polinom tersebut mulai
dari batas integrasi bawah 3 bernilai 20000.
d) titik-titik
minimum)

ekstrim

(makimum

Jawab : a) Cara terbaik adalah dengan menggambarkan kurva fungsi


polinom terlebih dahulu sehingga dapat diperkirakan titik-titik potong kurva
terhadap sumbu x.
p=[1 2 3 4 5 6 -7 -8
-9];
y=@(x) polyval(p,x); fplot(y,[-2. 1.5 -20 20]);
grid on fzero(y,-2), fzero(y,1)
20
15
10
5
0
-5
-10
-15
-20
-2

-1.5

-1

-0.5

0.5

1.5

Dari kurva diatas, dapat dengan mudah diketahui titik-titik perkiraan


sebagai nilai
awal untuk fungsi fzero. Dalam hal ini dipilih nilai -2 dan 1 sebagai nilai awal
sehingga diperoleh harga nol -1.7004 dan 1.0360. Hasil ini dapat Anda
perbandingkan dengan ekspresi roots(p) sebagai alternatif pencaran harga
nol sebuah polinom.

Jawab : b) Dari kurva juga terlihat, pada y=12 terdapat 2 nilai x, yakni antara
-2 s/d
-1.5 dan antara 1 s/d 1.5. Dengan demikian pada program diatas
dapat ditambahkan kode-kode berikut:
g=@(x) polyval(p,x)-12; fzero(g,-2),
fzero(g,1) Jawab : c) g=@(a) quad(y,3,a)20000; fzero(g, 4)
Jawab : d) Mnimum : fminbnd(y,-1.5, -1), fminbnd(y,0.5, 1)
Maksimum : y=@(x) -polyval(p,x) ; fminbnd(y,0.5, 0)
Dari contoh d) terlihat, titik maksimum juga bisa ditentukan dengan
menggunakan fminbnd, asalkan fungsi asalnya dikalikan dahulu
dengan bilangan -1.
Contoh 2: Diketahui polinom y=f(x) dengan vektor koefisien polinom : p=[1
2 3 4
5 6 -7 -8 -9]; tentukanlah nilai batas integrasi bawahnya supaya integrasi
fungsi tersebut hingga batas integrasi atas 3 bernilai 15
p=[1 2 3 4 5 6 -7 -8 -9];
b=3;
q=polyint(p);
y=@(x) polyval(q,b)polyval(q,x)-15 a=fzero(y,2)
Jawaban alternatif berikut menggunakan fungsi
quad. p=[1 2 3 4 5 6 -7 -8 -9];
y=@(x) polyval(p,x);
g=@(a) quad(y,a,3)-15;
fzero(g,2)
Contoh 3:
Diketahui

2x
2

x 1

5x 4 e

2 x

a) harga nol fungsi diatas


y=@(x) 2*x./(x.^2+1)-5*x+4*exp(-2*x);
fzero(y,2)

, hitunglah :

b) pada nilai x berapa supaya nilai y = 200


y=@(x) 2*x./(x.^2+1)-5*x+4*exp(-2*x)-200;
fzero(y,2)
c) batas integrasi atas supaya integral fungsi tersebut mulai dari 2
bernilai -100 y=@(x) 2*x./(x.^2+1)-5*x+4*exp(-2*x);
g=@(atas) quad(y,2,atas)+100;
fzero(g,3)
d) batas-batas integrasi jika integral fungsi dalam range selebar 10
bernilai 100 y=@(x) 2*x./(x.^2+1)-5*x+4*exp(-2*x);
g=@(a) quad(y,a,a+10)100;
batas_bawah=fzero(y,3)
batas_atas=batas_bawah+
10
Contoh 4:
Diketahui

y ax 4 e

2 x

, hitunglah nilai a supaya nilai fungsi

diatas
untuk x = 2 adalah 10.5
x=2; y=@(a) a*x+4*exp(-2*x)-10.5;
fzero(y,3)
Jawaban alternatif berikut menggunakan manipulasi aljabar, tanpa fzero
x=2; y=10.5;
a=(y-4*exp(-2*x))/x

2.8.3 Permasalahan Persamaan Diferensial


Ordiner
Fungsi

built

in

MATLAB

ode45

dan

kerabatnya

sebenarnya

sudah canggih dan hebat, tapi sayangnya tidak dapat dikombinasikan


dengan fungsi MATLAB fzero , seperti contoh berikut:
2
Contoh 1: Persamaan diferensial ordiner (PDO) order 1
y' x 2x y
berikut:
memiliki nilai awal (0 ; 0). Untuk menghitung berapa nilai y yang cocok
untuk nilai x tertentu, misalnya x = 3, maka fungsi ode45 akan dengan
mudah menemukan nilai
9
sebagai
solusinya.
Sebaliknya,
fungsi
ode45 tidak akan mampu menemukan nilai x = 3 jika diketahui nilai y =
9.

Berikut
dapat

akan

dibuat

suatu

M-file function sederhana yang

menyelesaikan permasalahan PDO diatas berdasarkan metode Runge


Kutta
order ke- 4 dengan 4 variabel masukan, yaitu fungsi PDO secara eksplisit,
vektor baris sebagai nilai awal [x0 y0], nilai tahapan perhitungan h dan
nilai x sebagai titik penyelesaiannya. Fungsi diberi nama PDORK dengan
variabel keluaran y.
function
y=PDORK(fun,awal,h,x)
xi=awal(1);
yi=awal(2);
for i=xi+h:h:x
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
y=yi
;
Setelah selesai mengetik fungsi diatas, tekan tombol F5 dan pada
jendela Save file as: yang muncul akan tertera nama file PDORK
secara

otomatis. Terima

nama ini

dengan

menekan

tombol

ENTER.

Berikutnya buka M-file baru atau jendela command line dan ketikkan
ekspresi-ekspresi berikut untuk menyelesaikan permasalahan diatas:
Dy
=@(x,y)
x.^2+2*x-y;
awal=[0
0];
h=0.1;
y=@(x)
PDORK(Dy,awal,h,x)-9;
fzero(y,2
)

2.8.4 Permasalahan Metode Least


Square
Metode least square adalah metode menghitung nilai SSE (sum of

the squared error) yang minimum antara data yang diketahui dan data
perhitungan. SSE didefinisikan dengan menggunakan rumus berikut:

SSE ydata y hitung

Fungsi MATLAB yang sangat berperan dalam metode ini antara


lain
adalah fminbnd dan fminsearch.
Contoh 1 : Diketahui data x dan y berikut: x=[1 2 3 4 5]; y=[5 7 9 11 13];
Jika data akan dicocokkan dengan
fungsi

y kx 3 , maka tentukan nilai k

yang
paling cocok menggunakan metode least square.
x=[1 2 3 4 5]; y=[5 7 9
11 13]; k=4; Y=@(X)
k*X+3; SSE=sum((yY(x)).^2)
Jika nilai k diubah dari 4 menjadi 3, maka didapatkan nilai SSE yang lebih
kecil. Artinya nilai k yang cocok kemungkinan berada pada nilai SSE yang
lebih kecil dari pada 3. Jika dicoba lagi nilai k = 2, ternyata didapatkan nilai
SSE = 0 yang mana menandakan SSE sudah mencapai nilai minimum. Jadi
nilai k yang cocok adalah 2
Contoh 2 : Jika contoh soal 1 diselesaikan dengan menggunakan fungsi,
maka mula-mula dibuatkan dahulu M-file function berikut:
function
f=SSE(x,y,k)
fun=@(x) k*x + 3;
f=sum((yfun(x)).^2);
Kemudian dilanjutkan dengan membuat script berikut:
clc
x=[1 2 3 4 5]; y=[5 7 9 11 13];
k=1;
% nilai perkiraan
awal utk k k=fminbnd(@(k) SSE(x,y,k),-10, 10)
Contoh 3 : Jika data yang sama didekati
dengan dan n yang cocok.

y mx n , maka tentukanlah
m

Mula-mula dibuatkan dahulu M-file function berikut:


function f=SSE1(x,y,k)
m=k(1); n=k(2);
fun=@(x) m*x + n; f=sum((y-fun(x)).^2);

Kemudian dilanjutkan dengan membuat script berikut:


clc
x=[1 2 3 4 5]; y=[5 7 9 11 13];
mn=fminsearch(@(k) SSE1(x,y,k),[10 10])

x 1 2 3 2 1
Cocokkan data
y 4 13 28 13 4

Contoh 4 : Diketahui data


berikut :
tersebut dengan persamaan
a)

y ax 1 dan

y ax c

b)

Mula-mula dibuatkan dahulu 2 buah M-file function


berikut:
function
f=SSE2(x,y,k)
a=k(1)
;
b=k(2
);
fun=@(x) a*x.^b
+ 1;
f=sum((yfun(x)).^2);
dan
function
f=SSE3(x,y,k)
a=k(1)
;
b=k(2)
;
c=k(3)
;
fun=@(x) a*x.^b
+ c;
f=sum((yfun(x)).^2);
Kemudian
berikut:

dilanjutkan

clc
x=[1 2 3 4
5];
y=[4 13 28 49
76];
ab=fminsearch(@(k)

dengan

membuat

SSE2(x,y,k),[10

script

10]);
a=ab(1),
b=ab(2)
abc=fminsearch(@(k) SSE3(x,y,k),[10 10
10]);
a=abc(1),
b=abc(2),
c=abc(3)
Untuk soal a) dapat diperbandingkan dengan jawaban alternatif
menggunakan metode linearisasi berikut:

clc
x=[1 2 3 4 5]';
y=[4 13 28 49 76]';
m=[ones(size(x))
log(x)]; RL=m\log(y-1);
a=exp(RL(1)), b=RL(2)

x 0 1 2 3 4
yang akan
y 0 1 4 9 16

Contoh 5: Diketahui data x dan y


berikut :
dicocokkan dengan persamaan :
a)

dan
y' ax cx y .
b)
Persamaan-persamaan diferensial ordiner (PDO) order 1 tersebut memiliki
nilai awal (0 ; 0). Tentukan nilai konstanta-konstanta yang tidak diketahui
dan buat tabel perbandingan antara data y dan y terhitung.
a)
berikut:

y' ax bx
y

Buat 2 M-file

function [fSSE yhit]=SSE4(awal,x,y,k)


f=0; h=0.1; a=k(1); b=k(2);
fun=@(x,y) a*x.^2+b*x-y;
for jx=1: length(x)
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
yhit(jx)=yi;
f=f+(y(jx)yi).^2;
end
fSSE=f;
dan
function [fSSE
yhit]=SSE5(awal,x,y,k) f=0;
h=0.1; a=k(1); b=k(2); c=k(3);
fun=@(x,y) a*x.^b+c*x-y;
for jx=1: length(x)
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
yhit(jx)=yi;
f=f+(y(jx)yi).^2;
end
fSSE=f
;
b)

Buat script berikut:


clc
x=1:4; y=[1 4 9 16];
awal=[0 0];
ab=fminsearch(@(k) SSE4(awal,x,y,k),[10
10]) [fSSE yhit]=SSE4(awal,x,y,ab);
[y' yhit']
abc=fminsearch(@(k) SSE5(awal,x,y,k),[3
3 3]) [fSSE yhit]=SSE4(awal,x,y,abc);
[y' yhit']

2.9
1)

Latihan Soal-Soal

Buat script yang dapat menentukan:


a) suatu bilangan merupakan bilangan genap, ganjil dan prima, ganjil
dan
bukan prima, atau
nol.
jumlah bilangan ganjil dan prima dari 1 s/d 1000

b)

2) Buat script yang menentukan harga nol


dari

yx 2e
3

x 1

dengan

menggunakan metode Newton-Raphson dan fungsi MATLAB fzero


3) Buat M-file function tentang iterasi metode Newton-Raphson dan script
untuk mengujinya. Gunakan fungsi pada soal no. 2
2

4) Hitung SSE dari data berikut terhadap


fungsi

yx

2x
2

x 2

x 1
2
3
5
7
0.1 0.2 0.3 0.4
y 1.6 4.7 9.5 25.4 49.3 0.11 0.22 0.38 0.53
5)

x 1 2 3 4 0.1 0.2 0.3 0.4 0.5


y 6 12 20 30 2.31 2.64 2.99 3.36 3.75

Diketahui data x dan y :

Jika data tersebut akan dicocokan dengan


PDO :

y' ax bx c y ,
maka

tentukanlah nilai a, b, dan c yang terbaik serta nilai SSE-nya.


6)
:

Persamaan Antoinne ln p A

B
berikut adalah persamaan
T C empiris

yang menghubungkan data tekanan (mmHg) dan suhu (K) dari zat
tertentu. Hitung tekanan zat-zat berikut pada suhu T=30 ; 40 ; 50 dan
60 C dengan menggunakan alur perhitungan a) tekanan semua zat
untuk setiap suhu b) tekanan setiap zat untuk semua suhu
0

A
Amonia

16.9481 2132.50 -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

7) Diketahui x=[1 2 3 4 5]'; y=[2.0000


51.6094]';
Jika data dihubungkan
persamaan

dengan

8.6931 19.0986 33.3863

y ax b ln( x) ,

maka
tentukanlah nilai a dan b terbaik menggunakan metode regresi linear
multi fungsi (dengan operator back slash) dan metode least square
( dengan SSE )
8)

Diketahui persamaan Colebrook tentang faktor gesek f sebagai berikut:


f

0.86 ln (
3.7

a) Jika kekasaran
/ D 10
relatif
5
Re 10 , hitunglah faktor gesek f

2.51

)
f

Re

dan

4
b) Jika
kekasaran
/ D 10
relatif
hitunglah pada nilai Re berapa
faktor gesek f bernilai 0.02.
5

c) Jika f = 0.015 dan Re 10 , tentukanlah nilai / D

Jawaban Latihan Soal 2.9:


1a)

Script :
ulang=1;
while ulang
clc
a=input('Angka Anda = ');
if a==0
disp('sebuah bilangan nol')
elseif
rem(a,2)==1
if isprime(a)
disp('sebuah bilangan ganjil yang prima')
else
disp('sebuah bilangan ganjil yang bukan prima')
end
elseif
rem(a,2)==0
if isprime(a)
disp('sebuah bilangan genap yang prima')
else
disp('sebuah bilangan genap')
end
else
disp('bilangan apa ya???')
end
input('\nTekan ENTER untuk lanjut')
end

1b)

Script :
x=1 : 1000; jumlah=0;
for i=1:length(x)
if and(rem(x(i),2)==1,isprime(x(i)))
jumlah=jumlah+x(
i);
end
end
jumlah

2)

Script :
y=@(x) x.^2 +2*exp(x-1)-3;
Dy=@(x) (y(x+1e-4)- y(x-1e-4))/2/1e-4; %diferensiasi numeris
x0=4;
%diubah-ubah sesuai keperluan atau utk mencari akar lain
Tol=1e-5; selisih=1;
while selisih >=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

Konstanta

100

-1

-1

-1

-1

E1

-1

-1

-1

-1

E2

-1

-1

-1

E3

-1

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 )

0,710

0,0139

0,500

0,0711

0,355

0,1201

0,250

0,1167

0,180

0,0763

0,125

0,0500

0,071

0,0346

0,045

0,0103

Pan

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

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.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

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

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

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]

160

290

405

586

788

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

1060 1328
8

Vc
V

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)

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

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

- 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 :

Lc h

st

hst
FL

dM
dh sehingga :
dt A dt

Fc h

dh F c h
dh
dM

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.2

0.4

1.74

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:

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

Rumus :
1)
2)

xF

xW

F W

dx
*

(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
?

0.25

550

0.25

200

y *D

W
1)
D

W
(
1)
Dm
z F(

xW

y
D
m

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 *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

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

Koefisien Distribusi
0
0
Kesetimbangan m

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

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:

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 :

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

0.215

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

( 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 :

dx F xF L x

dt
M

dt

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

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<L
Dxa=@(t,x) (Fa*xF-La*x)/M0; Dxb=@(t,x) Fb*(xF-x)./
(M0+delta_b*t); Dxc=@(t,x) Fc*(xF-x)./(M0-delta_c*t); x0=0;
t0=0;
tSpan_ab=[t0 30:30:900]; tSpan_c=[t0
30:30:round(M0/delta_c)];
[ta xa]=ode45(Dxa,tSpan_ab,x0); [tb
xb]=ode45(Dxb,tSpan_ab,x0); [tc xc]=ode45(Dxc,tSpan_c,x0);
[ta xa xb], [tc xc]

3.14 Reaksi Pembentukan Etil Ester


Reaksi esterifikasi asam lemak pada distilat asam lemak (DAL)
dari
minyak sawit dengan etanol adalah sebagai berikut:

k1

Asam lemak + etanol

asam lemak etil ester

air

k2
,dengan
reaktan

k1, k2 adalah konstanta-konstanta kecepatan reaksi. Reaktan-

adalah 300 mL DAL (densitas 0.9433 gram/mL, 375 mL etanol 96%


(densitas
0.8022 gram/mL) serta 5 mL katalis asam sulfat pekat. Berikut adalah datadata pengukuran konsentrasi asam lemak bebas (FFA) sisa pada setiap
0
waktu dan suhu reaksi dari 60 s/d 80 C :

Waktu
[menit]

Suhu reaksi T, C
60

65

70

75

80

3.86 3.86

3.86 3.86 3.86

15

2.68 2.23

1.92 1.60 1.50

30

1.91 1.36

1.06 0.79 0.61

45

1.40 0.89

0.65 0.48 0.42

60

1.40 0.63

0.44 0.38 0.35

75

0.82 0.48

0.38 0.33 0.33

90

0.69 0.40

0.34 0.31 0.31

Buatlah program MATLAB yang dapat menentukan konversi


pembentukan
asam lemak etil ester pada setiap waktu dan perbandingan eqivalen Re
antara etanol dan DAL
Rumus-rumus:
a)
Konversi :

C Asam lemak awal C Asam lemak sesaat


C Asam lemak awal

C A0 C A
C A0

b) Perbandingan ekivalen RE

kadar et anol 1000

R dengan
RE E
DAL Kadar FFADAL 46 V

V
RV Etan o l
VDALMS

Pemrograman:
C0=3.86;
C60=[C0 2.68 1.91 1.40 1.40 0.82 0.69]'; C65=[C0 2.23 1.36 0.89 0.63
0.48 0.40]'; C70=[C0 1.92 1.06 0.65 0.44 0.38 0.34]'; C75=[C0 1.60
0.79 0.48 0.38 0.33 0.31]'; C80=[C0 1.50 0.61 0.42 0.35 0.33 0.31]';
C=[C60 C65 C70 C75 C80];
Xdata=(C0-C)./C0
%data konversi percobaan
rhoEtanol=0.8022; rhoDAL=0.9433;
%gram/mL VEtanol=375; VDAL=300;
%mL KadarEtanol=0.96;
EkiDAL=rhoDAL*VDAL*C0;
%mgek EkiE=rhoEtanol*VEtanol*KadarEtanol/46;
%gek Re=1000*EkiE/EkiDAL

Eksekusi prorgram diatas menghasilkan :


Xdata =
0

0.3057 0.422
0.5052 3
0.647

0.5026 0.5855 0.611


0.7254 0.7953 4
0.842

7
0.6373 0.769
4
0.6373 0.836

0
0.8316 0.8756 0.891
2
0.8860 0.9016 0.909

0.7876 8
0.875
6
0.8212 0.896

0.9016 0.9145 3
0.914
5
0.9119 0.9197 0.919

Re =
5.7474

3.15 Bubble point dan Dew point


Campuran dengan komponen, komposisi z dan koefisien distribusi K
seperti pada tabel dibawah memiliki tekanan P =200 psia.
F

Jika T adalah suhu dalam


satuan
No

Komponen

Ethane

8%

Propane

22% 0.0111 T 0.165

n-Butane

n-Pentane

53% 0.00516 T
0.177
17% 0.00254 T
0.143

derajat

0.0242 T + 0.28

Fahrenheit,

hitung

bubble point dan dew point dari


campuran

Petunjuk :
a) Untuk bubble point berlaku :

b) Untuk dew point berlaku :

y F ,i Ki z F ,i ai T bi z F ,i 1
z

x F ,i K
i

F ,i

F ,i
z

a i T bi

Permasalahan diselesaikan melalui pemrograman berikut:


zF=[8 22 53 17]/100;
a=[0.0242 0.0111 0.00516
0.00254]; b=[0.28 -0.165 -0.177
-0.143]; fdew=@(T) sum(zF./
(a*T+b))-1;
dewpoint=fzero(fdew,100)
fbubble=@(T) sum((a*T+b).*zF)-1;
bubblepoint=fzero(fbubble,100)
Eksekusi program diatas menghasilkan keluaran berikut:
dewpoint =
56.299
2

bubblepoint =
150.043
7

3.16 Plate Distillation


Suatu cairan diasumsikan sebagai campuran yang ideal, yang mana
itu berarti rumus August untuk tekanan uap dapat digunakan pada kolom
distilasi yang beroperasi dengan total reflux dan distillation stages yang
ideal. Rumus
August menyatakan bahwa tekanan
pi0 dari 2 substans murni adalah
uap
fungsi
0

dari suhu : Substans 1 : log( p )

b1

Konstant a1 , b1 , a2 , dan
a
b2

0 a
dan Substans 2 : log( p )
2
T

b
2

merupakan nilai karakteristik dari 2


substans

yang terlibat. Hukum Raoult menerangkan tentang tekanan pi dari substans


uap
pada campuran diatas melalui
persamaan :
persamaan ini

liq

xi
demikian, tekanan

p x
1

liq

p 0 dan
1 p

liq
2

p . Pada
2

adalah fraksi mol dari substans ke i pada fase cair.


Dengan
total

pt pada fase gas

dapat dinyatakan dengan :

pt p1 p2 x1liq p10 xliq


p20 x1liq p10 (1
2
x1

liq

) p02

Atau

a
a
liq
pt x1 .exp 1 b1 ) (1 liq ) .exp 2 b2 ) .
T
(
(
x1
T
Berdasarkan persamaan ini, suhu campuran dapat di-trial jika
tekanan
total dan fraksi mol fase cair diketahui. Fraksi mol masing-masing substans
pada
fase gas diberikan melalui
persamaan:

x1gas

p1
p
dan x 2gas 2
pt
pt

Gunakanlah uraian teori singkat ini untuk menentukan fraksi mol


fase
cair/gas serta titik didih campuran pada setiap plate pada distilasi
campuran biner. Diketahui misalnya jumlah plate teoritis 6 buah, fraksi
mol substans yang
memiliki titik didih lebih rendah adalah 10%, a1 , b1 , a2 , dan
berturut-

b2
nilai
turut
adalah -3809.9 ; 17.785 ; -3330 ; 17.403. Tekanan total diasumsikan
tekanan atmosfer.

Pemrograman :
pgas=760;
%Tekanan
total torr a1=-3809.9;
b1=17.78
5;
a2=3330.0;
b2=17.40
3;
x1=0.1;
%fraksi mol awal substan 1
n=6;
%jumlah plate teoritis
T1=a1/(log(pgas)-b1)
% titik didih substans 1 pada
760 torr T2=a2/(log(pgas)-b2)
% titik didih
substans 2 pada 760 torr Td1=(T1+T2)/2;
fprintf('plate x-liquid x-vapor Td, C\n')
if T1 >= T2
%Cek substan 1 memiliki Td yang lebih
rendah help=T2; T2=T1; T1=help;
%jika tidak
data harus ditukar help=a1; a1=a2; a2=help;
help=b1; b1=b2; b2=help;
end

i=0;
while i < n
f=@(T) pgas-x1*exp(a1/T+b1)-(1x1)*exp(a2/T+b2); Td=fzero(f,Td1); i=i+1;
xg=x1*exp(a1/Td+b1)/pgas;
%hukum Raoult utk
substans 1 xl=x1;
fprintf(' %1d
%0.4f %0.4f %2.1f\n',i,xl,xg,Td-273.15)
x1=xg; Td1=Td;
end
Eksekusi program diatas menghasilkan keluaran
berikut: T1 =

T2 =
309.201
3
plate x-liquid x-vapor Td, C
1 0.1000 0.239 63.
9
4
2 0.2399 0.479 57.
3 0.4793 3
0.736 3
48.
4
5
6

0
9
0.7360 0.897
41.
2
8
0.8972 0.965
38.
0.9653 3
0.988 2
36.
9

3.17 Persamaan Keadaan Untuk Real Gas


Persamaan keadaan untuk 1 mol real gas tertentu menurut van
der
Waals adalah :

a
(P RT ) (V
b)
2
V

L . atm
,
R 0.082054
dengan
mol . K

Jika untuk
konstanta

b 0,03183
5;6;

gas

oksigen

diketahui

nilai

a 1,36

L . atm
mol

dan

, maka tentukan volume gas pada T=300 K dan P=1; 2 ;3 ; 4 ;

mol

7 ; 8 ; 9 dan 10 atm
Pemrograman :
clc
R=0.082054;
(mol.K) a=1.360;
%L^2.atm/mol^2 b=0.03183;
%L/mol
T=300;
%K P=[1:10];
%atm for i=P
f=@(V) (i+a./V.^2).*(V-b)R*T;
Volume(i)=fzero(f,20);
end
[P' Volume']

%L.atm/

Eksekusi program diatas menghasilkan keluaran berikut:


ans =
1.0000 24.592
8
2.0000 12.284
3.0000 78.182
0
4.0000 6.130
5.0000 7
4.899
9
6.0000 4.079
4
7.0000 3.493
8.0000 3
3.053
8
9.0000 2.711
10.000 92.438
0
4

DAFTAR PUSTAKA

Constantinides, A dan Mostoufi, N. 2000. Numerical Methods for


Chemical
Engineers with MATLAB Applications. New Jersey : Prentice Hall PTR
Ebert, K. et all. 1989. Computer Applications in Chemistry.
Weinheim: VCH Verlagsgesellschaft
Himmelblau, David M. 1992. Basic Principles and Calculation in
Chemical
Engineering, 5 ed. New Jersey : Prentice-Hall International
th

Kiusalaas, J. 2005. Numerical Methods in Engineering with MATLAB.


New
York : Cambridge University Press
MATLAB Online Help version 7.04
Setiawan, B.W. dan Prasetya, A. 1997. Pemodelan Matematis Dan
Penyelesaian Numeris Dalam Teknik Kimia. Yogyakarta : Penerbit
Andi
Treybal,RE. 1981. Mass-Transfer Operation, 3th. Ed. Singapore :
McGraw-Hill
Book Co.

BIODATA PENULIS

Hb Slamet Yulistiono, lahir di Semarang pada tanggal 15 Maret 1964,


menyelesaikan pendidikan di SD Pendrikan Utara I, SMP Negeri IV,
dan SMA Kolese Loyola di kota Semarang. Sempat mengenyam
pendidikan di jurusan Teknik Mesin Politeknik UNDIP tapi DO di
semester ke- 5 karena mendapatkan beasiswa untuk pindah belajar di
Swiss. Pada tahun 1991 menyelesaikan pendidikan diploma IV di
Ingenieurschule Beider Basel, Muttenz, Swiss. Mengajar di Politeknik
Negeri Ujung Pandang Jurusan Teknik Kimia mulai tahun 1993 hingga
sekarang. Pada tahun 2007 menyelesaikan pendidikan magister teknik
di Jurusan Teknik Kimia Universitas Gadjah Mada, Yogyakarta.
Joice Manga, lahir di Ujung Pandang pada tanggal 15 Desember 1973,
menyelesaikan pendidikan D3 Jurusan Teknik Kimia di Politeknik
Unhas pada tahun 1995 kemudian melanjutkan ke program S1 di
Universitas Kristen Indonesia Paulus di Makassar. Setelah lulus pada
tahun 1999, kemudian mengajar sebagai dosen tetap di Universitas
Kristen Indonesia Paulus. Selanjutnya pada tahun 2001 melanjutkan
pendidikan jenjang S2 dan lulus pada tahun 2003 di Jurusan Teknik
Kimia Universitas Indonesia.

Anda mungkin juga menyukai