net/publication/319056733
CITATIONS READS
0 1,804
2 authors, including:
Sayahdin Alfat
Universitas Haluoleo
13 PUBLICATIONS 4 CITATIONS
SEE PROFILE
Some of the authors of this publication are also working on these related projects:
Visualization of Crack Growth in Heterogeneous Materials Using Adaptive Finite Element Method View project
All content following this page was uploaded by Sayahdin Alfat on 11 August 2017.
1 Mei 2017
Kata Pengantar
Puji syukur penulis panjatkan kehadirat Allah SWT, karena berkat izin-Nyalah buku penun-
tun praktikum Algoritma dan Pemograman selesai tepat pada waktunya. Pada kesempatan
ini juga, penulis mengucapkan banyak terima kasih kepada pihak-pihak yang telah membantu
dalam penyusunan buku penuntun praktikum ini.
Buku penuntun praktikum Algoritma dan Pemograman terdiri atas 10 bagian, namun
secara aplikatif hanya terdiri atas 9 bagian untuk dipraktekan, yakni; bab 1 hingga bab 9.
Dimana pada setiap babnya terdiri atas dua hingga tiga sub-bab. Penyusunan buku prak-
tikum ini didasarkan atas buku "MATLAB Programming For Engineers, Edisi 5 " karangan
Stephen J. Chapman. Diharapkan setelah melakukan praktikum Algoritma dan Pemogram-
an, seorang mahasiswa dapat menjadikannya bekal untuk mata kuliah selanjutnya yakni
Komputasi Geofisika dan Pemodelan Geofisika.
Program yang digunakan di dalam buku ini seluruhnya ditulis dengan menggunakan
MATLAB software. Sementara itu, proses editing buku ini menggunakan aplikasi LATEX.
Akhirnya dengan segala kekurangan penulis, kami menyatakan bahwa seluruh kesalahan yang
terdapat pada buku ini adalah milik kami.
Penulis
1
Daftar Isi
Kata Pengantar 1
Daftar Isi 2
Pengantar Algoritma 6
1 Pengantar Matlab 9
1.1 Pengertian MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2 Elemen Dasar MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.3 Tugas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2 Dasar-Dasar MATLAB 12
2.1 Pengantar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2 Latihan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.3 Tugas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3 Grafik 2-Dimensi 17
3.1 Pengantar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.2 Tugas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2
7 Bilangan Komplex dan Grafik 3-Dimensi 44
7.1 Bilangan Komplex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
7.2 Grafik 3 Dimensi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
7.3 Tugas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
8 Type Data 49
8.1 Pengantar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
8.1.1 Data Numerik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
8.1.2 Data Karakter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
8.1.3 Data Logika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
8.1.4 Data Simbolik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
8.2 Tugas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
9 Animasi 56
9.1 Pengantar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
9.2 Tugas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3
Daftar Gambar
1 Simbol-simbol algoritma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2 Algoritma menghitung luas permukaan menggunakan flow chart . . . . . . . 8
3.1 Grafik fungsi (a) sin x dan (b) cos x pada x = 0 hingga 10 . . . . . . . . . . 18
3.2 Grafik fungsi cos x pada x = 0 hingga 10 dengan tipe garis putus-putus . . . 19
3.3 Metode plotting grafik dengan menggunakan operator (a) hold on dan (b)
subplot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.4 Grafik fungsi f (x) = 2−0.2x+10 menggunakan operator perintah (a) plot(x,y),
(b) semilogy(x,y), (c) semilox(x,y), dan (d) loglog(x,y) . . . . . . . . 20
5.1 Grafik perubahan ketinggian dan kecepatan roket dalam fungsi waktu (a) per-
ubahan ketinggian, (b) perubahan kecepatan, (c) perubahan ketinggian, titik
bulat menyatakan posisi saat parasut terbuka, dan (d) perubahan kecepatan,
titik bulat menyatakan kecepataan saat parasut terbuka . . . . . . . . . . . . 33
7.1 Tampilan grafik melalui operator perintah (a) plot3(x,y,t) dan (b) surf(x,y,z) 47
4
Daftar Tabel
5
Pengantar Algoritma
Langkah awal yang sering dilakukan seseorang dalam membuat program yakni membuat al-
goritma. Di dalam membuat suatu algoritma, seseorang harus memahami konsep fisis atau
memiliki instinct fisis yang mantap ditambah dengan penguasan konsep matematika. Tahap-
an pembuatan algoritma merupakan tahapan penting karena kesalahan yang ada pada proses
ini mengakibatkan kesalahan fatal dalam membuat program. Biasanya seorang programer
yang ingin menguji apakah hasil yang dikerjakan orang lain (programer lain) sudah berhasil
yakni dengan cara hanya melihat algoritma yang ia gunakan, ketimbang melihat source code
yang sudah dibuat.
Pengertian Algoritma
Algoritma berasal dari nama seorang ilmuan muslim berkebangsaan Arab yakni Abu Ja’far
Mohammad ibn Musa Al Khowarizmi (790 - 840). Secara sederhana algoritma dipandang
sebagai suatu cara, proses dan tahap untuk menyelesaikan suatu masalah. Algoritma berbeda
dengan program karena algoritma bersifat bebas dan dapat diaplikasikan untuk semua bahasa
pemograman. Bahasa algoritma merupakan bahasa sederhana yang memungkinkan semua
orang bisa mehamaminya. Contoh; hitunglah luas suatu permukaan yang memiliki panjang
p dan lebar l. Maka algoritma dari persoalan ini adalah:
6
Contoh lain; Buatlah algoritma untuk menyelesaikan masalah:
10
X
n
n=1
Adapun pseudo-code:
Sedangkan, flow chart merupakan suatu gambaran dari suatu proses. Setiap langkah dari
algoritma ditampilkan dalam bentuk simbol. Adapun simbol yang sering digunakan adalah:
Sehingga dengan menggunakan simbol-simbol tersebut (gambar 1), algoritma untuk meng-
hitung luas permukaan dengan panjang p dan lebar l adalah:
7
Mulai
luas ← p × l
Tampilkan hasil
Selesai
8
Bab 1
Pengantar Matlab
1. Cocok untuk semua sistem komputer. Secara umum MATLAB dapat dipakai/di-
aplikasikan untuk semua sistem komputer, seperti Windows 2000/XP/Vista/10, Linux
(untuk semua varians), dan Macintosh.
2. Sistem plotting mudah. Berbeda dengan software komputasi lainnya yang mem-
butuhkan software tambahan dalam memplotting, MATLAB sudah dilengkapi dengan
suatu perangkat yang secara otomatis dapat menampilkan grafik hasil perhitungan.
3. Graphical User Interface (GUI). Salah satu fasilitas yang sangat bagus dan dise-
diakan oleh MATLAB adalah Graphical User Interface(GUI) atau GUIDE MATLAB.
Fasilitas ini memungkinkan seorang programer (user ) untuk membuat suatu interface
tentang perhitungan yang akan dibuat atau dengan kata lain membuat suatu tambahan
interface untuk perhitungan.
4. Sistem compiler , Salah satu keunggulan lain dari MATLAB berupa sistem compiler,
sistem ini memungkinkan waktu eksekusi menjadi lebih cepat. Walaupun demikian,
MATLAB bukanlah software yang murni (pure) compiler.
Dari segi biaya MATLAB bukanlah merupakan software yang gratis (open source). Sehingga
user memerlukan biaya yang cukup besar untuk membeli software tersebut ini. Hal ini yang
menjadi salah satu kekurangan dari MATLAB.
9
1.2 Elemen Dasar MATLAB
Dalam melakukan perhitungan, MATLAB menyediakan Command windows dan MATLAB
editor. Command windows merupakan tampilan kerja utama dan dapat secara langsung
menulis dan mengeksekusi program. Contoh:
>> A=sin(2*pi)
A =
-2.4493e-016
atau
>> r = 2.; %Jari-jari
>> Luas = 2*pi*r
Luas =
12.5664
Sedangkan untuk MATLAB editor dapat digunakan untuk menulis, mengeksekusi dan
juga dapat menyimpan code-nya. Dalam menyimpan script yang telah dituliskan maka type
file berupa "nama_file.m". Contoh:
Hasilnya:
10
1.3 Tugas
1. Jelaskan fungis-fungsi berikut ini:
(a) zeros
(b) ones
(c) rand
(d) randn
(e) eye
(f) nargin dan nargout
(g) realmin dan realmin
(h) conj(x)
(i) fix(x)
(j) rem(x,y)
(k) sign(x)
(l) floor(x)
2. Jika x0 = 10 m, v0 = 15 m s−1 , dan a = −9.81 m s−1 . Dengan menggunakan persamaan
(3.1), tentukanlah nilai x pada t = 5 s.
1
x = x0 + v0 t + at2 (3.1)
2
3. Jika u = 1 dan v = 3, hitunglah:
4u
(a) 3v
2v −2
(b) (u+v)2
v3
(c) v 3 −u3
4
(d) 3
πv 2
4. Jika x − 2 dan y = −1, hitunglah:
√4
(a) 2x3
p
(b) 4 2y 3 (catatan: gunakan bilangan kompleks untuk menyelesaikan masalah ini)
1. Konsultasikanlah tugas kelompok ini dengan asisten praktikum mata kuliah ini.
2. Mekanisme pengumpulan tugas kelompok ini terlebih dahulu diparaf oleh asisten
pembimbing dan dikirim ke email: algoritma.pemograman.geofisik@gmail.
com
11
Bab 2
Dasar-Dasar MATLAB
2.1 Pengantar
Secara umum, langkah awal yang harus dilakukan dalam setiap membuat script atau code
yakni melakukan tahapan deklarasi atau inisiasi variable. Ada beberapa cara yang biasanya
dilakukan dalam menginisiasi variabel:
Seorang yang baru mengenal bahasa pemograman, biasanya menggunakan cara 1 dan 2
untuk menginisiasi atau deklarasi variabel. Namun untuk perhitungan-perhitungan yang
menggunakan jumlah baris yang banyak, seorang programer biasanya memisahkan program
utama dan file variabel. Hal ini sangat penting untuk menghindari kesalahan/kekeliruan
dalam proses script-isasi program. Bab ini akan menjelaskan bagaimana menginisiasi variabel
melalui cara 1 dan 2.
Penginputan variabel haruslah konsisten dengan variabel yang digunakan dalam program
utama. Hal ini penting karena dapat menyebabkan kesalah syntax. Kesalahan fatal yang juga
sering dilakukan dalam inisasi variabel adalah selalu mencampur adukan antara variabel
yang sifatnya real, integer, function, expression, dan character. Biasanya kesalah
seperti ini sulit sekali terdeteksi karena biasanya saat eksekusi, memiliki atau ada tampilan
hasil. Namun, jika bekerja pada program seperti MATLAB dan SCILAB, menentukan jenis
variabel tidak terlalu penting karena pada saat deklarasi variabel secara otomatis MATLAB
mendeteksi apakah jenis variabel yang sudah diinput.
Contoh:
>> a = 40i;
>> a2 = a/2;
>> x = 1;
>> y = 2;
>> A = [1 2 3 4];
12
Suatu variable tidah harus dinyatakan hanya dalam satu huruf, namun dapat juga diung-
kapkan dalam sebuah kata. Misalnya, jika ingin menyatakan hukum Newton II, maka script
dapat dituliskan sebagai berikut:
>> massa = 2;
>> percepatan = 3;
>> gaya = massa*percepatan
gaya =
6
Atau bisa menggunakan underscore untuk variabel yang memiliki dua patah kata. Mi-
salnya:
>> besar_arus = 2;
>> beda_potensial = 3;
>> nilai_hambatan = beda_potensial / besar_arus
nilai_hambatan =
1.5000
Salah satu bagian yang penting pada MATLAB adalah menyatakan nilai variabel da-
lam bentuk matrix. Mengungkapkan suatu variabel dalam bentuk matrix sangat sederhana,
misalnya:
>> A = [1 2 3; 4 5 6; 7 8 9];
A =
1 2 3
4 5 6
7 8 9
matrix A adalah matrix 3 x 3. Dalam membuat matrix, untuk membuat baris gunakan
tombol (space) dan kolom gunakan (;).
2.2 Latihan
1. Diberikan matrix:
1.1 −3.2 3.4 0.6
A = 0.6 1.1 −0.6 3.1
1.3 0.6 5.5 0.0
Tentukan:
(a) A(2,:)
(b) A(:,end)
13
(c) A(1:2,2:end)
(d) A(6)
(e) A(2:end)
(f) A(1:2,2:4)
(g) A([1 3],2)
(h) A([2 2],[3 3])
2. Diketahui bahwa:
1 2 3
B = 4 5 6
7 8 9
Nyatakan matrix B dalam bentuk:
7 8 9
B= 4 5 6
1 2 3
4 5 6
B= 4 5 6
4 5 6
4 5 6
B=
4 5 6
(a) integer
(b) floating
(c) exponensial
(d) pecahan 4 angka dibelakang koma
dan
1
B= 1
0
14
2.3 Tugas
1. Jelaskan apa yang dimaksud dengan fungsi-fungsi berikut ini:
short bank
long hex
short e rat
short g compact
long e loose
long g +
15
1. Konsultasikanlah tugas kelompok ini dengan asisten praktikum mata kuliah ini.
2. Mekanisme pengumpulan tugas kelompok ini terlebih dahulu diparaf oleh asisten
pembimbing dan dikirim dalam bentuk pdf ke email: algoritma.pemograman.
geofisik@gmail.com
16
Bab 3
Grafik 2-Dimensi
3.1 Pengantar
Seperti yang dijelaskan pada BAB 1, MATLAB memiliki keunggulan dari segi plotting grafik
dibanding dengan program-program yang lain. MATLAB sudah menyediakan seluruh fungsi-
fungsi yang membantu seorang user untuk memvisualisasikan/plotting data. Berikut ini
beberapa fungsi yang disediakan di MATLAB dan kerap kali digunakan, seperti:
Contoh:
1. Plotlah grafik sin(x) dimana nilai x memiliki rentang 0 hingga 10
>> x=0:0.1:10;
>> y=sin(x);
>> plot(x,y)
>> x=0:0.1:10;
>> y=cos(x);
>> plot(x,y)
17
(a) (b)
Gambar 3.1: Grafik fungsi (a) sin x dan (b) cos x pada x = 0 hingga 10
Jika dilihat dari hasil tampilan grafik (Gambar 3.1), kedua code di atas merupakan code
standar untuk membuat grafik. Ada banyak alternative atau opsi untuk membuat tampilan
grafik lebih menarik. Misalnya:
1 %=====codeIIIa.m ======
2 %ploting fungsi y(x) = cos(x), dimana x memiliki ...
3 %nilai 0 −−−> 10 dengan interval 0.1
4
5 x=0:0.1:10;
6 y=cos(x);
7 plot(x,y,'r−.');
Jika diperhatikan pada code II ada penambahan fungsi ’r-’. Hal ini mengindikasikan
grafik yang dihasilkan berupa garis merah putus-putus. Ada banyak pilihan warna yang
dapat digunakan dalam MATLAB yakni ’c’, ’m’, ’y’, ’g’, ’b’, ’w’, dan ’k’ yang mewakili
cyan, magenta, kuning, hijau, biru, putih, dan hitam. Disamping itu jenis garis grafik dapat
divariasikan seperti; ’–’ menyatakan garis putus. ’-’ garis sambung, dan ’.’ garis titik.
Terkadang untuk kasus-kasus yang sifatnya pembandingan, diperlukan code perintah un-
tuk menggabungkan beberapa grafik dalam satu gambar grafik. Hal ini bisa menggunakan
perintah hold on dan atau subplot. Di dalam menggunakan perintah hold on haruslah
diakhiri dengan perintah hold off, ini sangat penting untuk mengakhiri perintah hold on,
seperti yang terlihat pada codeIIIb.m.
Sedangkan, untuk perintah subplot harus diikuti oleh perintah penempatan posisi grafik.
Contoh subplot(x,y,z), dimana x menyatakan jumlah baris, y menyatakan kolom, dan z
berupa posisi grafik. Hal ini dapat pada program codeIIIc.m.
18
Gambar 3.2: Grafik fungsi cos x pada x = 0 hingga 10 dengan tipe garis putus-putus
1 %=====codeIIIb.m ======
2 %ploting grafik menggunakan fungsi hold on
3
4 clear all;
5 x=0:0.1:10;
6 y1=sin(x);
7 plot(x,y1,'b−.');
8 hold on;
9 y2=cos(x);
10 plot(x,y2,'r−.');
11 hold off;
atau
1 %=====codeIIIc.m ======
2 %ploting grafik menggunakan fungsi subplot
3
4 clear all;
5 x=0:0.1:10;
6 y1=sin(x);
7 y2=cos(x);
8 subplot(2,1,1), plot(x,y1);
9 subplot(2,1,2), plot(x,y2);
19
(a) (b)
Gambar 3.3: Metode plotting grafik dengan menggunakan operator (a) hold on dan (b)
subplot
Gambar 3.4: Grafik fungsi f (x) = 2−0.2x+10 menggunakan operator perintah (a) plot(x,y),
(b) semilogy(x,y), (c) semilox(x,y), dan (d) loglog(x,y)
1 %=====codeIIId.m ======
2 %ploting grafik menggunakan operator perintah
3 %plot(x,y), semilogy(x,y), semilogx(x,y), dan loglog(x,y)
4
5 clear all;
20
6 clc;
7
8 x=linspace(0.1,60,1000);
9 y=2.^(−0.2*x+10);
10
11 subplot(2,2,1), plot(x,y);
12 subplot(2,2,2), semilogy(x,y);
13 subplot(2,2,3), semilogx(x,y);
14 subplot(2,2,4), loglog(x,y);
3.2 Tugas
1. Jelaskan kegunaan fungsi-fungsi berikut ini dalam membuat grafik:
’NW’ ◦ barh(x,y)
’NE’ v bar(x,y)
’SW’ d polar(theta,r)
’SE’ + pie(x,explode)
2. Nyatakan fungsi-fungsi ini dalam 1 grafik dimana nilai x antara 0 dan 10 dengan interval
0.1:
Untuk fungsi (2a), buatlah grafik fungsi dimana Gunakan warna biru dan garis sambung
untuk type garis kurva. Sedangkan untuk fungsi (2b), buatlah grafik fungsi dimana Gu-
nakan warna merah dan garis putus-putus untuk type garis kurva. Lengkapi tampilan
kurva ini dengan legenda, judul, label sumbu x dan y, serta grid pada kurva.
3. Buatlah grafik fungsi y(x) = exp−0.5x sin(2x) dalam bentuk bar plot. Nilai x antara 0
dan 10 dengan interval 0.1. Lengkapi tampilan kurva ini dengan legenda, judul, label
sumbu x dan y, serta grid pada kurva.
21
Nyatakan semua plotting tersebut dalam satu grafik (catatan: gunakan subplot)
1. Konsultasikanlah tugas kelompok ini dengan asisten praktikum mata kuliah ini.
2. Mekanisme pengumpulan tugas kelompok ini terlebih dahulu diparaf oleh asisten
pembimbing dan dikirim dalam bentuk pdf ke email: algoritma.pemograman.
geofisik@gmail.com
22
Bab 4
4.1 Pengertian
Pada bab-bab sebelumnya operator relasional dan logika tidak digunakan. Hal ini karena
operator relasional dan logika hanya digunakan untuk penyatakan kondisi true atau false.
Kedua jenis operator ini sangat penting dalam kasus-kasus tertentu. Operator relasional
merupakan operator yang dapat membandingkan nilai atau hasil melalui statement true
(1) dan false (0). Berikut ini adalah operator relasional pada MATLAB (Tabel 4.1).
Operator Penjelasan
== Sama dengan
-= Tidak sama dengan
> Lebih dari
>= Lebih dari atau sama dengan
< Kurang dari
<= Kurang dari atau sama dengan
Operator Penjelasan
& AND
| OR
˜ NOT
xor EXCLUSIVE OR
any bernilai true jika sembarang elemen bernilai tak nol
all bernilai true jika semua elemen bernilai tak nol
23
>> % Jika diberikan nilai (a), (b), (c), dan (d).
>> a = 20;
>> b = -2;
>> c = 0;
>> d = 1;
>>%Tentukanlah:
>> a > b % (a) lebih besar dari (b)
ans =
1
ans =
0
ans =
1
1 %=====codeIVa.m ======
2 %sumber: S.J. Chapman
3 %Buku: MATLAB Programming For Engineers
4 %ploting grafik menggunakan fungsi subplot
5
6 clear all;
7 disp('−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−');
8 disp('Program menentukan akar−akar persamaan kuadrat');
9 disp('Bentuk persamaan kuadratik A*x^2 + B*x + C = 0');
10 disp('−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−')
11
12 a = input ('Masukan koefisien A:');
13 b = input ('Masukan koefisien B:');
14 c = input ('Masukan koefisien C:');
15
24
20 x1 = (−b + sqrt(discriminant))/(2*a);
21 x2 = (−b − sqrt(discriminant))/(2*a);
22 disp('Nilai akar−akar kuadrat');
23 fprintf ('x1 = %f\n', x1);
24 fprintf ('x2 = %f\n', x2);
25
26 elseif discriminant == 0
27 x1 = (−b /(2*a);
28 x2 = (−b − sqrt(discriminant))/(2*a);
29 disp('Nilai akar−akar kuadrat');
30 fprintf ('x1 = x2 = %f\n', x1);
31
32 else
33 real = (−b /(2*a);
34 imajiner = sqrt(abs(discriminant))/(2*a);
35 disp('Nilai akar−akar kuadrat');
36 fprintf ('x1 = %f + i %f\n', real, imajiner);
37 fprintf ('x1 = %f − i %f\n', real, imajiner);
38
39 end
4.2 Latihan
1. Analisis Temperatur:
Diketahui temperatur maksimum (satuan ◦ F) di kota Washington, DC. selama bulan
April 2002: 58 73 73 53 50 48 56 73 73 66 69 63 74 82 84 91 93 89 91 80 59 69 56 64
63 66 64 74 63 69 (sumber: U.S. National Oceanic and Atmospheric Administration).
Gunakan operator logika dan relasional untuk menentukan:
Penyelesaian
1 %=====codeIVb.m ======
2 %Operator logika dan relasional
3
4 clear all;
5 clc;
6
7 T = [58 73 73 53 50 48 56 73 73 66 69 63 74 82 84 91 ...
8 93 89 91 80 59 69 56 64 63 66 64 74 63 69];
9
10 %Menghitung jumlah hari yang memiliki temeratur di bawah 75
11 Tbawah75=T>=75;
12 JumlahHari75 = sum(Tbawah75);
13
25
14 %Menghitung jumlah hari yang memiliki temeratur di antara 65 − 80
15 Tantara65dan80=(T>=65)&(T<=80);
16 JumlahHari65dan80 = sum(Tantara65dan80);
17
18 %Mencari hari yang memiliki temeratur di antara 50 − 60
19 Tantara50dan60=find((T>=50)&(T<=60));
(a) Untuk 0 ≤ h ≤ 19 m, volume air sama dengan volume silinder dengan ketinggian
h:
V = 12.52 πh (2.1)
1 %=====codeIVc.m ======
2 %Menentukan volume air
3
4 clear all;
5 clc;
6 h=input('Masukan ketinggian air = '); % satuan meter
7 if h > 33
8 disp('SALAH. Ketinggian air melebihi ketinggian wadah')
9 elseif h < 0
10 disp('SALAH. Ketinggian air tidak boleh bernilai negatif')
11 elseif h <= 19
12 Volume = pi*(12.5^2)*h;
26
13 fprintf('Volume air adalah %7.3f meter^3 \n', Volume)
14 else
15 rh = 12.5+10.5+(h−19)/14;
16 Volume = pi*(12.5^2)*19+pi*(h−19)*((12.5^2)+12.5*rh+(rh^2))/3;
17 fprintf('Volume air adalah %7.3f meter^3 \n', V)
18 end
4.3 Tugas
1. Konsultasikanlah tugas kelompok ini dengan asisten praktikum mata kuliah ini.
2. Mekanisme pengumpulan tugas kelompok ini terlebih dahulu diparaf oleh asisten
pembimbing dan dikirim dalam bentuk pdf ke email:
(a) if,
(b) elseif, dan
(c) else.
4. Jika nilai final Sultan, Ali, Alfatih, dan Keumala adalah 98, 78, 88, dan 80. Tentukanlah
nilai mereka jika dikonversi dalam angka, jika standar kelulusan untuk mata kuliah
27
Algortima dan Pemograman:
95 < nilai A
86 < nilai ≤ 95 B
76 < nilai ≤ 86 C
66 < nilai ≤ 76 D
0 < nilai ≤ 66 E
1. Konsultasikanlah tugas kelompok ini dengan asisten praktikum mata kuliah ini.
2. Mekanisme pengumpulan tugas kelompok ini terlebih dahulu diparaf oleh asisten
pembimbing dan dikirim dalam bentuk pdf ke email: algoritma.pemograman.
geofisik@gmail.com
28
Bab 5
1 %=====codeVa.m ======
2 %Menentukan faktorisasi bilangan 5
3
4 clear all;
5 clc;
6 a =1;
7 b = 1;
8 x = input('masukan bilangan bulat sembarang':);
9 while(b<=x);
10 a=a*b;
11 b=b+1;
12 end
13 disp('faktorial bilangan x adalah adalah: ' );
14 disp(a);
Hasil:
29
masukan bilangan bulat sembarang: 10
faktorial bilangan x adalah adalah:
56
Sama halnya dengan while, for digunakan untuk melakukan proses perulangan selama
kondisi terpenuhi. Perbedaannya, pada while jumlah perulangannya bergantung kondisi
ekspresi. Sedangkan for, jumlah perulangan diketahui. For memiliki syntax sebagai berikut:
1 %=====codeVb.m ======
2 %Menentukan penjumlahan angka
3
4 clear all;
5 clc;
6 a =0;
7 x = input('masukan nilai awal: ');
8 y = input('masukan nilai akhir: ');
9 for i=x:y
10 a=a+i;
11 end
12 disp('Jumlah bilangan dari x sampai y adalah: ' );
13 disp(a);
Secara umum, perulangan sering digunakan pada persoalan-persoalan yang melibatkan deret
ataupun matrix. Di sisi yang lain perulangan selalu digunakan juga untuk memperoleh kete-
litian hasil yang baik, misalnya untuk menentukan kekonvergenan suatu hasil perhitungan.
Pada perulangan, terdapat operator break dan continue. Kedua operator ini berguna
untuk mengontrol hasil yang ingin diperoleh pada saat perhitungan.
5.2 Latihan
1. Diketahui persamaan:
n
X (−1)k k
A= (2.1)
k=1
2k
1 %=====codeVc.m ======
2 %Menentukan nilai A
30
3
4 clear all;
5 clc;
6 n = input('masukan nilai n: ');
7 A = 0;
8 for k=0:n
9 A=A+(((−1)^k)*k/(2^k));
10 end
11 disp('Hasil: ' );
12 disp(A);
2. Buatlah matrix N x N, dimana nilai N merupakan bilangan bulat positif, dengan aturan
baris pertama memenuhi a11 = 1 dan a1n = N , baris kedua memiliki aturan a21 = N +1
dan a2n = 2N , dan baris terakhir memenuhi an1 = (N − 1)N + 1 dan ann = N 2 .
Solusi:
1 %=====codeVd.m ======
2 %Membuat matrix N x N
3 %Aturan:
4 %baris pertama memenuhi a_11 = 1 dan a_1}=N,
5 %baris kedua memiliki aturan a_21 = N+1 dan a_2n=2N,
6 %baris terakhir memenuhi a_n1 = (N−1)N + 1 dan a_nn=N^2
7
8 clear all;
9 clc;
10 N = input('masukan bilangan bulat positif: ');
11 Matr = zeros(N,N)
12 for r=1:N
13 Matr(r,1:N)=((r−1)*N+1):r*N;
14 end
15 disp(Matr);
Penyelesaian
Dalam menyelesaikan persoalan ini, maka yang harus dilakukan adalah membagi waktu
terbang roket menjadi tiga bagian:
31
(a) Arah roket ke atas (selama t= 0.15 s). Menurut Hukum II Newton, gaya-gaya
yang berkerja pada saat ini dapat dinyatakan dalam:
ma = ΣF
ma = Fatas − W
ma = Fatas − mg (2.2)
v(t) = v0 + at
v(t) = at (2.4)
dan,
1
h(t) = h0 + v0 t + at2
2
1 2
h(t) = at (2.5)
2
waktu, posisi, kecepatan dan percepatan pada kondisi ini adalah t1 , h1 , v1 dan a1
(b) Arah roket ke bawah - parasut terbuka. Pada kondisi ini percepatan roket konstan
yakni g. Persamaan kecepatan dan posisi dinyatakan dalam:
Gunakan seluruh persamaan-persamaan (2.3), (2.4), (2.5), (2.6), (2.7) dan (2.8) pada
MATLAB:
1 %=====codeVe.m ======
2 %Mengitung kecepatan dan posisi roket
3 clear all; clc;
4 %Deklarasi seluruh variabel:
5 m = 0.05; % massa roket (kg)
6 g = 9.81; % perc. gravitasi (m/s^2)
7 tTerbang = 0.15; % waktu terbang rocket hingga kec = 0 (s)
32
8 Gaya = 16; % Gaya angkat roket (N)
9 KecJatuh = −20; % Kecepatan jatuh roket (m/s)
10 Dt = 0.01; % Step time (s)
11 %Deklarasi keadaan pada saat awal
12 n=1;
13 t(n) = 0; % waktu awal
14 v(n) = 0; % kec awal
15 h(n) = 0; % posisi awal
16 %Keadaan I
17 a1 = (Gaya−m*g)/m; % Percepatan I
18 while t(n) < tTerbang & n < 50000
19 n = n+1;
20 t(n)=t(n−1)+Dt;
21 v(n)=a1*t(n);
22 h(n)=0.5*a1*t(n)^2;
23 end
24 v1=v(n); h1=h(n); t1=t(n);
25 while v(n) >= KecJatuh & n < 50000 %Keadaan II
26 n = n+1;
27 t(n)=t(n−1)+Dt;
28 v(n)=v1−g*(t(n)−t1);
29 h(n)=h1+v1*(t(n)−t1)−0.5*g*(t(n)−t1)^2;
30 end
31 v2=v(n); h2=h(n); t2=t(n);
32 while h(n) > 0 & n < 50000 %Keadaan III
33 n=n+1;
34 t(n)=t(n−1)+Dt;
35 v(n)=KecJatuh;
36 h(n)=h2+KecJatuh*(t(n)−t2);
37 end
38 subplot(2,2,1), plot(t,h);
39 subplot(2,2,2), plot(t,v);
40 subplot(2,2,3), plot(t,h,t2,h2,'o');
41 subplot(2,2,4), plot(t,v,t2,v2,'o');
Hasil:
Gambar 5.1: Grafik perubahan ketinggian dan kecepatan roket dalam fungsi waktu (a) per-
ubahan ketinggian, (b) perubahan kecepatan, (c) perubahan ketinggian, titik
bulat menyatakan posisi saat parasut terbuka, dan (d) perubahan kecepatan,
titik bulat menyatakan kecepataan saat parasut terbuka
33
5.3 Tugas
1. Jepaskan apa yang dimaksud dengan:
(a) break
(b) continue
(c) factorial
(d) for loop
(e) tic
(f) textread
(g) toc
(h) while loop
2. Diketahui deret Fibonacci memenuhi:
f (1) = 1
f (2) = 2
f (n) = f (n − 1) + f (n − 2) (3.9)
Dengan menggunakan persamaan (3.9), hitunglah untuk n=10. Gunakan operator
perintah while loop.
3. Buatlah algoritma untuk soal nomor (2) menggunakan flow chart!.
4. Diketahui:
m
√ X (−1/3)n
A = 12 (3.10)
n=0
2n + 1
1. Konsultasikanlah tugas kelompok ini dengan asisten praktikum mata kuliah ini.
2. Mekanisme pengumpulan tugas kelompok ini terlebih dahulu diparaf oleh asisten
pembimbing dan dikirim dalam bentuk pdf ke email: algoritma.pemograman.
geofisik@gmail.com
34
Bab 6
6.1 Pengantar
Terkadang data-data hasil pengukuran atau eksperimen yang dilakukan tidak menunjukan
atau menghasilkan bentuk linear (Tabel 6.1 dan Gambar 6.1). Untuk menentukan persamaan
garis yang dibentuk oleh data tersebut, maka perlu adanya tahapan interpolasi untuk men-
cocokan kurva (curve-fitting) (lihat Gambar 6.2). Tujuan dari proses ini adalah melakukan
proses data-smoothing, yang berupa proses pendekatan terhadap kecenderungan data-data
dalam bentuk persamaan matematis. Pencocokan dan interpolasi kurva merupakan proses
yang sangat penting karena bertujuan untuk melihat pola kecenderungan data-data. Peng-
gunaan metode dalam melakukan pencocokan kurva berakibat pada persamaan matematis
yang dihasilkan sesuai dengan fenomena fisis. Ada banyak metode yang dilakukan pada sa-
at proses pencocokan dan interpolasi kurva, seperti; metode least square, interpolasi linear,
curvilinear interpolation, interpolasi lagrange, metode spline, maupun dengan menggunakan
fungssi bessel. Pada bab ini akan dijelaskan salah satu metode pencocokan kurva dengan
menggunakan metode polinomial.
Tabel 6.1: Data hubungan x dan y Gambar 6.1: Grafik hubungan x dan y
x y
0 5
2 6
4 7
6 6
9 9
11 8
12 8
15 10
17 12
19 12
35
(a) (b) (c)
Gambar 6.2: Tiga metode pencocokan kurva (a) least-square regression, (b) linear interpola-
tion, dan (c) curvilinear interpolation [6].
Metode pencocokan kurva menggunakan polinomial dilakukan dalam dua cara. Pertama,
kurva yang dibentuk melewati atau menyentuh seluruh titik data yang ada. Kedua, kurva
yang dibentuk tidak harus melewati atau menyentuh seluruh titik data, namun kurva yang
dibentuk melalui pendekatan dari seluruh data. Di dalam melakukan prosedur fitting kurva
dengan cara polinomial, ada beberapa fungsi yang sering diperkenalkan:
Fungsi Keterangan
y = bxm Fungsi perpangkatan
y = b exp (mx) atau y = b10mx Fungsi eksponensial
y = m ln(x) + b atau y = m log(x) + b Fungsi logaritmik
1
y= Fungsi reciprocal
mx + b
Fungsi Keterangan
Perpangkatan y= bxm p = polyfit(log(x),log(y),1)
Eksponensial y= b exp (mx) p = polyfit(x, log(y),1) atau
y= b10mx p = polyfit(x,log10(y),1)
Logaritmik y= m ln(x) + b p = polyfit(log(x),y,1) atau
y= m log(x) + b p = polyfit(log10(x),y,1)
1
Reciprocal y= p = polyfit(x,1./y,1) atau
mx + b
36
t 0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
w = f(t) 6.00 4.83 3.7 3.15 2.41 1.83 1.49 1.21 0.96 0.73 0.64
>> t = 0:0.5:5;
>> w = [6 4.83 3.7 3.15 2.41 1.83 1.49 1.21 0.96 0.73 0.64]
>> plot(t,w)
(a) (b)
Gambar 6.3: (a) Tampilan grafik hasil plotting grafik dan (b) Perbandingan tampilan grafik
hasil plotting grafik dan pencocokan kurva
Jika diamati maka grafik ini (Gambar 6.3a) memenuhi atau mirip dengan fungsi eks-
ponensial. Sehingga dengan menggunakan operator perintah eksponensial, maka fungsi w(t)
dapat diketahui. Fungsi w(t) memenuhi fungsi w(t) = b exp(mt), dimana nilai b dan m dapat
ditentukan dengan menggunakan code sebagai berikut:
1 %=====codeVIa.m ======
2 %Menentukan fungsi dari suatu data
3 clear all;
4 clc;
5 t=0:0.5:5;
6 w=[6 4.83 3.7 3.15 2.41 1.83 1.49 1.21 0.96 0.73 0.64];
7 p=polyfit(t,log(w),1);
8 m=p(1);
9 b=exp(p(2));
10 tm=0:0.1:5;
11 wm=b*exp(m*tm);
12 plot(t,w,'−o',tm,wm,'−−');
13 xlabel('w');
14 ylabel('t');
15 legend('Data','Fitting kurva');
37
Dari hasil tersebut diperoleh pencocokan kurva (Gambar 6.3b) dan nilai m = -0.4580 dan b
= 5.9889, sehingga fungsi w(t) memenuhi:
= a + b ln(σ) (1.2)
σ (MPa)
6.3 0.11
7.76 0.16
11.20 0.35
14.65 0.48
18.1 0.61
21.55 0.71
25.0 0.85
Karena data stress-strain memenuhi persamaan (1.2), maka gunakakan operator perintah
logaritmik p = polyfit(log(x),y,1) Untuk lebih jelasnya perhatikan code berikut ini:
1 %=====codeVIb.m ======
2 %Menentukan variabel (a) dan (b) yang memenuhi persamaan:
3 %epsilon = a + b*ln(sigma)
4 clear all;
5 clc;
6 sigma=[6.3 7.76 11.20 14.65 18.1 21.55 25.0];
7 epsilon=[0.11 0.16 0.35 0.48 0.61 0.71 0.85];
8 p=polyfit(log(sigma),epsilon,1);
9 b=p(1);
10 a=p(2);
11 sigmaf=6.3:0.1:25.0;
12 epsilonf=a+b*log(sigmaf);
13 plot(sigma,epsilon,'−o',sigmaf,epsilonf,'−−');
14 xlabel('\sigma');
15 ylabel('\epsilon');
16 legend('Data','Fitting kurva');
Dari code tersebut diperoleh bahwa nilai (a) dan nilai (b) adalah -0.9718 dan 0.5519, sehingga
dari nilai-nilai tersebut diperoleh persamaan:
38
Gambar 6.4: Grafik hasil fitting kurva
Adapun grafik yang diperoleh setelah pencocokan kurva dapat dilihat pada gambar 6.4.
Contoh 3: Pertumbuhan penduduk dunia
Data pertumbuhan penduduk dunia pada tahun 1750 hingga 2009:
Tentukan:
1. Tentukan fungsi eksponensial yang paling baik. Gunakan fungsi tersebut untuk meng-
hitung jumlah populasi pada 1980.
2. Cocokanlah kurva data dengan suatu fungsi polinomial order tiga. Gunakan fungsi
tersebut untuk menentukan jumlah populasi pada 1980.
3. Gunakan interpolasi linear dan spline untuk melakukan pencocokan kurva. Hitunglah
populasi manusia pada 1975 dengan menggunakan kedua fungsi tersebut.
Untuk menyelesaikan poin (1), maka yang pertama dilakukan adalah melakukan plotting
kurva. Dari hasil plotting kurva diperoleh gambar 6.5a, sehingga dengan melihat kurva
tersebut diperoleh kesimpulan bahwa fungsi yang paling baik adalah dengan menggunakan
fungsi reciprocal dan fungsinya memenuhi:
1
Jumlah Penduduk = (1.3)
m ∗ T ahun + b
Adapun variabel (m) dan (b) diperoleh dengan menggunakan code:
39
1 %=====codeVIc.m ======
2 %Menentukan variabel (m) dan (b) yang memenuhi persamaan:
3 %Jumlah Penduduk = 1/m*Tahun + b
4 clear all; clc;
5 Tahun=[1750 1800 1850 1900 1950 1990 2000 2009];
6 J_Pddk=[791 980 1260 1650 2520 5270 6060 6800];
7 p=polyfit(Tahun,1./J_Pddk,1);
8 m=(p(1)); b=p(2);
9 Tahunf=1750:2009;
10 J_Pddkf=1./(m*Tahunf+b);
11 plot(Tahun,J_Pddk,'o',Tahunf,J_Pddkf,'−−');
12 xlabel('Tahun'); ylabel('Jumlah Penduduk');
13 legend('Data Asli','Data Fitting Kurva');
Hasil:
>> m
m =
-4.3164e-006
>> b
b =
0.0088
(a) (b)
Gambar 6.5: (a) Tampilan grafik hasil plotting grafik dan (b) Perbandingan tampilan grafik
hasil plotting grafik dan pencocokan kurva
40
dengan menggunakan persamaan 1.4, dapat diperoleh jumlah penduduk pada tahun 1980
yakni sebesar 3.937 Juta Jiwa.
Point (2), dari hasil plotting awal diketahui bahwa kasus ini memenuhi fungsi reciprocal.
Namun jika dilihat dari hasil pada point (1), menunjukan hasil yang belum akurat. Sehingga,
diperlukan suatu fungsi polinomial yang berorde n. Pada kasus ini akan menggunakan fungsi
polinomial orde tiga.
y(x) = a3 x3 + a2 x2 + a1 x + a0
J(t) = a3 t3 + a2 t2 + a1 t + a0 (1.5)
1 %=====codeVId.m ======
2 %Menentukan variabel (m) dan (b) yang memenuhi persamaan:
3 %Jumlah Penduduk = a_3t^3+a_2t^2+a_1t+a_0
4 clear all;
5 clc;
6 Tahun=[1750 1800 1850 1900 1950 1990 2000 2009];
7 J_Pddk=[791 980 1260 1650 2520 5270 6060 6800];
8 p=polyfit(Tahun,J_Pddk,3);
9 Tahunf=1750:2009;
10 J_Pddkf=p(1).*(Tahunf.^3)+p(2).*(Tahunf.^2)+p(3).*(Tahunf)+p(4);
11 plot(Tahun,J_Pddk,'o',Tahunf,J_Pddkf,'−−');
12 xlabel('Tahun'); ylabel('Jumlah Penduduk');
13 legend('Data Asli','Data Fitting Kurva');
dengan menggunakan persamaan 1.6 diperoleh jumlah penduduk pada tahun 1980 yakni
sebesar: 4.456 Juta Jiwa.
Gambar 6.6: (a) Pencocokan kurva menggunakan polinomial order tiga, (b) Interpolasi meng-
gunakan metode linear, dan (c) Interpolasi menggunakan metode spline
41
Point (3), Menghitung jumlah penduduk dengan menggunakan fungsi interpolasi linear dan
spline sangatlah mudah. Gunakan operator perintah linear dan spline, seperti pada code
berikut ini: persamaan 1.5 pada code berikut ini:
1 %=====codeVIe.m ======
2 %Menentukan jumlah penduduk pada tahun 1975
3 clear all;
4 clc;
5 Tahun=[1750 1800 1850 1900 1950 1990 2000 2009];
6 Jpddk=[791 980 1260 1650 2520 5270 6060 6800];
7 Tahunfi=[1750:1:2009];
8 JppdkI=interp1(Tahun,Jpddk,Tahunfi,'linear');
9 JppdkII=interp1(Tahun,Jpddk,Tahunfi,'spline');
10 subplot(2,2,1), plot(Tahun,Jpddk,'o',Tahunfi,JpddkI,'−−'),
11 xlabel('Tahun'), ylabel('Jumlah Penduduk'),
12 legend('Data Asli','Data Fitting Kurva');
13 subplot(2,2,1), plot(Tahun,Jpddk,'o',Tahunfi,JpddkII,'−−'),
14 xlabel('Tahun'), ylabel('Jumlah Penduduk'),
15 legend('Data Asli','Data Fitting Kurva');
Adapun untuk mengetahui jumlah penduduk pada tahun 1975, maka pada command windo-
ws gunakan perintah JppdkI(226) untuk hasil menggunakan metode interpolasi linear dan
JppdkII(226) untuk mentode interpolasi spline. Nilai 226 pada operator perintah tersebut
menunjukan bahwa 1975 berada pada kolom ke 226.
6.2 Tugas
1. Jelaskan fungsi-fungsi berikut ini:
(a) polyfit
(b) polyval
(c) linear
(d) spline
2. Data hasil pengukuran temperatur air (TB ) pada variasi ketinggian (h) diberikan pada
tabel (6.6). Nyatakan hasil pencocokan kurva dalam bentuk TB = mh + b dan gunakan
persamaan ini untuk menentukan temperature pada ketinggian 16 ft.
3. Diberikan data:
42
Tabel 6.7: Data x dan y
Pertanyaan:
(a) Buatlah penocokan kurva dengan polinomial orde pertama. Plotlah data dan hasil
pencocokan kurva dalam satu grafik
(b) Buatlah penocokan kurva dengan polinomial orde kedua. Plotlah data dan hasil
pencocokan kurva dalam satu grafik
(c) Buatlah penocokan kurva dengan polinomial orde keempat. Plotlah data dan hasil
pencocokan kurva dalam satu grafik
4. Dari hasil pengukuran efisiensi bahan bakar mobil (FE ) pada variasi kecepatan (v)
diperoleh data sebagai berikut:
v (mi/h) 5 15 25 35 45 55 65 75
FE (mpg) 11 22 28 29.5 30 30 27 23
Tentukanlah
(a) Fitting kurva data dengan menggunakan fungsi polinomial orde dua. Gunak-
an hasil fungsi tersebut untuk menghitung efisiensi bahan bakar pada kecepatan
60 mi/h
(b) Fitting kurva data dengan menggunakan fungsi polinomial orde tiga. Gunak-
an hasil fungsi tersebut untuk menghitung efisiensi bahan bakar pada kecepatan
60 mi/h
(c) Fitting kurva data dengan menggunakan fungsi linear. Gunakan hasil fungsi ter-
sebut untuk menghitung efisiensi bahan bakar pada kecepatan 60 mi/h
1. Konsultasikanlah tugas kelompok ini dengan asisten praktikum mata kuliah ini.
2. Mekanisme pengumpulan tugas kelompok ini terlebih dahulu diparaf oleh asisten
pembimbing dan dikirim dalam bentuk pdf ke email: algoritma.pemograman.
geofisik@gmail.com
43
Bab 7
c = a + bi (1.1)
dimana c merupakan bilangan komplex, a dan b merupakan bilangan real dan i merupakan
√
−1. Bilangan a biasanya disebut sebagai bagian real dan b merupakan bagian imaginer.
Jika bilangan komplex memiliki dua komponen dan dapat diplot dalam sebuah bidang 2D,
maka sumbu horizontal dapat merepresentasikan sumbu real dan sumbu vertikal mewakili
sumbu imaginer. Dari statement tersebut dapat didefenisikan bahwa bilangan komplex ada-
lah suatu titik (a,b), yang mana sudut yang terbentuk dari titik tersebut disebut sebagai
sudut θ. Bilangan komplex juga dapat diungkapkan dalam bentuk vektor r.
c = a + bi = r]θ (1.2)
dimana:
a = r cos(θ) (1.3)
b = r sin(θ) (1.4)
√
r = a2 + b 2 (1.5)
b
θ = tan−1 (1.6)
a
Pada MATLAB, bilangan komplex sering diungkapkan dalam bentuk:
>> c1 = 4 + i*3
c1 =
4.0000 + 3.0000i
>> end
Dari program ini (MATLAB), secara sederhana dapat diperoleh nilai a, b, r, dan θ, yakni
dengan cara sebagai berikut:
44
1 %=====codeVIIa.m ======
2 %Menentukan nilai (a), (b), (r), dan theta
3 %Persamaan c = 4 + 3i
4
5 clear all;
6 clc;
7
8 c1 = 4 + 3*i; %persamaan bil. komplex
9
10 real_part = real(c1); %bagian real
11 disp('bagian real :');
12 disp(real_part);
13
14 imag_part = imag(c1); %bagian imaginer
15 disp('bagian imajiner :');
16 disp(imag_part);
17
18 nilai_r = abs(c1); %nilai r
19 disp('nilai r:');
20 disp(nilai_r);
21
22 sudut_theta = angle(c1); %sudut theta
23 disp('sudut theta :');
24 disp(sudut_theta);
Hasil:
bagian real :
4
bagian imajiner :
3
nilai r:
5
sudut theta :
0.6435
1. Data yang terdiri atas dua variabel (x,y), dimana dua variabel ini merupakan fungsi
dari suatu variabel bebas (t).
45
2. Data yang sifatnya sebagai variabel bebas (t).
Contoh:
Jika t bernilai 0 hingga 10. Nyatakanlah kedua persamaan di bawah ini dalam suatu grafik:
x(t) = exp−0.2t cos 2t (2.7)
y(t) = exp−0.2t sin 2t (2.8)
Penyelesaian:
1 %=====codeVIIb.m ======
2 %Plot fungsi:
3 %x(t) = exp(−0.2t)cos(2t)
4 %y(t) = exp(−0.2t)sin(2t)
5
6 clear all;
7 clc;
8
9 t = 0:0.1:10; %variabel bebas
10
11 x = exp(−0.2*t).*cos(2*t); %variabel terikat
12 y = exp(−0.2*t).*sin(2*t); %variabel terikat
13 plot3(x,y,t)
14 title('Plot Tiga Dimensi');
15 xlabel('x');
16 ylabel('y');
17 zlabel('waktu');
18 grid on;
Ada banyak operator perintah yang digunakan pada plot tiga dimensi yakni; surface, mesh,
dan contour.
Contoh: Lukislah grafik:
z(x, y) = sin(x) + sin (y) 0 ≤ x ≤ 10 dan 0 ≤ y ≤ 10
Penyelesaian:
1 %=====codeVIIc.m ======
2 %Plot 3D dengan fungsi:
3 %z(x,y) = sin(x) + sin(y)
4 %syarat batas: 0 <= x <= 10 dan 0 <= y <= 10
5
6 clear all;
7 clc;
8 [x,y] = meshgrid(0:0.1:10); %variabel bebas
9 z = sin(x) + sin(y); %variabel terikat
10 surf(x,y,z)
11 title('Plot Tiga Dimensi');
12 xlabel('x');
13 ylabel('y');
14 zlabel('z');
15 grid on;
46
(a) (b)
Gambar 7.1: Tampilan grafik melalui operator perintah (a) plot3(x,y,t) dan (b)
surf(x,y,z)
7.3 Tugas
1. Jelaskan perbedaan:
(a) Surf
(b) Surface
(c) Mesh
(d) Contour
2. Diketahui fungsi:
2 −y 2
(a) f (x, y) = (x2 + 3y 2 ) exp−x
sin x sin y
(b) f (x, y) =
xy
Plotlah fungsi tersebut dengan perintah surface, mesh, dan contour
(a) Hitung dan plot nilai I pada frekuensi 100 kHz hingga 10 MHz. Gunakan skala
linear dan log-linear.
(b) Hitung dan plot perubahan sudut fase pada frekuensi 100 kHz hingga 10 MHz.
Gunakan skala linear dan log-linear.
47
(c) Plot kedua nilai I dan sudut phase, menggunakan perintah subplot. Gunakan
scala log-linear.
1. Konsultasikanlah tugas kelompok ini dengan asisten praktikum mata kuliah ini.
2. Mekanisme pengumpulan tugas kelompok ini terlebih dahulu diparaf oleh asisten
pembimbing dan dikirim dalam bentuk pdf ke email: algoritma.pemograman.
geofisik@gmail.com
48
Bab 8
Type Data
8.1 Pengantar
Data-data yang tersedia pada MATLAB biasanya direpresentasikan atau disimpan dalam
bentuk; skalar, vektor dan matriks. Contoh;
Dari contoh di atas, terlihat bahwa seluruh type data tersebut dalam bentuk matriks dua
dimensi. Misalnya 1 × 1 untuk data A, 1 × 10 untuk B, dan 2 × 3 untuk C. Dimana kelas
data yang digunakan untuk data A, B, dan C adalah double.
49
Adapun jenis-jenis data yang dapat disimpan pada MATLAB sebagai berikut; (a) data
numerik, (b) data karakter, (c) data logika, dan (d) data simbolik (Gambar 8.1).
>> realmax(’double’)
ans =
1.7977e+308
>> realmin(’double’)
ans =
2.2251e-308
>> realmax(’single’)
ans =
3.4028e+038
>> realmin(’single’)
ans =
1.1755e-038
Bilangan integer atau sering disebut sebagai bilangan bulat, jenis bilangan ini selalu
digunakan untuk bilangan-bilagan yang tidak berbentuk pecahan. Ada beberapa jenis bi-
langan integer yakni; (a) signed integers, yang terdiri atas: int8, int16, int32, dan int64.
(b) unsigned integers, terdiri atas: uint8, uint16, uint32 dan uint64. Signed integer dan
unsigned integers memiliki perbedaan pada rentang nilai. Contoh, signed integer untuk int8:
>> intmax(’int8’)
ans =
127
>> intmin(’int8’)
ans =
-128
Jika dilihat bahwa int8 atau integer 8-bit memiliki rentang -128 hingga 127, yang jika
total keseluruh nilainya adalah 256 atau nilai ini setara dengan 28 . Sedangkan pada uint8
50
memiliki rentang 0 hingga 255 dan total keseluruhan nilainya adalah 256 atau 28 , seperti
pada code di bawah ini:
>> intmax(’uint8’)
ans =
255
>> intmin(’uint8’)
ans =
0
Bilangan complex , type standard untuk bilangan complex adalah double atau bilangan
real. Contohnya:
>> Z = 4+6i
Z =
4.0000 + 6.0000i
Jika bilangan complex tersebut diubah dalam bentuk bilangan bulat (integer ), maka:
>> C = int8(Z)
C =
4 + 6i
51
Dari code di atas, karakter Algoritma dan Pemograman dibangun dari matrik 1×24 yang
mana setiap elemennya mewakili setiap kata.
>> A(6)
ans =
i
Penggunaan data simbolik dapat digunakan untuk melakukan operasi matematika langsung,
misalnya integral dan differential suatu fungsi, limit, dan lain-lain.
Integral dan differential
Untuk menentukan integral dan diferensial suatu fungsi dapat dilakukan dengan menggu-
nakan operator perintah diff(f,x,n) dan int(f,x,c,d), dimana f = f (x) adalah suatu
52
fungsi simbolik, x adalah variabel diferensial atau integral, n menjelaskan type diferensial, c
dan d merepresentasikan kondisi awal dan akhir.
Contoh, Diketahui fungsi:
f (x) = x3 − x2 + 2x − 1 (1.2)
Tentukanlah integral yang memiliki syarat batas x = 0 → 3 dan diferensial atau turunan
pertama.
Solusi, secara analitis persamaan 1.2 dapat diselesaikan dengan sangat mudah. Namun pada
sesi ini, penyelesaian persamaan ini dilakukan dengan bantuan MATLAB.
1 %=====codeVIIIa.m ======
2 %Menentukan nilai integral x = 0 hingga 3 dan diferesial dari persamaan:
3 %f(x)=x^{3}− x^{2} + 2x − 1
4 clear all;
5 clc;
6 syms x;
7 f=x^3− x^2 + 2*x − 1; %fungsi yg diselesaikan
8 n=1; %turunan pertama
9 c=0; %kondisi awal
10 d=3; %kondisi akhir
11 df=diff(f,x,1); %operasi diferensial
12 itf=int(f,x,c,d); %operasi integral
13 disp('differensial pertama:');
14 disp(df);
15 disp('integral x = 0 hingga 3:');
16 disp(itf);
differensial pertama:
3*x^2 - 2*x + 2
integral x = 0 hingga 3:
69/4
Limit
Penggunaan data simbolik dapat juga digunakan untuk menghitung nilai limit suatu fungsi.
Contoh, tentukan nilai limit:
2a + b
lim (1.3)
a→∞ 3a − 4
Solusi
53
>> syms a b;
>> f = (2*a+b)/(3*a-4);
>> Lim = limit(f,a,inf)
Lim =
2/3
8.2 Tugas
1. Jelaskan perbedaan:
(a) int8
(b) int16
(c) int32
(d) int64
(e) uint8
(f) uint16
(g) uint32
(h) uint64.
(a) char
(b) double
(c) single
(d) syms
(e) int
(f) diff
54
(e) Jika matrix A + B, type data yang dihasilkan?, Jelaskan.
(f) Jika matrix C + D, type data yang dihasilkan? , Jelaskan
x0 y 00 − y 0 x00
κ = (2.4)
(x02 + y 02 )3/2
1. Konsultasikanlah tugas kelompok ini dengan asisten praktikum mata kuliah ini.
2. Mekanisme pengumpulan tugas kelompok ini terlebih dahulu diparaf oleh asisten
pembimbing dan dikirim dalam bentuk pdf ke email: algoritma.pemograman.
geofisik@gmail.com
55
Bab 9
Animasi
9.1 Pengantar
Cara menampilkan suatu data dalam sebuah grafik dua dimensi (2D) ataupun tiga dimensi
(3D) sudah dijelaskan pada bab-bab sebelumnya. Namun, ada beberapa perhitungan yang
hasil akhirnya diungkapkan dalam suatu tampilan video atau animasi. Visualisasi data mela-
lui animasi sering digunakan dalam kasus tertentu, seperti: penjalaran gelombang, fenomena
tumbukan, fenomena kebocoran gas, dll. Dalam mengukapkan data dalam tampilan video,
ada dua pendekatan yang sering dilakukan yakni:
Di dalam menggunakan metode menghapus dan menggambar ulang (erasing and redrawing)
yang harus dilakukan adalah membuat grafik awal dan mengupdate grafik untuk setiap per-
tambahan waktu. Sebagai contoh:
Buat video untuk fungsi f (x, t) = A(t) sin x, dimana nilai A(t) memenuhi A(t) = cos(t).
Jika dilihat amplitudo A(t) merupakan fungsi waktu, dimana setiap perubahan waktu apli-
tudo gelombang berubah-ubah. Pada visualisasi fungsi ini, lama waktu yang digunakan dan
posisi memenuhi kondisi 0 ≤ t ≤ 10, dan 0 ≤ x ≤ 4π. Untuk lebih jelasnya dapat dijelaskan
melalui program berikut ini:
1 %=====codeIXa.m ======
2 %Plot animasi fungsi:
3 %f(x,t)=A(t)sin{x}, dimana A(t)=cos(t)
4 %syarat batas: 0 <= t <= 10 dan 0 <= x <= 4pi
5
6 clear all;
7 clc;
8 t=0:0.1:10; %selang waktu
9 a = cos(t(1));
10 x=0:pi/10:4*pi;
11 y=a*sin(x);
56
12
13 figure(1);
14 hndl=plot(x,y);
15 xlabel=('\bf x');
16 ylabel=('\bf amp');
17 title(['\bf Animasi fungsi gelombang pada t = ' num2str(t(1),'%5.2f')]);
18 set(gca,'Ylim',[−1 1]);
19 for ii = 2:length(t);
20 drawnow;
21 a = cos(t(ii));
22 y=a*sin(x);
23 set(hndl, 'Ydata', y);
24 title(['\bf Animasi fungsi gelombang pada t = ' num2str(t(ii),'%5.2f')]);
25 end
Visualisasi grafik melalui animasi dapat juga ditemui pada kondisi tiga dimensi, seperti pada
fungsi berikut ini:
1 %=====codeIXb.m ======
2 %Plot animasi 3D fungsi:
3 %f(x,t)=A(t)sin{x}sin{y}, dimana A(t)=cos(t)
4 %syarat batas: 0 <= t <= 10, −3*pi <= y <= 3*pi, dan −3*pi <= x <= 3*pi
5
6 clear all;
7 clc;
8 t=0:0.1:10;
9 a = cos(t(1));
10 [x,y]=meshgrid(−3*pi:pi/10:3*pi,−3*pi:pi/10:3*pi);
11 z=a.*sin(x).*sin(y);
12 figure(1);
13 hndl=surf(x,y,z);
14 xlabel=('\bf x');
15 ylabel=('\bf y');
16 zlabel=('\bf amp');
17 title(['\bf Animasi 3D fungsi gelombang pada t = ' num2str(t(1),'%5.2f')]);
18
19 set(gca,'Zlim',[−1 1]);
20 for ii = 2:length(t);
21 drawnow;
22 a = cos(t(ii));
23 z=a.*sin(x).*sin(y);
24 set(hndl, 'Zdata', z);
25 title(['\bf Animasi 3D fungsi gelombang pada t = ' ...
26 num2str(t(ii),'%5.2f')]);
27 end
57
Cara kedua untuk membuat animasi yakni dengan metode frame. Keunggulan metode ini
adalah dapat diputar kembali tanpa melakukan proses eksekusi (running) kembali. Contoh:
1 %=====codeIXb.m ======
2 %Plot animasi 3D fungsi:
3 %f(x,t)=A(t)sin{x}sin{y}, dimana A(t)=cos(t)
4 %syarat batas: 0 <= t <= 10, −3*pi <= y <= 3*pi, dan −3*pi <= x <= 3*pi
5
6 clear all;
7 clc;
8 t=0:0.1:10;
9 a = cos(t(1));
10 [x,y]=meshgrid(−3*pi:pi/10:3*pi,−3*pi:pi/10:3*pi);
11 z=a.*sin(x).*sin(y);
12 figure(1);
13 hndl=surf(x,y,z);
14 xlabel=('\bf x');
15 ylabel=('\bf y');
16 zlabel=('\bf amp');
17 title(['\bf Animasi 3D fungsi gelombang pada t = ' num2str(t(1),'%5.2f')]);
18
19 set(gca,'Zlim',[−1 1]);
20 m = 1;
21 M(m) = getframe;
22 for ii = 2:length(t);
23 drawnow;
24 a = cos(t(ii));
25 z=a.*sin(x).*sin(y);
26 set(hndl, 'Zdata', z);
27 title(['\bf Animasi 3D fungsi gelombang pada t = ' ...
28 num2str(t(ii),'%5.2f')]);
29 m = m+1;
30 M(m) = getframe;
31 end
32 movie(M,2);
9.2 Tugas
1. Jelaskan fungsi-fungsi perintah di bawah ini:
(a) gca
(b) gcf
(c) gco
(d) set
(e) drawnow
(f) getframe
58
2. Diketahui ketinggian muka air laut memenuhi persamaan:
2π 2π
h(x, y, t) = A cos t− x (2.2)
T L
dimana T merupakan periode gelombang (s), L adalah jarak antara 2 puncak gelom-
bang. Asumsi periode gelombang dan jarak antara puncak gelombang adalah 4 s dan
12 m. Buatlah gerakan gelombang laut secara animasi pada domain −300 m ≤ x ≤
300 m dan −300 m ≤ y ≤ 300 m dan antara selang waktu 0 s ≤ t ≤ 20 s. Gunakan
metode menghapus dan menggambar ulang (erasing and redrawing).
4. Buatlah algoritma untuk permasalah nomor (2) dengan menggunaka flow chart!
1. Konsultasikanlah tugas kelompok ini dengan asisten praktikum mata kuliah ini.
2. Mekanisme pengumpulan tugas kelompok ini terlebih dahulu diparaf oleh asisten
pembimbing dan dikirim dalam bentuk pdf ke email: algoritma.pemograman.
geofisik@gmail.com
59
Bibliografi
[1] Abdul Kadir, 2012, Algoritma dan Pemograman Menggunakan C & C++, Andi, Yogya-
karta, Indonesia.
[2] Edward B. Margab, Shapour Azarm, Balakumar Balachandran, James H. Duncan, Keith
E. Herold dan Gregory C. Walsh, 2011, An Engineer’s Guide to MATLAB With Applica-
tions Form Mechanical, Aerospace, Electrical, civil dan Biological Systems Engineering,
Third Edition, Prentice Hall, New Jersey, USA.
[3] James Stewart, 2008, Calculus Early Transcendentals, Sixth Edition, Thomson Brook-
s/Cole, USA.
[4] R.H. Sianipar, 2013, Pemograman MATLAB Dalam Contoh Dan Penerapan, Informatika,
Bandung, Indonesia.
[5] Stephen J. Chapman, 2016, MATLAB Programming For Engineers, Fifth Edition, Ce-
ngage Learning, USA.
[6] Steven C. Chapra, 2012, Applied Numerical Method with MATLAB for Engineers and
Scientists, Third Edition, Mc Graw-Hill, New York, USA.
[7] Suarga, 2005, Fisika Komputasi Solusi Problema Fisika Dengan MATLAB, Andi, Yogya-
karta, Indonesia.
60