Disusun Oleh
Nama
Npm
Chairul Umam
(1415041009)
Fadhlan Pratama M.
(1415041016)
(1415041017)
(1415041043)
Okta Fiyana
(1415041045)
Mata Kuliah
A. Rangkuman m.files
Cara yang paling umum untuk mengoperasikan MATLAB adalah dengan
memasukkan perintah setiap waktu pada command window. M-files menyediakan
sebuah alternatif untuk melakukan operasi yang sangat memperluas kemampuan
memecahkan masalah MATLAB. Sebuah m-file terdiri dari seri-seri pernyataan
yang dapat dijalankan dalam satu waktu. Catatan bahwa istilah M-file datang dari
fakta bahwa sebuah file tersimpan dengan sebuah ekstensi .m. M-file terdiri dari
dua yaitu script files dan function files.
M-files dapat berisi program, scripts, persamaan atau data yang dipanggil
selama eksekusi. Jika m-files adalah definisi fungsi, selanjutnya bagian
yang terpenting
pertama
dari
jenis
m-file
ini
adalah
baris
pertama.
Baris
menemukan m-files yang dipanggil. M-files tipe ini disebut dengan fungsi mfiles atau fungsi file. Kode yang digunakan untuk mendefinisikan file adalah
sebagai berikut:
function
z = file_name(x,y)
file_name adalah nama sederhana m-file (nama file harus sama dalam definisi
dan nama
Salah
satu
cara
untuk
A. Script Files
Sebuah script file adalah selalu seri-seri dari perintah-perintah MATLAB yang
tersimpan dalam sebuah file. Script file berguna untuk menahan sebuah seri-seri
perintah-perintah yang akan dieksekusi pada lebih dari peristiwa. Script dapat
dieksekusi dengan mengetik nama file pada command window atau dengan memilih
pada pilihan menu pada jendela Edit: Debug, Run.
Hampir seluruh operasi Matlab dilaksanakan melalui script, yang dituliskan
dalam bentuk teks. Script Matlab harus dijalankan dalam program Matlab sebagai
lingkungannya.
Script matlab dapat merupakan urutan perintah, tetapi juga dapat berupa fungsifungsi atau subfungsi. Script Matlab dapat menerima variabel dan menghasilkan
besaran.
Problem Statement. Develop a script file to compute the velocity of the freefalling bungee jumper for the case where the initial velocity is zero.
Solution. Open the editor with the menu selection: File, New, M-file. Type in the
following statements to compute the velocity of the free-falling bungee jumper at
a specific time
[recall Eq. (1.9)]:
g = 9.81; m = 68.1; t = 12; cd = 0.25;
v = sqrt(g * m / cd) * tanh(sqrt(g * cd / m) * t)
Demikian, script dieksekusi hanya jika user telah mengetik setiap barisnya di
command window.
Jadi dapat dilihat bahwa meski pun g terdefinisi dalam script, g menahan
nilainya kembali ke command worspace. Seperti yang akan kita lihat di bagian
berikut, adalah merupakan perbedaan penting antara script dan fungsi.
B. Function Files
Function files adalah M-files yang dimulai dengan kata function. Perbedaannya
dengan script files, adalah function files dapat menerima input argumen-argumen
dan output hasil. Karenanya function files beranalogi dengan fungsi pengguna
terdefinisi dalam bahasa pemrograman seperti Fortan, Visual Basic atau C.
Syntax untuk function files dapat direpresentasikan secara umum sebagai
berikut:
function outvar = funcname(arglist)
% helpcomments
statements
outvar = value;
dimana outvar adalah nama variable output, funcname adalah nama fungsi,
arglist adalah daftar argumen fungsi (sebagai contoh, nilai koma batas yang
komputer membacanya sebagai sesuatu yang sama. Sebagai contoh adalah sebagai
berikut
Contoh 2. Function File
Problem Statement. As in Example 3.1, compute the velocity of the freefalling bungee jumper but now use a function file for the task.
Solution. Type the following statements in the file editor:
function v = freefall(t, m, cd)
% freefall: bungee velocity with second-order drag
% v=freefall(t,m,cd) computes the free-fall velocity
% of an object with second-order drag
% input: % t = time (s)
% m = mass (kg)
% cd = second-order drag coefficient (kg/m)
% output:
% v = downward velocity (m/s)
g = 9.81; % acceleration of gravity
v = sqrt(g * m / cd)*tanh(sqrt(g * cd / m) * t);
Save the file as freefall.m. To invoke the function, return to the command window
and
type in
>> freefall(12,68.1,0.25)
If at a later date, you forgot the name of this function, but remembered that it
involved bungee jumping, you could enter
>> lookfor bungee
Catatan bahwa, pada akhir pada contoh sebelumnya, jika kita sudah mengetik
>> g
Jadi meski pun g memiliki nilai 9,81 dalam M-file, g tidak akan memiliki
sebuah nilai pada command workspace. Seperti yang menjadi catatan pada akhir
contoh 1, ini adalah perbedaan penting antara fungsi dan script. Variabel dalam
sebuah fungsi dikatakan merupakan local dan dihapus setelah fungsi dieksekusi.
Berbeda dengan fungsi, sebuah variabel dalam script mempertahankan
keberadaannya setelah dieksekusi.
Fungsi M-file dapat menghasilkan lebih dari satu hasil. Dalam beberapa
kasus, variabel mengandung hasil adalah comma-delimited dan ditutup oleh tanda
kurung. Sebagai contoh, fungsi berikut, stats.m, menghitung rata-rata dan standar
deviasi sebuah vektor:
Meskipun kita juga akan menggunakan script M-file, fungsi M-file dapat menjadi
alat pemrograman utama.
C. Subfungsi
Fungsi dapat memanggil fungsi. Meski pun sseperti fungsi dapat ada sebagai
M-file yang terpisah, fungsi tersebut juga dapat terdapata dalam M-file tunggal.
Contoh 2 (tanpa komentar) dapat dibagi menjadi dua fungsi dan disimpan sebagai
satu M-file.
function v = freefallsubfunc(t, m, cd)
v = vel(t, m, cd);
end
function v = vel(t, m, cd)
g = 9.81;
v = sqrt(g * m / cd)*tanh(sqrt(g * cd / m) * t);
end
>> freefallsubfunc(12,68.1,0.25)
ans =
50.6175
Bagaimana pun, jika kita mencoba untuk menjalankan subfunction vel sebuah
pesan eror akan terjadi:
>> vel(12,68.1,.25)
??? Undefined function or method 'vel' for input arguments
of type 'double'.
Matlab
yang
berwarna
lain
sehingga
demikian, nama fungsi pada header sebaiknya sama dengan nama file agar tidak
membingungkan.
Matlab membedakan variabel di luar fungsi dan variabel di dalam fungsi.
Variabel di dalam fungsi bersifat lokal dan hanya berlaku di dalam fungsi. Hal ini
akan dibahas pada sub-bagian lain.
E. Mengatur Alur Program
Ada beberapa perintah Matlab yang dapat digunakan untuk mengatur alur
program antara lain :
1. If.....else
Perintah ini adalah perintah klasik pemrograman. Identik dengan jika ..
maka, perintah ini dapat digunakan untuk menguji suatu kondisi tertentu.
Sintaks dari perintah ini diperlihatkan pada contoh berikut :
% program : test.m a = input('a = ');
if a == 0
disp('a sama dengan nol');
elseif a < 0
disp('a negatif');
else
disp('a positif');
end
test a = 4a positif
test
a = -4
a negatif
test a = 0
a sama dengan nol
2. For
A =
2
3
4
5
6
7
8
9
10
11
0
0
0
0
0
0
0
0
0
0
4
5
6
7
8
9
10
11
12
13
0
0
0
0
0
0
0
0
0
0
6
7
8
9
10
11
12
13
14
15
0
0
0
0
0
0
0
0
0
0
8
9
10
11
12
13
14
15
16
17
0
0
0
0
0
0
0
0
0
0
10
11
12
13
14
15
16
17
18
19
Urutan loop dapat sebuah vektor dengan bilangan-bilangan tertentu seperti contoh
di atas : untuk i urutan dari 1 sampai 10 dengan kenaikan 1, sedangkan untuk j dari
1 sampai 10 dengan kenaikan 2. Jika x = [1 1.3 5.4 2.3 5.5 7], maka for x=x akan
memberikan harga-harga x seperti setiap elemen dalam vektor x : x(1) = 1, x(3) =
5.4 dst.
3. While
Perintah
ini
akan
mengulang perintah-perintah
yang diapitnya
selama
membuat kondisi penguji menjadi salah, karena kalau tidak loop akan berlangsung
terus. Contoh baik dapat dilihat para perhitungan epsilon mesin Matlab.
% progam : epsilon.m satu = inf;
eps = 1;
while satu > 1
eps = eps/2;
% satu
eps =
2.2204e-016
4. Switch....Case.....Oteherwise
Perintah ini mengarahkan alur program melalui sejumlah pilihan. Perintah ini untuk
menggantikan perintah IFELSEIFELSE yang bertumpuk.
a = input('a = ');
switch a
case {0}, disp('a nol') case {1}, disp('a satu') otherwise
disp('a bukan nol atau satu');
end;
pilihan a = 1
a satu
pilihan a = 0
a nol
pilihan
a = -3
a bukan nol atau satu
pilihan a = 4
a bukan nol atau satu
jj
Penyelesaian
a. Neraca Massa Overall Semua Komponen
0,07 D1 + 0,18 B1 + 0,15 D2 + 0,24 B2 = 10.5
(1.1)
0,04 D1 + 0,24 B1 + 0,10 D2 + 0,65 B2 = 17.5
(1.2)
0,54 D1 + 0,42 B1 + 0,54 D2 + 0,10 B2 = 28.0
(1.3)
0,35 D1 + 0,16 B1 + 0,21 D2 + 0,01 B2 = 14.0
(1.4)
Ada 4 Persamaan Linear dengan 4 Variabel yang tidak diketahui :
D1, B1, D2, dan B2
Persamaan- persamaan diatas dapat dituliskan kembali dalam bentuk matriks
sebagai berikut :
0.07
0.04
[
0.54
0.35
0.18
0.24
0.42
0.16
0.15
0.10
0.54
0.21
0.24 1
10.5
0.65 1
17.5
][ ] = [
]
0.10 2
28.0
0.01 2
14.0
= ,
Jadi aliran molar pada aliran D adalah 43.75 mol/menit
o
,4 = 2,4 2 + 2,4 2
,3 = 0.21(8.75 ) + 0,01(17.5 )
, = .
Jadi aliran molar Toluene pada aliran B adalah 2.0125
mol/menit
Latihan 2
1= +
+ 3 = + 2
+ 2 = + + 2
=
Penyelesaian
a. C6H12O6 bereaksi dengan oksigen dan nitrogen dari bakteri. Sementara hasil dari
reaksi tersebut adalah CH2O0.27N0.25, air dan karbon dioksida dengan RQ = 1,5
Reaksi yang terjadi
6 12 6 + 2 + 3 2 0.27 0.25 + 2 + 2
Kesetaraan Karbon
6= +
(1)
Kesetaraan Hidrogen 12 + 3 = 2 + 2
(2)
Kesetaraan Oksigen
6 + 2 = 0.27 + + 2
(3)
Kesetaraan Nitrogen
= 0.25
(4)
Dan
= = 1.5
(5)
Persamaan diatas adalah sistem persamaan linear dengan 5 variabel yang tidak
diketahui yaitu a, b, c, d, dan e. Persamaan- persamaan diatas dapat disusun
kembali menjadi persamaan linear dengan susunan yang sederhana, susunan
tersebut adalah
0 + 0 + + 0 + = 6
(1.1)
0 3 + 2 + 2 + 0 = 12
(2.1)
2 + 0 + 0.27 + + 2 = 6
(3.1)
0 + 0.25 + 0 + 0 = 0
(4.1)
1,5 + 0 + 0 + 0 = 0
(5.1)
Persamaan- persamaan diatas dapat dituliskan kembali dalam bentuk matriks
sebagai berikut :
0
0
1
0
0 3
2
2
2 0 0.27 1
0 1 0.25 0
[1.5 0
0
0
1 6
0 12
2 =6
0 0
1] [ ] 0
b. C6H5COOH atau C7H6O2 dari bakteri pada keadaan anaerobik dimana tidak ada
gas oksigen. Sementara hasil dari reaksi tersebut adalah CH2O0.27N0.25, air dan
karbon dioksida.
Reaksi yang terjadi
7 6 2 + 3 2 0.27 0.25 + 2
Kesetaraan Karbon
7=
(1)
Kesetaraan Hidrogen 6 + 3 = 2 + 2
(2)
Kesetaraan Oksigen
2 = 0.27 +
(3)
Kesetaraan Nitrogen
3 = 0.25
(4)
Dimana b= 1.75 c=7 d= 0,25
Maka persamaan reaksi menjadi
7 6 2 + 1,753 72 0.27 0.25 + 0.252
Latihan 3
Selesaikan Persamaan Linear Berikut
1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 = 17
31 + 42 + 63 + 4 + 45 + 76 + 57 + 38 + 29 = 30
51 + 62 + 73 + 84 + 5 + 47 + 58 + 69 = 25
51 + 62 + 23 + 4 + 95 + 86 = 15
1 + 32 + 63 + 84 + 95 + 26 + 87 + 98 + 219 = 70
101 + 22 33 + 54 45 + 56 67 + 88 + 99 = 40
21 62 + 73 34 + 5 96 + 47 8 49 = 34
22 + 43 + 54 95 + 26 27 + 8 + 9 = 61
91 + 52 + 33 + 94 + 36 + 47 + 58 + 69 = 85
Penyelesaian
1. Jadikan semua persaman diatas menjadi bentuk matriks
1
x1
17
x2
30
x3
25
x4
15
21
x5 = 70
10
-3
-4
-6
x6
40
-2
-6
-3
-9
-1
-4
x7
34
-9
-2
x8
61
x9
85
Latihan 4
Seorang petani ingin menanam padi, jagung dan ketela di atas tanahnya seluas 12 hektare.
Dengan ketentuan:
Berapa hektare padi, jagung dan ketela yang harus ditanam bila tersedia 97 kg pupuk urea
dan 55 kg pestisida ?
Penyelesaian:
Model persamaan linear
x1 Luas Padi (ha)
x2 Luas Jagung (ha)
x3 Luas Ketela (ha)
Lalu susun persamaan linear seperti dibawah ini
1 + 2 + 3 = 12
101 + 82 + 53 = 97
61 + 42 + 33 = 55
Lalu susun kedalam bentuk matriks
1 1
[10 8
6 4
1 1
12
5] [ 2 ] = [97]
3 3
55
Lalu untuk menggunakan matlab bisa dibuat script seperti dibawah ini
Sehingga Padi yang dibutuhkan adalah 5 Hektar, Jagung 4 Hektar, Ketela 3 Hektar.
Latihan 5
Tentukan nilai dari masing- Masing Variabel dibawah ini
1 + 22 + 33 + 44 + 55 = 45
1 22 + 33 44 + 65 = 103
91 + 23 + 34 = 29
31 + 52 + 3 + 24 + 105 = 77
41 + 52 + 103 + 34 55 = 44
Penyelesaian
1 + 22 + 33 + 44 + 55 = 45
1 22 + 33 44 + 65 = 103
91 + 23 + 34 = 29
31 + 52 + 3 + 24 + 105 = 77
41 + 52 + 103 + 34 55 = 44
5 Persamaan diatas merupakan persamaan linear simultan dengan 5 variabel yang tidak
diketahui dan dapat diselesaikan dengan matlab menggunakan Pivoting Eliminasi Gauss
seperti gambar di bawah ini
Script GaussPivot.m
function x = GaussPivot(A,b)
% GaussPivot(A,b):
% Eliimasi Gauss dengan Pivoting Parsil.
% input:
% A = coefficient matrix
% b = right hand side vector
% output:
% x = solution vector
[m,n] = size(A);
if m ~= n, error('Matrix A must be square');
end
nb = n+1;
Aug = [A b];
% forward elimination
for k = 1:n-1
% partial pivoting
[b, i] = max(abs(Aug(k:n,k)));
ipr = i+k-1;
if ipr ~= k
% pivot the rows
Aug([k, ipr],:) = Aug([ipr,k],:);
end
for i = k+1:n
factor = Aug(i,k)/Aug(k,k);
Aug(i,k:nb) = Aug(i,k:nb)-factor*Aug(k,k:nb);
end
end
% back substitution
x = zeros(n,1);
x(n) = Aug(n,nb)/Aug(n,n);
for i = n-1:-1:1
x(i) = (Aug(i,nb)-Aug(i,i+1:n)*x(i+1:n))/Aug(i,i);
end
Script Gauss.m
Script Gauss.m
Sumber:
Chapra, Steven C. 2012. Applied Numerical Methods with MATLAB for Engineers
and Scientist, 3 Ed. Newyork: McGraw-Hill.
Rustamaji, Heri. 2010. Pengantar Aplikasi MATLAB dalam Teknik Kimia. Bandar
Lampung: Jurusan Teknik Kimia Universitas Lampung.