Modul Matlab
Modul Matlab
PENDAHULUAN
1. Karakter
a. Numerik (Angka) : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
b. Alfabet (Huruf) : A, B, C, D, ……., Z
a, b, c, d, ………., z
c. Khusus : %, ’, +, -, *, /, \, dll.
2. Ekspresi
Merupakan gabungan dari karakter yang dibedakan atas:
1. ekspresi numerik
gabungan dari karakter numerik, misalnya: 12, 4567, 0.25, dll.
2. ekspresi string
gabungan dari karakter alfabet; atau gabungan dari karakter alfabet dan numerik,
misalnya: metanol, reaktor1, A25, dll.
3. Variabel
nama yang diberikan untuk mewakili suatu data, baik berupa masukan data atau
merupakan hasil perhitungan
4. Memasukkan Data
Terdapat dua cara untuk memasukkan data yaitu:
a. inisialisasi data, dimana data diberikan secara langsung pada saat pembuatan program
Bentuk umum:
variabel = ekspresi
b. menggunakan perintah input, dimana data diberikan pada saat program di-running
sehingga bersifat interaktif
Bentuk umum:
variabel = input(‘teks’) numerik dan string
atau
variabel = input(‘teks’, ‘s’) string
pada layar akan tampil apa yang tertulis di antara tanda petik (teks), kemudian
komputer menanti masukan data yang diikuti dengan menekan enter melalui
keyboard
Contoh 1.1 dan 1.2 berikut ini menampilkan program perhitungan sederhana dimana
langkah memasukkan data dilakukan dengan menggunakan kedua cara tersebut.
Kedua contoh tersebut dijalankan pada layar utama Matlab yang disebut command
window.
Contoh 1.1: Perhitungan luas persegi panjang A = p.l dengan cara inisialisasi data.
Contoh 1.2: Perhitungan luas persegi panjang A = p.l dengan cara input data.
>> data = input('Masukkan jenis bangun geometri yang akan dihitung: ')
Masukkan jenis bangun geometri yang akan dihitung: 'persegi panjang'
data =
persegi panjang
Kedua cara di atas dapat diakhiri dengan tanda (;). Penggunaan tanda (;) akan meniadakan
tampilnya data setelah penekanan enter atau pada saat running program.
5. Tampilan Hasil
a. Bila ingin menampilkan nilai dari suatu variabel
disp(A)
dimana A adalah variabel; hasil yang ditampilkan adalah nilai yang
tersimpan dalam variabel A
disp(‘teks’)
hasil yang ditampilkan adalah apa yang tertulis di antara tanda petik (teks)
c. Bila ingin menampilkan gabungan teks dan nilai dari suatu variabel, gunakan tanda
kurung siku dimana nilai numerik harus dikonversi ke bentuk string terlebih dahulu
dengan menggunakan fungsi num2str (number to string)
Contoh 1.3:
x = 2.678;
disp([‘Nilai x adalah = ‘, num2str(x), ‘pada iterasi ini’])
Contoh 1.4:
x = 1007.46;
y = 2.1278;
k = 17;
fprintf(‘\n x = %8.2f y = %8.6f k = %2.0f \n‘, x, y, k)
Latihan 1.1: Tambahkanlah tanda (;) pada akhir semua baris program pada Contoh 1.1.
Kemudian aturlah tampilan hasilnya dengan menggunakan perintah disp atau fprintf.
Contoh 1.5: Input data x, y, dan k pada contoh di atas yang ditulis dalam 3 baris program
dapat digabungkan menjadi 1 baris program dengan salah satu cara berikut:
x = 1007.46, y = 2.1278, k = 17
x = 1007.46; y = 2.1278; k = 17;
7. Komentar
Semua teks yang diawali dengan tanda persen ‘%’ dianggap sebagai pernyataan atau
komentar atau keterangan atau catatan.
Tujuannya adalah untuk memberi keterangan agar lebih mudah memahami maksud dan
kegunaan suatu bagian program.
Sejauh ini, semua pekerjaan dilakukan melalui sebuah layar yang disebut command window
dimana perintah dapat dieksekusi secara langsung satu per satu. Ada pula layar lain yang
dapat menyimpan semua perintah yang dibuat untuk kemudian dieksekusi secara
keseluruhan. Layar tersebut adalah layar M-File.
Contoh 1.6: Hendak ditentukan volume suatu gas berdasarkan persamaan gas ideal
P.V = n.R.T, dimana P = tekanan (atm), V = volume (ltr), n = jumlah mol (gmol), T =
temperatur (K), dan R = konstanta gas (0,08206 ltr.atm/gmol.K).
% Masukan Data
nama_gas = 'metanol'
P=1
T = 373
n = 10
R = 0.08206
%Perhitungan
V = n*R*T/P
Program di atas disimpan dalam sebuah m-file yang diberi nama ideal.m. Untuk
mengeksekusinya dapat dilakukan dengan salah satu cara berikut:
1. Tekanlah tombol F5 pada layar m-file, kemudian pindahlah ke command window
untuk melihat hasil eksekusi (running program)
2. Pindahlah ke command window, kemudian ketikkanlah nama file yang akan
dieksekusi (di-running).
Running program berikut menggunakan cara yang kedua:
>> ideal
nama_gas =
metanol
P=
1
T=
373
n=
10
R=
0.0821
V=
306.0838
Latihan 1.3: Buatlah program perhitungan luas persegi panjang pada layar m-file.
b. Fungsi
Matlab banyak menyediakan fungsi (function) yang dapat digunakan untuk berbagai
perhitungan. Fungsi-fungsi yang telah disediakan oleh Matlab (built-in), seperti
contoh berikut ini:
Fungsi-fungsi trigonometri dan matematika dasar
sqrt(x) akar pangkat dua dari x
abs(x) bilangan mutlak (nilai positif) dari x
sin(x) sinus dari x cos(x), tan(x), sinh(x), cosh(x), tanh(x)
log(x) logaritma natur dari x
log10(x) logaritma basis 10 dari x
exp(x) eksponensial dari x, dll.
Ada pula fungsi yang tidak tersedia pada Matlab function library, sehingga harus
dibuat sendiri. Fungsi seperti ini sangat bermanfaat untuk perhitungan yang berulang-
ulang (repetitif).
Contoh 1.6: Diinginkan untuk menghitung luas persegi panjang secara berulang-
ulang dengan membuat programnya dalam bentuk fungsi.
Tuliskanlah program berikut pada M-file, dan simpanlah dengan nama luas.m.
A = p*l;
Untuk menjalankan fungsi di atas, ketikkanlah pada command window nama fungsi
yang diikuti dengan 2 buah variabel yang dibutuhkan:
>> luas(4,3)
ans =
12
1. Skalar
Di dalam Matlab, skalar adalah sebuah data dengan satu baris dan satu kolom. Variabel-
variabel yang memuat data skalar tersebut dapat mengalami operasi penjumlahan,
pengurangan, perkalian, dan pembagian.
2. Vektor
Di dalam Matlab, vektor adalah sekumpulan data yang membentuk hanya satu baris atau
satu kolom.
Penulisan elemen dilakukan di dalam kurung siku [ ] yang diantarai dengan spasi atau
titik koma. Pengecualian berlaku hanya untuk penulisan data yang berbentuk deret dengan
pola tertentu. Vektor dapat mengalami operasi dengan skalar juga dengan vektor lain
asalkan mempunyai dimensi yang sama.
>> b = 2 * a
b=
2 4 6
>> c = [1:3]
c=
1 2 3
>> d = 2 * c
d=
2 4 6
Terdapat pesan kesalahan bila penulisan vektor yang tidak berbentuk deret ditulis tanpa
kurung siku:
>> e = 1 3 4
??? e = 1 3 4
|
Error: Missing operator, comma, or semicolon.
>> A = 1:10
A=
1 2 3 4 5 6 7 8 9 10
>> B = 0:2:10
B=
0 2 4 6 8 10
>> C = 10:-1:1
C=
10 9 8 7 6 5 4 3 2 1
>> D = 3:3:14
D=
3 6 9 12
y=
1
2
3
3. Matriks
Matriks merupakan himpunan data yang membentuk beberapa baris dan kolom. Matriks
dapat terbentuk dari gabungan 2 vektor atau lebih yang berdimensi sama. Dengan
demikian, aturan operasi penjumlahan dan pengurangan yang berlaku pada vektor juga
berlaku untuk matriks. Perkalian antara 2 buah matriks harus memenuhi aturan bahwa
banyaknya kolom pada matriks pertama harus sama dengan banyaknya baris pada matriks
kedua.
u=
2 2 2
2 2 2
>> a = 2*r
a=
2 4 6
4 6 8
>> b = s/4
b=
0.7500 1.0000 1.2500
1.0000 1.2500 1.5000
>> c = r*s
??? Error using ==> *
Inner matrix dimensions must agree.
>> d = a^2
??? Error using ==> ^
Matrix must be square.
>> d = a.^2
d=
4 16 36
16 36 64
Khusus untuk pemangkatan, operasi hanya dapat berlangsung secara elementer artinya
masing-masing elemen dari matriks tersebut dipangkatkan.
4. Pengalamatan
Merupakan cara penulisan yang digunakan untuk menampilkan atau mendefinisikan ulang
suatu data atau sekumpulan data pada vektor atau matriks, ditulis dalam bentuk umum:
variabel(i,j), dimana i menunjukkan baris dan j menunjukkan kolom
Contoh 2.4: Pengalamatan Vektor atau Matriks
x(2) menunjukkan elemen kedua vektor x
z(3) menunjukkan elemen ketiga vektor y
r(2,1) menunjukkan elemen matriks r pada baris kedua kolom
pertama
t(1,3) menunjukkan elemen matriks t pada baris kesatu kolom ketiga
s(:,2) menunjukkan semua elemen matriks s pada kolom kedua
u(1,:) menunjukkan semua elemen matriks u pada baris kesatu
Bentuk-bentuk khusus yang lain diantaranya: eye, rand, magic. Ada pula manipulasi
matriks untuk mengubah susunan matriks untuk rotasi (rot), merubah letak dari kiri ke
kanan (fliplr), merubah letak dari atas ke bawah (flipud), dsb.
6. Operasi Elementer
Di atas telah disinggung sedikit tentang operasi elementer (elemen per elemen), yaitu
dalam hal operasi pangkat. Operasi elementer yang lain adalah untuk perkalian dan
pembagian. Sedangkan operasi penjumlahan dan pengurangan, memang berlangsung
secara elementer.
Dalam penulisannya, cukup ditambahkan perintah dot (.) sebelum tanda operasi diberikan.
Contoh 2.6:
>> r % pemanggilan ulang matriks r
r=
1 2 3
2 3 4
>> s
s=
3 4 5
4 5 6
>> 2*r-s
ans =
-1 0 1
0 1 2
>> r./s
ans =
0.3333 0.5000 0.6000
0.5000 0.6000 0.6667
>> r.^s
ans =
1 16 243
16 243 4096
Contoh 2.7:
>> x = [1 2 3; 4 5 6; 7 8 9; 0 11 12]
x=
1 2 3
4 5 6
7 8 9
0 11 12
>> y = [0 0 3; 1 2 3; 4 5 0; -1 2 3]
y=
0 0 3
1 2 3
4 5 0
-1 2 3
>> c = min(x)
c=
0 2 3
0 0 3
1 2 3
4 5 0
-1 2 3
1. Loop for
Loop for memungkinkan sekelompok perintah diulang sebanyak suatu jumlah yang tetap.
Bentuk umum:
for loopvariable = loopexpression
perintah-perintah
end
Contoh 3.1: Perhitungan bilangan kuadrat dari himpunan bilangan bulat dari 1 sampai 5
>> for n = 1:5
x(n) = n^2
end
x=
1
x=
1 4
x=
1 4 9
x=
1 4 9 16
x=
1 4 9 16 25
Latihan 3.1:
- Perhatikanlah hasil keluaran yang terbentuk bila ditambahkan tanda (;) pada akhir
baris perintah di antara for-end
- Bandingkan bila penulisan perintah perhitungan x(n) = n^2 ditulis x = n^2.
jlh =
4
jlh =
14
jlh =
32
2. Loop while
Bentuk umum:
while while_expression
perintah-perintah
end
Perintah-perintah di antara baris while dan end dikerjakan berulang kali selama hubungan
e1•e2 dalam ekspresi terpenuhi.
Contoh 3.3:
>> n = 1;
>> x = 0;
>> while x < 20
x(n) = n^2;
n = n+1;
end
>> x
x=
1 4 9 16 25
3. If-Statement
Bentuk umum:
if if_ekspresi
perintah-perintah
end
Contoh 3.4:
Sebuah toko yang menjual buah-buahan menetapkan akan memberikan potongan harga
sebesar 20% bila pelanggannya membeli apel lebih dari 5.
clc
apel = input('Apel yang dibeli = ');
bayar = apel * 1000;
if apel > 5
bayar = (1-20/100)*bayar;
end
disp(['Jumlah yang harus dibayar = Rp ', num2str(bayar)])
Running Program:
if-else-end
Pada kasus dengan dua pilihan, konstruksi if-else-end adalah:
if if_ekspresi
perintah dikerjakan jika benar
else
perintah dikerjakan jika salah
end
Contoh 3.5:
Penentuan kelulusan seorang siswa berdasarkan dua buah ujian yang diikutinya.
Ditetapkan bahwa siswa yang lulus harus memiliki nilai rata-rata minimal 60.
clc
nama = input('Nama Siswa = ', 's');
N1 = input('Nilai Ujian 1 = ');
N2 = input('Nilai Ujian 2 = ');
NR = (N1+N2)/2;
if NR > =60
ket = 'lulus';
else
ket = 'gagal';
end
disp(' ')
disp(['Nama = ', nama])
disp(['Nilai rata-rata = ', num2str(NR)])
disp(['Hasil akhir = ', ket])
Running Program
Nama Siswa = A
Nilai Ujian 1 = 60
Nilai Ujian 2 = 70
Nama =A
Nilai rata-rata = 65
Hasil akhir = lulus
if if_ekspresi1
perintah dikerjakan jika if_ekspresi1 benar
elseif if_ekspresi2
perintah dikerjakan jika if_ekspresi2 benar
elseif if_ekspresi3
perintah dikerjakan jika if_ekspresi3 benar
elseif if_ekspresi4
perintah dikerjakan jika if_ekspresi4 benar
elseif ……
.
.
else
perintah dikerjakan jika tidak ada if_ekspresi yang benar
end
4. Switch-case-otherwise
Bentuk umum:
switch ekspresi
case ekspresi1
perintah-perintah
case ekspresi2
perintah-perintah
case ….
.
.
otherwise
perintah-perintah
end
Contoh 3.6:
clc
disp('1. Metoda Substitusi Berurut')
disp('2. Metoda Newton-Raphson')
disp('3. Metoda Tali Busur')
Meskipun kedua cara memberikan hasil yang serupa, namun cara kedua jauh lebih cepat dan
memerlukan pengetikan yang lebih sedikit.
Contoh 4.2: Harga kapasitas panas campuran gas pada suatu temperatur dihitung dengan cara
menjumlahkan hasil perkalian fraksi (mol/massa) komponen, yi, dengan kapsitas panas
komponen, Cpi, yang merupakan polinom Cpi = Ai + BiT + CiT2 + DiT3.
Penyelesaiannya dapat dibandingkan antara dua cara berikut:
>> Cp1
Cpc =
480.2854
>> Cp2
Cpc =
480.2854
Contoh 4.3: Tinjau kembali Contoh 1.6. Fungsi tersebut dapat digunakan untuk menghitung
beberapa persegi panjang sekaligus dimana data panjang dan lebar ditulis dalam bentuk
matriks. Namun, programnya harus diubah sedikit, yaitu menambahkan dot pada operasi
perkalian:
A = p.*l;
GRAFIK
Perintah plot akan menghasilkan grafik dua dimensi x-y. Dibutuhkan tabel data x dan y untuk
menggunakan perintah ini.
Bentuk umum: plot(x,y)
Contoh 4.1:
>> x = [ 1 2 3];
>> y = [2 4 9];
>> plot(x,y)
maka akan muncul sebuah grafik pada layar baru (khusus untuk grafik) yang bernama Figure
No.1.
Dua buah grafik dapat pula di-plot pada layar yang sama. Matlab akan mengatur warna dari
kedua grafik tersebut.
Contoh 4.2:
>> x = [1 2 3];
>> y = [2 4 9];
>> z=[3 7 12];
>> plot(x,y, x,z)
Untuk membuat grafik dalam skala logaritma atau semilogaritma, perintah plot diganti
dengan loglog atau semilog dengan cara yang sama.
Bila terdapat lebih dari 1 grafik, misalkan 2 grafik, maka pada layar grafik hanya muncul
grafik yang kedua, demikian seterusnya. Untuk mengatasinya, dapat ditambahkan perintah
figure(n) dimana n menunjukkan nomor grafik. Akibatnya akan muncul sebanyak n buah
layar grafik yang baru.
Dapat pula beberapa grafik ditampilkan dalam sebuah layar grafik saja dengan menggunakan
perintah:
subplot(m,n,k) atau subplot(mnk)
Sebagai default, Matlab memilih style garis lurus serta warna biru. Pada perintah plot dapat
ditambahkan tambahan argumen untuk memilih warna dan style untuk grafik yang akan
dibuat.
Contoh: plot(x, y, ‘r+’) akan menghasilkan grafik dengan warna merah (red) dan style garis
yang merupakan gabungan tanda +.
Diantara contoh warna, penandaan, dan style garis yang disediakan Matlab adalah:
Simbol Warna Simbol Penandaan Simbol Style Garis
b Biru . Titik - Garis lurus
g Hijau o Lingkaran : Garis titik-titik
r Merah x Tanda x -. Garis terpotong dan titik
m Magenta * Bintang -- Garis terpotong-potong
y Kuning s Bujur sangkar
k Hitam d Diamond
SPL di atas dapat diubah ke dalam suatu bentuk umum A x = b berdasarkan operasi
perkalian matriks sbb. :
A x = b
Ada beberapa tahap yang harus dilalui agar dapat menyelesaikan masalah SPL secara
matriks:
(i) membuat block diagram yang melibatkan semua alur masuk dan semua alur
keluar
(ii) menurunkan persamaan neraca massa
(iii) mengubah SPL menjadi bentuk matriks A x = b.
Contoh 6.1:
Waste acid dari proses nitrasi dengan komposisi 21% HNO 3, 55% H2SO4, dan 24% air
dipekatkan dengan menambahkan larutan H2SO4 93% dan larutan HNO3 90%. Hasil
pencampuran diharapkan sebanyak 1000 lb/jam dengan komposisi 28% HNO3 dan 62%
H2SO4. Hitunglah laju alir pada semua alur masuk.
F2
Penyelesaian: = 0,93
(2) = 0,07
Waste acid, F1
= 0,21 F4 = 1000 lb/jam
= 0,55 (1) (4) = 0,28
= 0,24 = 0,62
= 0,10
F3
(3) = 0,90
= 0,10
x=
126.7894
591.6837
281.5269
Maka diperoleh laju alir umpan waste acid (F1) adalah 126.7894 lb/jam, laju alir asam sulfat
pekat (F2) 591.6837 lb/jam, dan laju alir asam nitrat pekat (F3) 281.5269 lb/jam.
Maka dengan membuat peneracaan pada masing-masing tahap, diperoleh persamaan berikut
yang membentuk matriks tridiagonal:
(1) -6x1 + 5x2 ` = -0,05
(2) x1 - 6x2 + 5x3 = 0
(3) x2 - 6x3 + 5x4 = 0
(4) x3 - 6x4 + 5x5 = 0
(5) x4 - 6x5 + 5x6 = 0
(6) x5 - 6x6 + 5x7 = 0
(7) x6 - 6x7 + 5x8 = 0
(8) x7 - 6x8 + 5x9 = 0
(9) x8 - 6x9 + 5x10 = 0
(10) x9 - 6x10 = 0
Latihan 6.1: Aturlah cara memasukkan data dengan memanfaatkan fungsi zeros yang diikuti
dengan pendefinisian ulang elemen dengan pengalamatan yang benar. Gunakan juga bentuk
loop-for untuk pendefinisian ulang elemen matriks A pada posisi tridiagonal.
Pada saat awal pembuatan program harus didefinisikan terlebih dahulu toleransi perhitungan
yang diperkenankan serta bentuk kriteria konvergensi yang digunakan.
Salah satu dari 3 (tiga) kriteria konvergensi berikut dapat digunakan untuk mengevaluasi
proses iterasi:
(i) xi – xi-1 ≤ xtol
xi - xi - 1
(ii) ≤ xtol
xi
xi - xi - 1
(iii) ≤ xtol
xi
Ada beberapa metoda numerik yang dapat digunakan untuk menyelesaikan masalah yang
melibatkan persamaan tak linier, diantaranya:
Contoh 7.1: Program penentuan akar persamaan dengan menggunakan metoda substitusi
berurut untuk persamaan f(x) = x4 – ex + 1 = 0 adalah sebagai berikut:
clc
xtol = 5e-5;
itr = 1;
x0 = 1;
x1 = (exp(x0) - 1)^0.25;
Catatan:
- program ini tidak bersifat mutlak, artinya masih dapat diubah sepanjang masih
sesuai dengan dasar perhitungan untuk metoda substitusi berurut
- program ini dapat digunakan untuk metoda penyelesaian persamaan tak linier
yang lain dengan melakukan perubahan sesuai dengan dasar perhitungan metoda
ybs.
Latihan 7.1:
- ubahlah program di atas, agar perhitungan pada iterasi pertama tidak berada di
luar loop-while
- ubahlah program di atas, agar hasil pada setiap iterasi dapat tampil pada layar
monitor.
b. Metoda Newton-Raphson
Bentuk umum dari persamaan Newton-Raphson adalah sebagai berikut:
f(x i )
xi+1 = xi - '
f (x i )
f(x i )(x i x i 1 )
xi+1 = xi -
f(x i ) - f(x i -1 )
Dibutuhkan dua buah tebakan awal untuk metoda ini, yaitu x0 dan x1.
Secara umum penyelesaian masalah persamaan tak linier dengan menggunakan Metoda
Newton-Raphson dan Tali Busur sama dengan Metoda Substitusi Berurut.
Latihan 7.2: Ubahlah program pada Contoh 7.1, agar dapat dipergunakan untuk menentukan
akar persamaan dengan menggunakan metoda Newton-Raphson dan Tali Busur.
function y = akar(x)
y = x^4 – exp(x) + 1;
Simpanlah file tersebut dengan nama akar.m, selanjutnya ketiklah pada command
window:
>> x=fzero('akar', 1)
x=
1.2611
Setelah perintah fzero, buatlah di dalam kurung nama file dalam bentuk string yang
diikuti dengan tebakan awal yang diberikan, dimana di antaranya dipisahkan dengan
tanda koma. Bila akar persamaan lebih dari satu, maka hasil yang ditampilkan hanyalah
akar yang paling mendekati dengan tebakan.
2. Polinomial
Polinomial mempunyai bentuk umum sebagai berikut:
f(x) = a0.xN + a1.xN-1 + a2.xN-2 + …. + aN-2.x2 + aN-1.x1 + aN.x0
a. Menentukan akar persamaan
Untuk menentukan akar persamaan dari sebuah polinom, dapat digunakan fungsi
roots.
Contoh 7.3: Perhatikan persamaan berikut:
f(x) = x2 + 3x + 2
= (x+2)(x+1)
sehingga akar persamaannya adalah: x1 = -2 dan x2 = -1
b. Membentuk polinom
Sebaliknya, Matlab juga mempunyai fungsi untuk membentuk polinom dari akar-
akarnya.
Contoh 7.4: Untuk akar persamaan yang diperoleh pada contoh di atas, dapat
ditentukan persamaannya:
c. Operasi polinom
Polinom dapat mengalami berbagai operasi aritmatika.
Contoh 7.5: Misalkan diketahui dua buah persamaan :
f(x) = 3x3 + 2x2 + 1
g(x) = 4x2 + 2x + 3
Operasi penjumlahan terhadap dua polinom adalah dengan cara menjumlahkan
masing-masing koefisiennya, demikian pula dengan pengurangan.
>> f-g
ans =
3 -2 -2 -2
Operasi perkalian dan pembagian melibatkan perhitungan yang lebih rumit. Fungsi
yang disediakan Matlab berturut-turut adalah conv (convulation) dan deconv. Tidak
seperti penjumlahan atau pengurangan, penulisan vektor koefisien polinom tidaklah
harus mempunyai ukuran yang sama.
Contoh 7.6: Untuk dua polinom yang sama seperti di atas, maka operasi perkalian
dan pembagian dapat ditulis sebagai berikut:
>> [k,s]=deconv(f,g)
k=
0.7500 0.1250
s=
0 0 -2.5000 0.6250
Jika k dikalikan dengan g(x), kemudian hasil perkalian tersebut dijumlahkan dengan
s, maka pastilah akan sama dengan f(x)
>> kali=conv(k,g)
kali =
3.0000 2.0000 2.5000 0.3750
>> kali + s
ans =
3 2 0 1
d. Evaluasi Polinom
Fungsi polyval digunakan untuk mengevaluasi polinom.
Contoh 7.7:
>> f=[3 2 0 1];
>> nilai = polyval(f,3)
nilai =
100
>> nilai = polyval(f,[3 2])
nilai =
100 33
>> x=linspace(-3,3);
>> nilai = polyval(f,x);
>> plot(x,nilai), title('3x^3+2x^2+1'), xlabel('x')
e. Turunan
Fungsi polyder merupakan fungsi yang disediakan Matlab untuk mencari turunan
(derivat) dari suatu polinom.
Contoh 7.8:
der =
9 4 0
PENCOCOKAN KURVA
1. Interpolasi
Pendekatan yang dilakukan pada interpolasi adalah mencocokkan sebuah atau sederetan
kurva secara langsung melalui masing-masing titik data.
a. Interpolasi 1 Variabel
Interpolasi Linier
Merupakan bentuk yang paling sederhana untuk menaksir nilai di antara nilai-nilai yang
diketahui dengan baik. Interpolasi linier menghubungkan 2 titik data [(x1, f(x1)) dan x2,
f(x2))] dengan garis lurus, lalu dengan penghampiran menentukan nilai fungsi f(x) dari
suatu titik (x) yang terletak diantaranya.
% data x
x = [1 4 6];
% data ln x
lnX = [0 1.3863 1.7917];
cari = 2;
ln2 = lnX(1) + (lnX(2) - lnX(1)) / (x(2)-x(1)) * (cari – x(1))
Running Program:
ln2 =
0.4621
Interpolasi Kuadrat
Merupakan polinom berderajat dua dengan bentuk umum:
f(x) = b0 + b1(x – x0) + b2(x – x0) (x – x1)
Untuk menentukan konstanta b0, b1, dan b2 dibutuhkan 3 titik data yaitu [(x0, f(x0)), (x1,
f(x1)), dan x2, f(x2))].
Latihan 8.1: Dengan contoh yang sama, cobalah buat program untuk interpolasi kuadrat.
Built-in function
Penyelesaian dengan menggunakan built-in function adalah dengan perintah interp1.
Bentuk umum: YI = interp1(X,Y,XI)
X dan Y merupakan vektor yang berisikan data-data diskrit dimana Y = f(X). Interp1
melakukan interpolasi untuk mendapatkan nilai YI pada titik data XI.
Interpolasi dapat dilakukan dengan beberapa metoda diantaranya linier, kubik, dan spline.
Bila metoda yang akan digunakan tidak dispesifikasi, maka Matlab akan menggunakan
metoda linier sebagai default.
Perintah yang digunakan menjadi: YI = interp1(X,Y,XI,’method’)
Contoh 8.2:
clc
% data x
x = [1 4 6];
% data ln x
lnX = [0 1.3863 1.7917];
Running Program
hasil =
0.4621
hasil1 =
0.4621
hasil2 =
0.5729
hasil3 =
0.5659
hasil4 =
0
hasil5 =
0.4621 1.5890
b. Interpolasi 2 Variabel
Interpolasi 2 variabel juga bertujuan untuk menaksir nilai di antara nilai-nilai yang
diketahui dengan baik, tetapi dilakukan pada data yang mempunyai 2 variabel.
x1
1 2 3
x2
1 10 20 30
2 40 46 50
3 50 60 100
clc
x1 = [1 2 3];
x2 = [1 2 3];
data = [10 20 30
40 46 50
50 60 100];
Running Program
hasil =
46.6000
Latihan 7.2: Data berikut diambil dari steam table untuk superheated steam
- Buatlah program untuk menentukan entalpi pada 225 bar dan 75oC
- Buatlah program untuk menentukan energi dalam pada 345 bar dan 125oC.
- Buatlah program tersebut masing-masing dengan mengikuti urutan pekerjaan secara
manual (dengan tangan) serta dengan menggunakan built-in function.
2. Regresi
Pendekatan yang dilakukan pada regresi adalah menurunkan suatu kurva tunggal (dengan
persamaan tertentu) yang membentuk suatu kecenderungan umum dari data dimana kurva
tersebut tidak mengikuti pola titik-titik data tersebut tetapi diambil sebagai suatu kelompok
yang mewakili.
Kurva yang terbentuk dapat mengikuti persamaan linier (garis lurus) atau polinom berderajat
tertentu, juga persamaan eksponensial atau logaritma.
clc
x = [1:7];
y = [0.5 2.5 2 4 3.5 6 5.5];
p = polyfit(x,y,1)
r = polyfit(x,y,2)
yi = linspace(1, 7);
s = polyval(p, yi);
subplot(1,2,1);plot(x, y, '-o', yi, s, ':')
Running Program
p=
0.8393 0.0714
r=
-0.0298 1.0774 -0.2857
PERSAMAAN DIFERENSIAL
1. Persamaan Diferensial Biasa Orde 1 Tunggal
Bentuk umum :
dy
= f(x,y) dimana y(x0) = y0
dx
Contoh 9.1:
Dengan menggunakan metoda euler eksplisit, tentukanlah nilai y pada x =1 jika dy/dx =
x2y, dimana y = 1 pada x = 0.
Penyelesaian:
Dari bentuk umum, maka:yi+1 = yi + x xi2 yi
Bila dipilih x = 0,1 maka:
% PDB - Eksplisit
clc
x0 = 0; % Nilai awal
y0 = 1;
xa = 1; % x akhir
dx = 0.1;
for i = 1:10
y = y0 + dx * x0^2 * y0
x0 = x0 + dx;
y0 = y;
end
Running Program:
y=
1
y=
1.0010
y=
1.0050
y=
1.0140
y=
1.0303
y=
1.0560
y=
1.0940
y=
1.1477
y=
1.2211
y=
1.3200
Contoh 9.2:
Reaksi berikut dilangsungkan pada suatu reaktor semi-batch A(l) P(l) dimana r = kCA2.
Pada saat awal reaktor diisi dengan cairan inert dengan volume V 0. Pada saat t = 0
senyawa A dengan konsentrasi CA0 diumpankan ke reaktor dengan laju Q0. Dari neraca
mol komponen A pada keadaan unsteady diperoleh:
dnA/dt = Q0. CA0 - k.nA2/VR
dimana CA = nA/VR
Karena cairan ditambahkan ke reaktor, maka VR akan bertambah terhadap waktu. Neraca
massa di reaktor:
b. Metoda Runge-Kutta
Bentuk umum:
yi+1 = yi + x/6 (k1 + 2k2 + 2k3 + k4)
dimana: k1 = f(xi, yi)
k2 = f(xi + ½x, yi + ½kx)
k3 = f(xi + ½x, yi + ½k2x)
k4 = f(xi + x, yi + kx)
function fx = diferensial(x,y)
fx = x^2*y;
Running Program:
Pada command window:
[x,y] = ode45('diferensial', [0:0.1:1], 1)
x= y=
0 1.0000
0.1000 1.0003
0.2000 1.0027
0.3000 1.0090
0.4000 1.0216
0.5000 1.0425
0.6000 1.0747
0.7000 1.1211
0.8000 1.1861
0.9000 1.2751
1.0000 1.3956
Hasil yang diperoleh dengan fungsi built-in ode45 ini sama dengan hasil perhitungan
secara analitik.
dimana y = (y1, y2, …, yn) dan untuk x yang tertentu, maka yi diketahui.
Metoda yang digunakan juga sama seperti penyelesaian PDB orde 1 yang tunggal.
dimana yj = (y1,j, y2,j, …, yn,j). Sebagai contoh, yi,j merupakan nilai yi pada nilai x yang ke-j
(yaitu, jika kondisi awal ditentukan pada x = 0, maka nilai x yang ke-j adalah j.x.
b. Metoda Runge-Kutta
Bentuk umum:
yi,j+1 = yi,j + x/6 (k1,i,j + 2k2,i,j + 2k3,i,j + k4,i,j)
dimana: k1,i,j = f(x, y1,j, y2,j, …, yn,j,)
k2,i,j = f(x + ½x, y1,j + ½k,i,jx, …., yn,j + ½k,n,jx)
k3,i,j = f(x + ½x, y1,j + ½k2,i,j x …., yn,j + ½k,n,jx)
k4,i,j = f(x + x, y1,j + k,i,jx …., yn,j + k,n,jx)
Y Yi , j 1 Yi , j
x Yi , j x
Y
2
Yi 1, j 2Yi , j Yi 1, j
x 2 Yi , j
x 2
Kemudian dengan mensubstitusi dan menyelesaikan Yi,j+1 menghasilkan:
.t
Yi,j+1 = Yi,j + ( Yi+1,j – 2. Yi,j + Yi-1,j)
x 2
Contoh 9.5: Sebuah benda dengan panjang dan lebar tak terhingga memiliki ketebalan 5
cm. Mula-mula benda bersuhu 30 0C. Tepat mulai saat t = 0, kedua suhu sisi benda
dirubah dan dipertahankan tetap. Pada x = 0, suhu benda dibuat 70 0C dan pada x = 5
dibuat bersuhu 40 0C. Distribusi suhu sebagai fungsi posisi dan waktu mengikuti
2T 1 T
persamaan : . Jika = 2 cm2/menit, tentukanlah suhu pada titik berjarak 4
x 2
t
cm pada saat 2 menit.
INTEGRAL
1. Metoda Trapesium
Integrasi fungsi dari x=a hingga x=b dan penyusunan ulang menghasilkan:
b f (a ) f (b)
a f ( x)dx 2 (b a )
Bila pembagian daerah dilakukan dengan jarak (x) yang sama, maka bentuk umumnya
menjadi:
x
xn n 1
x0
2
f f ( x)dx
( x 0) 2
i i
f ( xi) f ( xn)
Contoh 10.1: Dengan menggunakan data pada tabel berikut, tentukanlah data fugasitas N2
pada 25oC dan 800 atm. Untuk komponen murni, fugasitas f dihitung dengan persamaan:
f P z 1
ln
P
0 P
dP
f 800 z 1
ln
800
0 P
dP
8
z 1 z i 1 1 Pi Pi 1
i
i 1 Pi Pi 1 2
Khusus untuk kasus di atas, dilakukan manipulasi data P awal untuk menghindari terjadinya
operasi 0/0.
clc
z = [1 0.998 0.996 1.004 1.057 1.146 1.254 1.495 1.723];
P = [1 10 50 100 200 300 400 600 800];
integral=0;
for i = 2:9
jumlah = ((z(i)-1)/P(i) + (z(i-1)-1)/P(i-1)) * (P(i)-P(i-1))/2;
integral = integral + jumlah;
end
integral
fugasitas = P(9) * exp(integral)
Running Program:
integral =
0.4223
fugasitas =
1.2204e+003
clc
z = [1 1.057 1.254 1.495 1.723];
P = [1 200 400 600 800];
y = (z-1)./P;
tek = 0:200:800;
area = trapz(tek,y)
fugasitas = P(5)*exp(area)
Running Program:
area =
0.4394
fugasitas =
1.2414e+003
0.4
clc
x= 0:0.1:0.4;
y=x.*exp(-x);
area = trapz(x,y)
x1= 0:0.05:0.4;
y1=x1.*exp(-x1);
area1 = trapz(x1,y1)
Running Program:
area =
0.0611
area1 =
0.0614
2. Metoda Simpson
Luas daerah di bawah f(x) dari x = xa hingga x = xc dengan menggunakan metoda simpson:
xc f ( xa ) 4 f (b) f ( xc)
xa
f ( x) dx ( xc xa )
6
atau
x
f ( xa) 4 f (b) f ( xc)
xc
xa
f ( x)dx
3
dimana x = jarak antara titik yang dievaluasi yaitu (xc-xa)/2.
Bila batas xa~xc dibagi menjadi tiga daerah dimana masing-masing daerah terdiri dari tiga
titik, maka :
x6 x2 x4 x6
x0
f ( x )dx x0
f ( x) dx
x2
f ( x )dx
x4
f ( x )dx
x
f ( x0) 4 f (1) f ( x2) x f ( x 2) 4 f (3) f ( x 4) x f ( x 4) 4 f (5) f ( x6)
3 3 3
x
f ( x0 ) 4 f ( x1 ) 2 f ( x2 ) 4 f ( x3 0) 2 f ( x4 ) 4 f ( x5 ) f ( x6 )
3
x n 1 n 2
xn
x0
f ( x )dx
3
f ( x 0 ) 4
i 1, 3,...
f ( x i ) 2 f ( xi ) f ( x n )
i 2 , 4 ,...
Contoh 10.3:
F = inline('x.*exp(-x)');
area2 = quad(F,0,0.4)
area3 = quadl(F,0,0.4)
Running Program:
area2 =
0.0616
area3 =
0.0616
Terlebih dahulu harus dituliskan sebuah fungsi untuk persamaan di atas yang disimpan
dengan nama dint.m:
function w = dint(x,y)
w = 4*sin(x) – 3*x*cos(y);
Atau bila hendak menggunakan fungsi quadl dapat ditulis sebagai berikut:
>> hasil = dblquad(‘dint’, 0, pi, 0, pi,’quadl’)
hasil =
25.1361
Etter, Delores M., David C. Kuncicky, dan Doug Hull, Penerjemah Carley Tanya, Pengantar
Matlab 6, PT. Indeks Kelompok Gramedia, Jakarta, 2003
Hanselman, Duane dan Bruce Littlefield, Matlab: Bahasa Komputasi Teknis, Penerbit Andi,
Yogyakarta, 2000
Lindfield, G. dan John Penny, Numerical Methods Using Matlab, Ellis Horwood, New York,
1995
Modul MATLAB
MODUL PRAKTIKUM
PROGRAM KOMPUTER
Program Diploma IV
Teknologi Kimia Industri
Modul MATLAB
Integral