Anda di halaman 1dari 62

See discussions, stats, and author profiles for this publication at: https://www.researchgate.

net/publication/319056733

Penuntun Praktikum Algoritma dan Pemograman

Book · May 2017

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:

Study of Wave Propagation: Numerical Scheme Vs. Experiment View project

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.

The user has requested enhancement of the downloaded file.


Penuntun Praktikum
Algoritma dan Pemograman

La Hamimu dan Sayahdin Alfat

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.

Kendari, 1 Mei 2017

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

4 Operator Relasional dan Logika 23


4.1 Pengertian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.2 Latihan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.3 Tugas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

5 Perulangan dan Faktorisasi 29


5.1 Teori Dasar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.2 Latihan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5.3 Tugas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

6 Pencocokan dan Interpolasi Kurva 35


6.1 Pengantar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
6.2 Tugas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

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

1.1 Grafik fungsi y(x) = 2 exp(−0.2x) . . . . . . . . . . . . . . . . . . . . . . . . 10

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

4.1 Geometri wadah . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

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

6.1 Grafik hubungan x dan y . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35


6.2 Tiga metode pencocokan kurva (a) least-square regression, (b) linear interpo-
lation, dan (c) curvilinear interpolation [6]. . . . . . . . . . . . . . . . . . . . 36
6.3 (a) Tampilan grafik hasil plotting grafik dan (b) Perbandingan tampilan grafik
hasil plotting grafik dan pencocokan kurva . . . . . . . . . . . . . . . . . . . 37
6.4 Grafik hasil fitting kurva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
6.5 (a) Tampilan grafik hasil plotting grafik dan (b) Perbandingan tampilan grafik
hasil plotting grafik dan pencocokan kurva . . . . . . . . . . . . . . . . . . . 40
6.6 (a) Pencocokan kurva menggunakan polinomial order tiga, (b) Interpolasi
menggunakan metode linear, dan (c) Interpolasi menggunakan metode spli-
ne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

7.1 Tampilan grafik melalui operator perintah (a) plot3(x,y,t) dan (b) surf(x,y,z) 47

8.1 Tipe data pada MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

4
Daftar Tabel

4.1 Operator Relasional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23


4.2 Operator Logika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

6.1 Data hubungan x dan y . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35


6.2 Fungsi-fungsi pencocokan atau fitting kurva dalam polinomial . . . . . . . . 36
6.3 Fungsi-fungsi pencocokan atau fitting kurva pada MATLAB . . . . . . . . . 36
6.4 Data stress-strain pada sautu material elastis . . . . . . . . . . . . . . . . . 38
6.5 Data pertumbuhan penduduk dunia tahun 1750 - 2009 . . . . . . . . . . . . 39
6.6 Data hubungan ketinggian dan temperatur . . . . . . . . . . . . . . . . . . . 42
6.7 Data x dan y . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
6.8 Data efisiensi bahan bakar dan kecepatan . . . . . . . . . . . . . . . . . . . . 43

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:

1. Peroleh nilai panjang p dan lebar l suatu permukaan.

2. Hitung luas permukaan dengan menggunakan rumus panjang p × lebar l.

3. Tampilkan nilai luas permukaan.

Cara Pembuatan Algoritma


Seperti yang sudah dijelaskan sebelumnya mengenai bahasa sederhana algoritma. Algoritma
juga dapat dibentuk dalam bentuk pseudo-code dan flow chart atau diagram alir. Pseudo-
code adalah salah satu bentuk algoritma yang menggunakan notasi untuk menyederhanakan
suatu kalimat. Sebagai contoh (menghitung luas suatu permukaan):

Algorithm 1 Algoritma menghitung luas permukaan


1: keliling ← p × l

6
Contoh lain; Buatlah algoritma untuk menyelesaikan masalah:
10
X
n
n=1

Secara sederhana persoalan di atas tersebut dapat dinyatakan dalam bentuk:


1 + 2 + 3 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10

Adapun pseudo-code:

Algorithm 2 Menghitung penjumlahan 1 hinggga 10


1: i ← 1
2: jum ← 0
3: while i ≤ 10 do
4: jum ← jum + i
5: i←i+1
6: write(i)

Sedangkan, flow chart merupakan suatu gambaran dari suatu proses. Setiap langkah dari
algoritma ditampilkan dalam bentuk simbol. Adapun simbol yang sering digunakan adalah:

Terminator (Tanda mulai atau selesai)

Konektor (Tanda penghubung)

Proses (Tanda perhitungan)

Keputusan (Pengambilan keputusan)

Proses Terdefenisi (Tanda prosedur)

Input/Output (Tanda masukan atau keluaran)

Gambar 1: Simbol-simbol algoritma

Sehingga dengan menggunakan simbol-simbol tersebut (gambar 1), algoritma untuk meng-
hitung luas permukaan dengan panjang p dan lebar l adalah:

7
Mulai

Masukan nilai l & p

luas ← p × l

Tampilkan hasil

Selesai

Gambar 2: Algoritma menghitung luas permukaan menggunakan flow chart

8
Bab 1

Pengantar Matlab

1.1 Pengertian MATLAB


Matlab (Matrix Laboratory) merupakan perangkat lunak (software) yang didesain untuk ana-
lisis, komputasi numerik, melakukan simulasi dan pemodelan, dll. Software ini pada awalnya
didesain untuk menyelesaikan masalah-masalah matermatika yang bersifat dan berbentuk
matriks, namun seiring perkembangannya software ini dapat diaplikasi untuk berbagai kasus-
kasus lain.
Secara syntax, bahasa program yang dipakai dalam MATLAB sangat sederhana dan mu-
dah dimengerti, disamping itu juga software ini didukung oleh banyak jenis fungsi dan library.
Selain dari beberapa keuntungan tersebut MATLAB juga masih memiliki keuntungan sebaga
berikut:

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:

1 %ploting fungsi y(x) = 2*exp(−0.2*x), dimana x memiliki ...


2 %nilai 0 −−−> 10 dengan interval 0.1
3
4 x=0:0.1:10;
5 y=2*exp(−0.2*x);
6 plot(x,y);

Hasilnya:

Gambar 1.1: Grafik fungsi y(x) = 2 exp(−0.2x)

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

3. Waktu pengumpulan setiap hari rabu, hingga pukul 18.00 WITA.

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:

1. Menempatkan data variabel secara langsung ke dalam script atau code

2. Input data ke dalam variabel melalui keyboard

3. Memanggil atau membaca melalui file yang lain

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

3. Nyatakan bilangan 123.4567e2 dalam format:

(a) integer
(b) floating
(c) exponensial
(d) pecahan 4 angka dibelakang koma

4. Tentukan nilai x pada persamaan Ax = B, dimana nilai A dan B:


 
1 2 1
A= 2 3 2 
−1 0 1

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 +

2. Jika diberikan matrix a dan b, maka jelaskan perbedaan;


(a) a * c dan a .* c
(b) a \ c dan a .\ c
(c) Nyatakan point (a) dan (b) dalam contoh yang sederhana
3. Diketahui:  
0.0 0.5 2.1 −3.5 6.0
 0.0 −1.1 −6.6 2.8 3.4 
A= 
 2.1 0.1 0.3 −0.4 1.3 
1.1 5.1 0.0 1.1 −2.0
Tentukan:
(a) Ukuran matrix A
(b) Nilai A(1,4)
(c) Nilai A(:,1:2:5)
(d) Ukuran dan nilai A([1 3], end)
4. Jelaskan apakah nama-nama variabel berikut ini benar atau salah:
(a) dog1
(b) 1dog
(c) Do_you_know_way_to_san_jo
(d) _help
(e) What ’s_up?
5. Tentukan nilai x dari persamaan berikut ini:
−2.0x1 + 5.0x2 + 1.0x3 + 3.0x4 + 4.0x5 − 1.0x6 = 0.0
2.0x1 − 1.0x2 − 5.0x3 − 2.0x4 + 6.0x5 + 4.0x6 = 1.0
−1.0x1 + 6.0x2 − 4.0x3 − 5.0x4 + 3.0x5 − 1.0x6 = −6.0
4.0x1 + 3.0x2 − 6.0x3 − 5.0x4 − 2.0x5 − 2.0x6 = 10.0
−3.0x1 + 6.0x2 + 4.0x3 + 2.0x4 − 6.0x5 + 4.0x6 = −6.0
2.0x1 + 4.0x2 + 4.0x3 + 4.0x4 + 5.0x5 − 4.0x6 = −2.0

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

3. Waktu pengumpulan setiap hari rabu, hingga pukul 18.00 WITA.

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:

plot(x,y) membuat grafik vektor x terhadap y


loglog(x,y) membuat grafik vektor x terhadap y dengan skala logaritma
semilogx(x,y) sumbu-x berskala semilog
semilogy(x,y) sumbu-y berskala semilog
polar(teta,rho) grafik polar dengan sudut teta dan jari-jari rho
contour(z) grafik kontur dari matriks z
mesh(z) grafik 3D dari matriks z
title(’text’) memberi judul pada grafik
xlabel(’text’) memberi label pada sb-x
ylabel(’text’) memberi label pada sb-y

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)

2. Plotlah grafik cos(x) dimana nilai x memiliki rentang 0 hingga 10

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

Di dalam pengukapan data-data melalui grafik, beberapa ilmuwan biasanya mengukapkan


grafik pada skala logaritmik (logarithmic scale). Pengungkapan grafik menggunakan skala
logaritmik bertujuan melihat trend data, sehingga dapat diprediksi data-data selanjutnya.
Misalnya; Lukislah grafik yang memiliki persamaan f (x) = 2−0.2x+10 pada interval 0.1 hingga
60 dengan menggunakan skala logaritmik dan bandingkan dengan menggunakan skala biasa
(linear). Gunakan 1000 titik data!.
Untuk menyelesaikan masalah tersebut, yang anda harus lakukan yakni menggunakan
operator perintah semilogy, semilogx, dan loglog (lihat source code codeIIId.m ). Hal ini
bertujuan untuk melukiskan grafik dalam skala logaritmik (lihat gambar 3.4).

(a) (b) (c) (d)

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:

(a) y(x) = exp−0.5x sin(2x)


(b) y(x) = exp−0.5x cos(2x)

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.

4. Plot fungsi r(θ) = sin(2θ) cos(θ) dimana 0 ≤ θ ≥ 2φ

5. Jika nilai 0 ≤ x ≥ 4. Nyatakan fungsi y(x) = exp−x sin(x) dalam bentuk:

(a) linear plot


(b) log/linear plot
(c) steam plot
(d) stair plot
(e) bar plot
(f) horizontal bar plot
(g) compas plot

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

3. Waktu pengumpulan setiap hari rabu, hingga pukul 18.00 WITA.

22
Bab 4

Operator Relasional dan Logika

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

Tabel 4.1: Operator Relasional

Operator Penjelasan
== Sama dengan
-= Tidak sama dengan
> Lebih dari
>= Lebih dari atau sama dengan
< Kurang dari
<= Kurang dari atau sama dengan

Tabel 4.2: Operator Logika

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

Berikut ini merupakan contoh penggunaan operator relasional secara sederhana:

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

>> b > d % (b) lebih besar (d)

ans =
0

>> c <= d % (c) lebih kecil atau sama dengan (d)

ans =
1

Sedangkan operator logika merupakan operator yang digunakan untuk membandingkan


satu atau dua nilai logika dan diungkapkan dalam statement true atau false. Adapun
operator logika berikut (Tabel 4.2):
Disamping kedua operator di atas, dalam bahasa pemograman dikenal suatu istilah bran-
ches. Istilah ini biasanya digunakan dalam kasus; perulangan (looping) dan iterasi. Operator
yang biasa digunakan adalah if, elseif, dan else. Contoh:

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

16 discriminant = b^2 − 4*a*c;


17
18 %menghitung nilai akar−akar pers. kuadrat
19 if discriminant > 0

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:

(a) Jumlah hari yang memiliki temperatur di atas 75◦


(b) Jumlah hari yang memiliki temperatur antara 65◦ dan 80◦
(c) Hari-hari apa saja yang memiliki temperatur antara 50◦ dan 60◦

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

2. Menentukan volume fluida

Diketahui suatu penampungan air memiliki geometri se-


perti gambar di samping. Terlihat bahwa diameter ba-
wah sebesar 25 m dan diameter atas 46 m. Ketinggi-
an penampungan air ini adalah 33 m, yang terbagi atas
19 m untuk daerah silinder dan 14 m untuk daerah ke-
rucut. Hitunglah berapa volume air tersebut dgn meng-
gunakan fungsi logika!.
Gambar 4.1: Geometri wadah
Penyelesaian
Dalam menentukan volume air yang memenuhi gambar di atas maka lakukan pemba-
gian daerah:

(a) Untuk 0 ≤ h ≤ 19 m, volume air sama dengan volume silinder dengan ketinggian
h:

V = 12.52 πh (2.1)

(b) Untuk 19 ≤ h ≤ 33 m, volume air sebanding dengan penambahan volume silinder


dengan ketinggian h.
1
V = 12.52 × 19π + π(h − 19)(12.52 + 12.5 × rh + rh2 ) (2.2)
3
10.5
dimana: rh = 12.5 + (h − 19). Gunakan persamaan (2.2) dalam program:
14

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:

3. Waktu pengumpulan setiap hari rabu, hingga pukul 18.00 WITA.

1. Jelaskan perbedaan antara operator berikut ini:

(a) & dan &&


(b) | dan ||

2. Jelaskan opeator berikut ini:

(a) if,
(b) elseif, dan
(c) else.

3. Hitulah nilai-nilai berikut ini:

(a) 5 >= 5.5


(b) 20 >= 20
(c) xor(17 -pi < 15, pi < 3)
(d) true > false
(e) ∼∼(35/17) == (35/17)
(f) (17 <= 8) == (3/2 == 1)
(g) 17.5 && (3.3 > 2.)

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

5. Buatlah algoritma untuk program nomor 4!

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

3. Waktu pengumpulan setiap hari rabu, hingga pukul 18.00 WITA.

28
Bab 5

Perulangan dan Faktorisasi

5.1 Teori Dasar


Pada MATLAB, penggunaan perintah perulangan sangat penting untuk menyelesaikan suatu
rentetan statement yang lebih dari satu. Pada perintah perulangan (looping), terdapat dua
bentuk perulangan; perulangan dengan menggunakan while dan perulangan menggunakan
for. Kedua perintah ini berbeda satu sama lain. While digunakan untuk melakukan peru-
langan selama kondisi ekspresi terpenuhi. Begitu kondisi sudah tidak terpenuhi, maka proses
perulangan dihentikan. Secara syntax dapat dituliskan sebagai berikut:

>> while (kondisi)


>> blok_perintah
>> end

Contoh: Program ini menentukan nilai faktorial dari nilai x sembarang.

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:

>> for x (array)


>> blok_perintah
>> end

Contoh perulangan dengan menggunakan operator for:

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

Jika n = 4 dan n = 20. Hitunglah berapa nilai A. Gunakan operator for-end!


Penyelesaian

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

3. Menentukan kecepatan dan ketinggian

Suatu roket dengan yang bermassa 0.05 kg terbang dengan ilus-


trasi lintasannya seperti gambar disamping. Selama t= 0.15 s,
arah lintasan roket ke atas dan dengan gaya angkat sebesar 16 N.
Setelah t= 0.15 s, roket jatuh. Saat kecepatannya mencapai
20 m s−1 , parasut roket terbuka. Kecepatan roket saat membuka
parasut hingga menyentuh tanah konstan yakni sebesar 20 m s−1 .
Nyatakan kecepatan dan ketinggian roket dalam fungsi waktu
dan posisi dalam bentuk grafik!.

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)

Dari persamaan (2.2), diperoleh bentuk percepatan:


Fatas − mg
a = (2.3)
m
Kecepatan dan posisi dapat dinyatakan dalam bentuk:

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:

v(t) = v1 + g(t − t1 ) (2.6)


1
h(t) = h1 + v1 (t − t1 ) + g(t − t1 )2 (2.7)
2
waktu, posisi, kecepatan dan percepatan pada kondisi ini adalah t2 , h2 , v2 dan a2
(c) Parasut terbuka - menyentuh tanah. Pada kondisi ini kecepatan konstan dan
percepatan tidak ada, sehingga posisi dapat dinyatakan dalam:

h(t) = h2 − v(t − t2 ) (2.8)

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:

(a) (b) (c) (d)

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

Tentukan nilai (A) untuk m = 5, m = 10 dan m = 20


5. Diketahui:
m
Y (2n)2 4 16 36 
2 = 2 · · · · · · (3.11)
n=1
(2n)2 − 1 3 15 35

Dengan menggunakan persamaan (3.11), hitunglah untuk m= 100, m= 100000 dan m


= 10000000.

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

3. Waktu pengumpulan setiap hari rabu, hingga pukul 18.00 WITA.

34
Bab 6

Pencocokan dan Interpolasi Kurva

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:

Tabel 6.2: Fungsi-fungsi pencocokan atau fitting kurva dalam polinomial

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

Pada MATLAB fungsi-fungsi tersebut dapat dinyatakan dalam bentuk:

Tabel 6.3: Fungsi-fungsi pencocokan atau fitting kurva pada MATLAB

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

Contoh 1: Pencocokan atau fitting kurva berdasarkan data


Tentukanlah fungsi w(t) yang sesuai dengan data berikut ini:
Untuk menyelesaikan masalah di atas maka yang pertama dilakukan adalah melakukan plot-
ting grafik.

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:

w(t) = 5.9889 exp(−0.4580t) (1.1)

Contoh 2: Hubungan Stress-strain


Jika diketahui hubungan tress-strain dari suatu data material elastis (tabel 6.4) memenuhi
persamaan (1.2). Tentukan nilai a dan b dari persamaan tersebut!

 = a + b ln(σ) (1.2)

Tabel 6.4: Data stress-strain pada sautu material elastis

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

 = −0.9718 + 0.5519 ln(σ)

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:

Tabel 6.5: Data pertumbuhan penduduk dunia tahun 1750 - 2009

Tahun 1750 1800 1850 1900 1950 1990 2000 2009


Penduduk (juta jiwa) 791 980 1.260 1.650 2.520 5.270 6.060 6.800

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

Substitusi variabel (m) dan (b) ke persamaan 1.3:


1
Jumlah Penduduk = (1.4)
−4.3164e − 006 × T ahun + 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)

Dimana J = Jumlah Penduduk dan t = tahun. Untuk menentukan koefisien a3 , a2 , a1 , dan


a0 , gunakan persamaan 1.5 pada code berikut ini:

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');

sehingga diperoleh hasil:

J(t) = 1 × 106 t3 − 1 × 106 t2 + 1.0255 × 104 t − 6.2539 × 106 (1.6)

dengan menggunakan persamaan 1.6 diperoleh jumlah penduduk pada tahun 1980 yakni
sebesar: 4.456 Juta Jiwa.

(a) (b) (c)

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.

Tabel 6.6: Data hubungan ketinggian dan temperatur

h(ft) 0 2000 5000 7500 10000 20000 26000


T(F)(ft) 212 210 203 198 194 178 168

3. Diberikan data:

42
Tabel 6.7: Data x dan y

x -5 -3.4 -2.0 -0.8 0 1.2 2.5 4 5.0 7 8.5


y 4.4 4.5 4 3.6 3.9 3.8 3.5 2.5 1.2 0.5 -0.2

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:

Tabel 6.8: Data efisiensi bahan bakar dan kecepatan

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

3. Waktu pengumpulan setiap hari kamis, hingga pukul 22.00 WITA.

43
Bab 7

Bilangan Komplex dan Grafik 3-Dimensi

7.1 Bilangan Komplex


Bilangan komplex selalu diungkapkan dalam bentuk:

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

7.2 Grafik 3 Dimensi


Dalam MATLAB, visualisasi tiga dimensi hampir sama dengan melakukan visualisasi 2 di-
mensi. Pada plot dua dimensi, script perintah menggunakan plot(x,y). Sedangkan, untuk
plot tiga dimensi menggunakan plot3(x,y,t). Secara umum data yang dapat digunakan
untuk dilakukan plotting tiga dimensi adalah sebagai berikut:

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

3. Diketahui persamaan arus listrik (I) menurut Hukum Kirchhoff adalah:


Vin
I = (3.9)
R + j2πf L − j 2πf1 C

Jika R = 100 Ω, L = 0.1 mH, C = 0.25 nF, Vin = 120 V, dan j = −1.

(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

3. Waktu pengumpulan setiap hari kamis, hingga pukul 18.00 WITA.

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;

>> A = 1; %Type data skalar


>> B = 1:10; %Type data vektor
>> C = [1 2 3; 4 5 6]; %Type data matriks

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.

Gambar 8.1: Tipe data pada MATLAB

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

8.1.1 Data Numerik


Data numerik standar pada MATLAB terdiri atas tiga jenis bilangan yakni bilangan real,
integer, dan complex. Bilangan real terbagi atas; double dan single-precision floating-point
numbers. Double-precision floating-point numbers menjadi standar bilangan pada MAT-
LAB. Perbedaan kedua jenis bilangan ini terletak pada ketelitiannya, dimana double-precision
floating-point numbers memiliki ketelitian sangat tinggi sebesar 15 digit dan single-precision
floating-point numbers memiliki ketelitian rendah sebesar 6-7 digit, sebagai contoh;
1. double-precision floating-point numbers

>> realmax(’double’)
ans =
1.7977e+308
>> realmin(’double’)
ans =
2.2251e-308

2. single-precision floating-point numbers

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

Sehingga jika menggunakan kondisi tersebut di atas dapat disimpulkan bahwa:


jumlah nilai = 2n (1.1)
dimana nilai n merupakan jumlah bit.

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

8.1.2 Data Karakter


Seperti yang sudah dijelaskan sebelumnya bahwa MATLAB hanya merepresentasikan suatu
data dalam bentuk skalar, vektor dan matrik. Sehingga dengan menggunakan asumsi terse-
but, maka suatu karakter dapat direpresentasikan kedalam 3 bentuk data tersebut. Contoh:
>> A = ’Algoritma dan Pemograman’;
>> x = double(A)
x =
Columns 1 through 10
65 108 103 111 114 105 116 109 97 32
Columns 11 through 20
100 97 110 32 80 101 109 111 103 114
Columns 21 through 24
97 109 97 110

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

8.1.3 Data Logika


Pada Bab 4 Operator Relasional dan Logika, disebutkan bahwa operator perintah true me-
nyatakan bernilai 1 dan false bernilai 0. Hal ini menegaskan bahwa data logika pada
MATLAB hanya bernilai 1 atau 0. Contoh:

>> M = [true false true false]


M =
1 0 1 0

Dengan mengacu pada code di atas, dapat dibuat contoh lainnya:


>> x = 1:5;
>> y = [2 0 1 9 4];
>> x>y
ans =
0 1 1 0 1

8.1.4 Data Simbolik


Sama halnya dengan OCTAVE software, MATLAB juga dapat menyelesaikan operasi-operasi
yang sifatnya data simbolik, dimana data simbolik merupakan representatif dari suatu fungsi
matematik. Contohnya jika diketahui suatu fungsi f (x) = x3 − x2 + 2x − 1, maka pada
MATLAB dapat dilakukan hanya dengan menggunakan:

>> F = sym(’x^3 - x^2 + 2*x - 1’)


F =
x^3 - x^2 + 2*x - 1

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

Dari code di atas diperoleh:

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.

2. Jelaskan apa yang dimaksud dengan:

(a) char
(b) double
(c) single
(d) syms
(e) int
(f) diff

3. Diketahui matrix (M):  


1 4 6
M = 3 15 24
2 3 4
Nyatakan matrix (M) dalam bentuk:

(a) double-precision floating point, beri nama matrix A


(b) single-precision floating point, beri nama matrix B
(c) int8, beri nama matrix C
(d) uint8, beri nama matrix D

54
(e) Jika matrix A + B, type data yang dihasilkan?, Jelaskan.
(f) Jika matrix C + D, type data yang dihasilkan? , Jelaskan

4. Tentukanlah curvature κ dari suatu kurva 2D (koordinat kartesian) yang memenuhi


persamaan:

x0 y 00 − y 0 x00
κ = (2.4)
(x02 + y 02 )3/2

Parameter x(t) dan y(t) adalah:

x(t) = 2b cos(t) + b cos(2t)


y(t) = 2b sin(t) − b sin(2t)

catatan: buatlah algoritma dari problem ini

5. Tentukan nilai limit berikut ini:


x − 1
(a) lim (b) lim (1 − sin(2x))1/x
→0  x→0
 et − 1 −a ln(xn )
(c) lim (d) lim
t→0 t x→1 1 − x2

catatan: gunakan operator perintah limit(f,a,c)

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

3. Waktu pengumpulan setiap hari rabu, hingga pukul 18.00 WITA.

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:

1. Menghapus (erasing) dan menggambar ulang (redrawing)

2. Membuat video melalui metode frame

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:

f (x, y, t) = A(t) sin(x) sin(y) (1.1)

dimana A(t) = cos(t).


Dalam menyelesaikan kasus ini, penyelesaiannya hampir sama dengan kasus dua dimensi,
seperti yang telah dijelaskan pada codeIXa.m.

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

3. Buatlah video dari permasalah no (2)!

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

3. Waktu pengumpulan setiap hari rabu, hingga pukul 18.00 WITA.

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

View publication stats

Anda mungkin juga menyukai