Tutorial Praktis Matlab
Tutorial Praktis Matlab
Tutorial Praktis Matlab
BELAJAR MATLAB
Lebih dari 200 contoh dan soal latihan disajikan dalam buku ini,
meliputi: perhitungan, program, dan command MATLAB yang ada
pada setiap bab; sehingga akan mempermudah pemahaman
sekaligus bisa digunakan sebagai rujukan yang bermanfaat.
Jakarta,
Ramadhan 1426 / Oktober 2005
Buku ini kupersembahkan untuk istri tercinta, Anna Nurul Inayati
Shofia, dan anakku yang sholeh Faska Ulul ‘Azmi Mir. Juga
kepada Widjayanto (EL2000) dan Mas Teguh Prakoso (EL96)
yang turut mendorong dan menyebarluaskan buku ini.
i
DAFTAR ISI
Bab 3: MATRIKS 23
3.1 Skalar, Vektor, dan Matriks 23
3.2 Ukuran Matriks 25
3.3 Matriks Khusus 26
3.4 Manipulasi Indeks Matriks 28
Operator Titik Dua 28
3.5 Membuat Deret 30
3.6 Membentuk-Ulang Matriks 32
Soal Latihan 34
x – 2y = 32
12x + 5y = 12
Daftar variabel
yang aktif
Command
window
MATLAB Start
>>
>> date
ans =
05-Feb-2005
>> clc
Ketika kita selesai dengan sesi MATLAB dan ingin keluar, gunakan
command exit atau quit.
>> 2048 + 16
ans =
2064
ans =
25
ans =
6
>> deret1=1:1:10
deret1 =
1 2 3 4 5 6 7 8 9 10
>> deret2=linspace(0,5,11)
deret2 =
Columns 1 through 7
0 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000
Columns 8 through 11
3.5000 4.0000 4.5000 5.0000
y = x4 – 10 x2 + 9
>> x=linspace(-5,5,200);
>> y=x.^2+cos(10*x);
>> plot(x,y)
>> u=linspace(-4,4,50);
>> [U,V]=meshgrid(u,u);
>> W=cos(U).*cos(V/3);
>> surf(U,V,W)
Apa Itu MATLAB 7
>> sound(m,Fs)
Product
filter
Tab
Help
navigator Gambar 1. 7 Jendela help browser.
>> 3+12
ans =
15
>> 25*10-16
ans =
234
>> (9+18)/3^2
ans =
3
Tabel 2. 1
+, -, *, / : tambah, kurang, kali, bagi
(, ) : kurung
\ : pembagian terbalik
^ : pangkat
>> 2.5+0.6
ans =
3.1000
>> 3*4+3/4
ans =
12.7500
>> 5\(15+35)
ans =
10
>> a=100
a =
100
>> b=200
b =
200
>> c=300;
>> d=400;
>> total=a+b+c+d
total =
1000
>> rata_rata=total/4;
>> rata_rata
rata_rata =
250
Berikutnya, kita bisa melihat daftar variabel apa saja yang sedang
aktif di dalam MATLAB menggunakan command whos.
>> whos
Name Size Bytes Class
>> clear
Penamaan Variabel
>> baca_ini
baca_ini =
Contoh variabel berisi teks!
>> clear
>> a=7;
>> b=’7’;
>> a/b
ans =
0.1273
>> a+b
ans =
62
Variabel dan Operasi Dasar 19
Tabel 2. 2
ans “answer”, digunakan untuk menyimpan hasil
perhitungan terakhir
pi konstanta π, 3.1415926...
Tabel 2. 3
abs(x) menghitung nilai absolut dari x, yaitu x
Fungsi trigonometri:
sin(x), cos(x), fungsi trigonometri sinus, cosinus, tangent,
tan(x), cot(x), cotangent, secant, dan cosecant. (x dalam
sec(x), csc(x) satuan radian)
Fungsi pembulatan:
round(x) pembulatan x ke bilangan bulat terdekat
floor(x) pembulatan ke bawah dari x ke bilangan bulat
terdekat
ceil(x) pembulatan ke atas dari x ke bilangan bulat terdekat
fix(x) pembulatan ke bawah untuk x positif, dan ke atas
untuk x negatif
rem(x,y) sisa pembagian dari x/y
Variabel dan Operasi Dasar 21
>> sign(a)
Soal Latihan
MATRIKS
>> vektor1=[3,5,7]
vektor1 =
3 5 7
>> vektor2=[2;4;6]
vektor2 =
2
4
6
>> matriks1=[10 20 30
40 50 60
70 80 90]
Untuk mengetahui ukuran atau dimensi dari matriks yang ada, kita
bisa gunakan command size dan length. size umumnya digunakan
untuk matriks 2-dimensi, sementara length untuk vektor.
>> length(vektor1)
ans =
3
>> size(matrix1)
ans =
3 3
>> panjang=length(vektor2)
panjang =
3
>> [jml_baris,jml_kolom]=size(gabung5)
jml_baris =
3
jml_kolom =
6
>> jml_elemen=prod(size(gabung5))
jml_elemen =
18
26 Matriks
Tabel 3. 1
ones(n) membuat matriks satuan (semua elemennya berisi
angka 1) berukuran n×n.
ones(m,n) membuat matriks satuan berukuran m×n.
>> clear
Matriks 27
>> mat_1=5*ones(2,4)
mat_1 =
5 5 5 5
5 5 5 5
>> mat_2=zeros(2,4)
mat_2 =
0 0 0 0
0 0 0 0
>> bil_acak_uniform=rand(1,10)
bil_acak_uniform =
Columns 1 through 7
0.9501 0.2311 0.6068 0.4860 0.8913 0.7621 0.4565
Columns 8 through 10
0.0185 0.8214 0.4447
>> gaussian_noise=randn(5,1)
gaussian_noise =
-0.4326
-1.6656
0.1253
0.2877
-1.1465
Untuk vektor:
nama_vektor( indeks )
Untuk matriks:
nama_matriks( indeks_baris , indeks_kolom )
>> clear
>> vektor_ini = [1 3 5 7 9];
>> vektor_itu = [9; 8; 7; 6; 5];
>> matrix = [10 20 30; 40 50 60; 70 80 90];
>> vektor_ini(1)
ans =
1
>> vektor_itu(2)
ans =
8
>> matrix(1,2)
ans =
20
Operator-Titik Dua
Kita juga bisa mengambil beberapa baris dan kolom sekaligus dari
suatu matriks dengan operator titik-dua (:). Dalam hal ini tanda
titik-dua berarti “sampai dengan”.
Matriks 29
>> vektor_ini(1:3)
ans =
1 3 5
>> vektor_itu(3:5)
ans =
7
6
5
Mengambil elemen baris ke-1 sampai ke-2, kolom ke-2 sampai ke-
3 dari matrix
>> matrix(1:2,2:3)
ans =
20 30
50 60
>> vektor_ini(:)
ans =
1 3 5 7 9
>> matrix(:,:)
ans =
10 20 30
40 50 60
70 80 90
>> matrix(1,:)
ans =
10 20 30
>> matrix(:,2)
30 Matriks
ans =
20
50
80
>> matrix(:,2:3)
ans =
20 30
50 60
80 90
>> vektor_ini(1)=1000
vektor_ini =
1000 3 5 7 9
>> matrix(3,:)=100*ones(1,3)
matrix =
10 20 30
40 50 60
100 100 100
>> time=1:60
>> x=0:100:2300;
>> y=-10:0.5:10;
>> z=10:-0.05:0;
Contoh:
>> linspace(0,10,11)
ans =
0 1 2 3 4 5 6 7 8 9 10
>> logspace(0,2,10)
ans =
Columns 1 through 7
1.0000 1.6681 2.7826 4.6416 7.7426 12.9155 21.5443
Columns 8 through 10
35.9381 59.9484 100.0000
Tabel 3. 3
fliplr(A) menukar posisi elemen matriks A secara
melintang, yaitu sebelah kiri ditukar dengan
sebelah kanan.
flipud(A) menukar posisi elemen matriks A secara
membujur, yaitu sebelah atas ditukar dengan
sebelah bawah.
rot90(A) merotasi posisi elemen matriks A berlawanan
arah jarum jam sejauh 90o.
reshape(A,m,n) menyusun ulang elemen matriks A menjadi
berukuran m×n. Harus diingat bahwa jumlah
elemen A harus sama dengan m×n
Contoh:
>> fliplr(A)
ans =
3 2 1 0
7 6 5 4
Matriks 33
>> flipud(A)
ans =
4 5 6 7
0 1 2 3
>> rot90(A)
ans =
3 7
2 6
1 5
0 4
>> reshape(A,1,8)
ans =
0 4 1 5 2 6 3 7
>> reshape(A,4,2)
ans =
0 2
4 6
1 3
5 7
34 Matriks
Soal Latihan
B B
C = (A B) W =
B − B
3. Hitunglah:
a. Masing-masing ukuran vektor/matriks pada soal no.1 dan
no. 2 di atas
b. Masing-masing jumlah elemen vektor/matriks pada soal
no.1 dan no.2 di atas.
OPERASI MATRIKS
>> A,B
A =
0 1
2 3
B =
4 5
6 7
y =
100
10
1
Tabel 4. 1
dot(x,y) menghitung dot-product dari vektor x dan y
cross(x,y) menghitung cross-product dari vektor x dan y
x1 – 2 x2 = 32
12 x1 + 5 x2 = 7
40 Operasi Matriks
1 − 2 x1 32
= ⇔ AX = B
12 5 x2 7
>> X=inv(A)*B
X =
6.0000
-13.0000
>> X=A\B
X =
6.0000
-13.0000
x + 2y + 3z = 2
4x + 5y + 6z = -5,5
7x + 8y – 9z = -49
4.4 Transposisi
Tabel 3. 1
petik tunggal ( ‘ ) operasi transposisi untuk matriks berisi bilangan
riil, atau transposisi dan konjugasi untuk matriks
kompleks.
titik-petik ( .’ ) operasi transposisi tanpa konjugasi. Untuk
matriks riil, operator ini memberi hasil yang
sama dengan petik tunggal
>> Transp_riil=Mat_riil',Transp_kompleks=Mat_kompleks'
Transp_riil =
1 3
0 5
Transp_kompleks =
1.0000 - 2.0000i 1.0000
0 - 3.0000i 2.0000 - 3.0000i
>> Transp_riil2=Mat_riil.'
Transp_riil2 =
1 3
0 5
>> Transp_kompleks2=Mat_kompleks.'
Transp_kompleks2 =
1.0000 + 2.0000i 1.0000
0 + 3.0000i 2.0000 + 3.0000i
Tabel 3. 2
+ – Tambah dan kurang (elemen-per-elemen)
.* ./ .\ Kali, bagi, bagi terbalik (elemen-per-elemen)
.^ Pangkat (elemen-per-elemen)
>> A+B
ans =
8 3
3 5
>> A.*B
ans =
7 -10
2 0
>> B./A
ans =
7.0000 -2.5000
2.0000 0
>> B.^2
ans =
49 25
4 0
>> A.^B
ans =
1 -32
1 1
>> 2.^B
ans =
128 32
4 1
>> a.*b
ans =
12 10 6
>> c.*d
ans =
50
200
450
>> a.*c
??? Error using ==> .*
Matrix dimensions must agree.
>> c./2.*d.^2
ans =
125
1000
3375
>> n=-3:3
n =
-3 -2 -1 0 1 2 3
>> rem(n,3)
ans =
0 -2 -1 0 1 2 0
Contoh Kasus
y = ln(x2)
>> clear
>> inkremen = 0.5;
>> x = -100:inkremen:100; %Di sini kita definisikan x,
>> y = log(x.^2); %kemudian kita hitung y
Warning: Log of zero.
>> y = log(x.^2+eps);
Columns 8 through 9
1.5000 2.0000
Columns 8 through 9
0.8109 1.3863
>> clear
46 Operasi Matriks
>> x=0:30:360;
>> x=[x 45 135 225 315];
>> x=sort(x)
x =
Columns 1 through 13
0 30 45 60 90 120 135 150 180 210 225 240 270
Columns 14 through 17
300 315 330 360
>> t=x.*pi/180;
>> y1=sin(t); y2=cos(t);
>> tabel=[x;y1;y2]';
>> judul=' sudut sin cos';
Ingat, vektor x, y1, dan y2 berupa satu baris; padahal kita ingin
menampilkannya memanjang ke bawah berupa kolom, jadi perlu
dilakukan transposisi.
Soal Latihan
Menu
Rotate Zoo
klik ikon ini, lalu drag di klik
New figure, dalam figure untuk memutar figu
open, save, figure; terutama untuk figure dan
print 3-dimensi
Rot
klik
dala
Insert Zoom figu
menambahkan klik ikon ini, lalu klik di dalam 3-di
teks, panah, dan figure untuk memperbesar
garis ke dalam dan memperkecil
figure
Edit plot
klik ikon ini, pilih obyek yang ada di figure (garis plot, area plot, dsb), lalu
double-click untuk mengubah properties dari obyek tersebut.
Gambar 5. 1 Jendela figure.
Seperti yang Anda lihat, titik (1,20), (2,22), (3,25), (4,30), dst...
terhubung dengan garis lurus. Sekarang Anda bisa coba untuk
membalik urutan sintaks dan mengamati grafik yang dihasilkan!
>> plot(y,x)
Tabel 5. 1
xlabel memberi label pada sumbu-x
ylabel memberi label pada sumbu-y
title memberi judul di atas area plot
grid on memunculkan grid di dalam area plot
grid off menghapus grid
Sekarang mari kita lihat contoh plot yang lain. Kita akan memplot
kurva y = x3 pada rentang x = -3 hingga x = +3.
>> clear
>> x=-3:0.1:3; %inkremen=0.1 agar kurva terlihat mulus
>> y=x.^3;
>> plot(x,y)
>> xlabel('Sumbu X'), ylabel('Sumbu Y')
>> title('Kurva Y=X^3')
>> grid on
Tabel 5. 2
hold on untuk ‘menahan’ gambar sebelumnya supaya
tak terhapus ketika ditimpa gambar baru
hold off untuk menonaktifkan command hold
>> clear
>> x=linspace(0,5,500);
>> y1=exp(-x); plot(x,y1);
>> grid on
>> hold on
>> y2=exp(-0.5*x); plot(x,y2);
>> y3=exp(-0.25*x); plot(x,y3);
>> y4=exp(-0.1*x); plot(x,y4);
>> xlabel('sumbu-x'), ylabel('sumbu-y')
>> title('Perbandingan fungsi eksponensial ...
negatif')
Tabel 5. 3
figure menciptakan figure window baru yang kosong
dan siap untuk di-plot
figure(k) untuk ‘menduduki’ figure window nomor-k
subplot(m,n,k) membagi figure window menjadi m-baris ×
n-kolom area plot yang terpisah, dan
menduduki area ke-k
clf “clear figure”, mengosongkan figure window
yang sedang ‘diduduki’
Tabel 5. 3 (lanjutan)
plot(x,y,’string’) menciptakan plot 2-dimensi dari vektor x
versus vektor y, dengan property yang
ditentukan oleh string, sebagai berikut:
Warna Jenis Garis Jenis Point
b biru - utuh . titik
g hijau : titik-titik o lingkaran
r merah -. titik-strip x tanda ×
c biru muda -- putus-putus + tanda +
m ungu * tanda *
y kuning s bujur sangkar
k hitam d permata
w putih v segitiga ke bawah
^ segitiga ke atas
< segitiga ke kiri
> segitiga ke kanan
p segilima
h segienam
Misalkan:
plot(x,y,’r-’) memplot x versus y dengan garis utuh warna merah
plot(x,y,’k*’) menempatkan tanda * warna hitam untuk setiap titik
x versus y.
plot(x,y,’g--s’) memplot dengan garis putus-putus warna hijau dan
menempatkan tanda bujur sangkar di setiap titik x
versus y.
Perlu diingat bahwa ‘string’ dalam plot bersifat opsional. Apabila
tidak dituliskan maka digunakan garis utuh warna biru.
Tabel 5. 3 (lanjutan)
plot(x1,y1,’string1’,x2,y2,’string2’,x3,y3,’string3’, ... )
menciptakan sejumlah plot sekaligus dalam satu area
plot: x1 versus y1 dengan property string1, x2 versus
y2 dengan property string2, dan seterusnya
legend(‘ket1’,’ket2’,’ket3’, ...)
menambahkan legenda ke dalam plot yang telah dibuat;
ket1 untuk plot pertama, ket2 untuk plot kedua, dan
seterusnya
Grafik dan Suara 55
Tabel 5. 4
stem( ... ) sama dengan plot( ... ), tetapi menampilkan y
sebagai data diskrit
semilogy( ... ) sama dengan plot( ... ), kecuali sumbu-y
menggunakan skala logaritmik (basis 10)
semilogx( ... ) sama dengan plot( ... ), kecuali sumbu-x
menggunakan skala logaritmik
loglog( ... ) sama dengan plot( ... ), tetapi sumbu-x dan
sumbu-y menggunakan skala logaritmik
polar(theta,rho,’string’)
membuat plot dalam koordinat polar dari sudut theta
(satuan radian) versus radius rho, dengan property
ditentukan oleh string
>> clear
>> x=linspace(0,5,500);
>> y1=exp(-x); y2=exp(-0.5*x); y3=exp(-0.25*x);
>> y4=exp(-0.1*x);
>> plot(x,y1,x,y2,x,y3,x,y4)
>> grid on
>> xlabel('sumbu-x'), ylabel('sumbu-y')
56 Grafik dan Suara
>> figure
>> semilogy(x,y1,x,y2,x,y3,x,y4)
>> grid on
>> xlabel('sumbu-x'), ylabel('sumbu-y')
>> title('Kurva y = exp(-Ax)')
>> legend('A=1','A=0.5','A=0.25','A=0.1')
>> figure
>> t=0:0.05:10;
Grafik dan Suara 57
>> sinus=sin(2*pi*0.25*t);
>> cosinus=cos(2*pi*0.25*t);
>> kotak=square(2*pi*0.25*t);
>> gigi=sawtooth(2*pi*0.25*t);
>> subplot(2,2,1);
>> plot(t,sinus), title('sinus 1/4 Hz')
>> subplot(2,2,2);
>> plot(t,cosinus), title('cosinus 1/4 Hz')
>> subplot(2,2,3);
>> plot(t,kotak), title('kotak 1/4 Hz')
>> subplot(2,2,4);
>> plot(t,gigi), title('gigi gergaji 1/4 Hz')
ρ = sin2(3θ)
>> figure
>> theta=linspace(0,2*pi,500);
>> rho=(cos(theta.*3)).^2;
>> polar(theta,rho);
Dalam subbab ini akan dibahas tiga macam plot 3-dimensi: plot
garis, plot permukaan (surface), dan plot kontur.
Mari kita mulai dengan plot garis di dalam ruang 3-dimensi. Ini
mirip dengan plot 2-dimensi, tetapi kali ini kita gunakan command
plot3( ... ), dan dibutuhkan vektor z, untuk dimensi ketiga.
>> t=0:0.1:25;
>> X=sin(t); Y=cos(t); Z=0.5*t;
>> plot3(X,Y,Z)
>> xlabel(‘sumbu X’); ylabel(‘sumbu Y’);
>> zlabel(‘sumbu Z’);
>> title (‘Helix’);
60 Grafik dan Suara
Caranya ialah:
1) Definisikan batas-batas nilai x dan y yang akan diplot
2) Gunakan command meshgrid untuk “mengisi” bidang-XY
dengan jalinan titik
3) Hitunglah fungsi 3-dimensi untuk jalinan titik tersebut
4) Buatlah plot dengan command mesh atau surf.
Sebagai contoh:
>> surf(X,Y,Z);
Grafik dan Suara 61
Amatilah perbedaan hasil antara mesh dan surf ! Anda juga bisa
menambahkan “label” dan “title” seperti plot pada umumnya.
sin (r )
z= , di mana r = x2 + y2 .
r
>> x = linspace(-10,10,40); y = x;
>> [X,Y] = meshgrid(x,y);
>> R = sqrt(X.^2+Y.^2);
>> Z = sin(R)./(R+eps);
>> surf(X,Y,Z);
62 Grafik dan Suara
Tabel 5. 5
contour(X,Y,Z) menggambar kontur dari nilai di Z dengan 10
level. Elemen Z diterjemahkan sebagai level-
level di atas bidang (x,y)
C = contour(X,Y,Z) menghitung matriks kontur C
contour(X,Y,Z,n) menggambar kontur dengan n level
contour( ... , ‘string’) menggambar kontur dengan property yang
ditentukan oleh string (lihat Tabel 5.3)
clabel(C) menuliskan angka pada garis-garis kontur
untuk menunjukkan level
meshc(X,Y,Z) menggambar permukaan seperti pada
command mesh, dan juga memplot kontur
pada dasar grafik.
Grafik dan Suara 63
5.4 Suara
[x,Fs] = wavread(‘nama_file’)
membaca file WAV dan menyimpannya dalam vektor x,
serta mengembalikan frekuensi sampling Fs dari file
tersebut. Command ini juga bisa membaca file WAV
multi kanal
wavwrite(x,Fs,’nama_file’)
menuliskan file WAV dari vektor x dengan frekuensi
sampling Fs
sound(x,Fs)
menyuarakan vektor x dengan frekuensi sampling Fs
soundsc(x,Fs)
sama seperti sintaks sebelumnya, namun vektor x terlebih
dahulu diskalakan pada selang –1 ≤ x ≤ +1
Soal Latihan
M-FILE DAN
PEMROGRAMAN MATLAB
Menu
Ikon editing
Direktori yang
sedang aktif
>> clear
>> rata_rata
hasil =
150
>> whos
Name Size Bytes Class
Perhatikan bahwa:
• Di dalam M-file, setiap command diakhiri dengan titik-koma
supaya hasil perhitungan di tiap baris tidak ditampilkan di
command window. Kecuali pada hasil perhitungan yang ingin
kita tampilkan, tidak diakhiri titik-koma.
• Variabel yang didefinisikan di dalam M-file akan disimpan
oleh MATLAB ketika M-file telah dieksekusi.
% Menghitung keliling
Keliling = Sisi_A + Sisi_B + Sisi_C
>> segi3
Sisi_C =
5
Luas =
6
Keliling =
12
% Menghitung keliling
Kll = Sisi_A + Sisi_B + Sisi_C;
>> clear
>> [Hyp,Area,Circum]=segitiga(12,16)
Hyp =
20
Area =
96
Circum =
48
Dari contoh sederhana tersebut, ada beberapa hal yang perlu kita
perhatikan:
• Dalam fungsi segitiga, terdapat dua argumen input (Sisi_A,
Sisi_B), dan tiga argumen output (Sisi_C, Luas, Kll).
• Ketika dipanggil di command window, kita bisa menggunakan
nama argumen input/output yang berbeda dengan di M-file,
namun urutannya tidak berubah. Di dalam contoh, argumen
Sisi_A dan Sisi_B kita isi dengan bilangan, sementara
argumen Sisi_C, Luas, dan Keliling kita panggil dengan Hyp,
Area, dan Circum.
M-file dan Pemrograman MATLAB 73
>> whos
Name Size Bytes Class
% Menghitung kombinasi
kombinasi = factorial(n)/factorial(r)/factorial(n-r);
% Menampilkan keluaran
disp(‘Jumlah kombinasi yang ada = ‘,kombinasi);
>> hit_komb
Menghitung Kombinasi
---------------------
Berapa jumlah mahasiswa yang ada? : 8
Berapa jumlah personel satu team? : 5
Jumlah kombinasi yang ada =
56
if kondisi
Command yang dijalankan jika kondisi dipenuhi
end
if kondisi
Command yang dijalankan jika kondisi dipenuhi
else
Dijalankan jika kondisi tidak dipenuhi
end
if kondisi1
Command yang dijalankan jika kondisi1 dipenuhi
elseif kondisi2
Dijalankan jika kondisi2 dipenuhi
elseif kondisi3
Dijalankan jika kondisi3 dipenuhi
elseif ...
...dst...
else
Dijalankan jika kondisi manapun tidak dipenuhi
end
if kondisi1
command1
if kondisiA
commandA
else
commandB
end
else
command2
end
switch nama_variabel
case{kondisi1,kondisi2,...}
Dijalankan jika kondisi1 atau kondisi2 dst...
dipenuhi
case{kondisiA,kondisiB,...}
Dijalankan jika kondisiA atau kondisiB dst...
dipenuhi
case{kondisiX,kondisiY,...}
Dijalankan jika kondisiX atau kondisiY dst...
dipenuhi
case{...}
...dst...
default
Dijalankan jika kondisi manapun tidak dipenuhi
end
for k = 30:3:100
k
end
Hasilnya ialah:
M-file dan Pemrograman MATLAB 77
k =
30
k =
33
k =
...
k =
99
Vektor=[];
for k = -10:10 %dalam hal ini inkremen = 1
Vektor = [Vektor k];
end
Vektor
Menghasilkan:
Vektor =
Columns 1 through 13
-10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2
Columns 14 through 21
3 4 5 6 7 8 9 10
y = Ax2
figure;
x = linspace(-4,4,500); % mendefinisikan nilai x
A = 0.5:0.5:2; % mendefinisikan vektor A
for i = 1:length(A)
y = A(i)* x.^2;
plot(x,y);
hold on;
end
grid on;
78 M-file dan Pemrograman MATLAB
Menghasilkan:
while kondisi
Command untuk dijalankan jika kondisi dipenuhi
end %keluar dari loop jika kondisi tidak dipenuhi
y = B x1/2
figure;
x=linspace(0,4,500);
A=0.5:0.5:2;
i=1;
while i <= length(A)
y = A(i)* x.^(1/2);
plot(x,y); hold on;
i=i+1;
end
grid on;
Menghasilkan:
Ketika kita sudah berada dalam suatu loop, kita bisa keluar dengan
break tanpa menunggu nilai_akhir tercapai, atau tanpa menunggu
kondisi loop tidak dipenuhi lagi. Sementara, return digunakan
untuk keluar dari fungsi yang sedang berjalan. Berikut ini
gambarannya dalam kasus penentuan apakah suatu bilangan
bersifat prima atau tidak.
for i = 2:floor(N/2)
if rem(N,i) == 0
prima=0;
% ternyata N tidak prima,
% flag 'prima' kita set jadi nol
break; % Keluar dari loop
end
end
% Menampilkan hasil:
if prima == 0
disp(N), disp('bukan bilangan prima!');
else
disp(N), disp('adalah bilangan prima!');
end
>> apa_prima(37)
37
adalah bilangan prima!
>> apa_prima(27)
27
bukan bilangan prima!
>> apa_prima(-27)
Masukan harus bilangan bulat positif
function y = hit_taknol(x)
% x : vektor masukan
% y : vektor berisi bilangan tak nol dari x
y = [];
for i=1:length(x)
if x(i)==0
continue
else
y=[y x(i)];
end
end
>> y = hit_taknol(x)
y =
2.0000 -3.6000 3.0000 -0.6000 10.0000
Seperti yang kita lihat pada subbab 6.5 Control Statement, kita
harus bisa menuliskan kondisi dalam bahasa MATLAB untuk
menciptakan percabangan program ataupun loop. Untuk keperluan
ini kita mungkin harus membandingkan dua variabel (sama atau
tidak, lebih besar atau lebih kecilkah?), mengevaluasi apakah suatu
variabel memenuhi satu dari sejumlah syarat, dan sebagainya.
Tabel 6. 1
< > lebih kecil, lebih besar
<= >= lebih kecil atau sama dengan, lebih besar atau
sama dengan
== ~= sama dengan, tidak sama dengan
Tabel 6. 2
and(A,B) atau A & B operasi logika AND antara A dan B
or(A,B) atau A | B operasi logika OR
xor(A,B) operasi logika XOR
not(A) atau ~A operasi logika NOT pada A
Tabel 6. 3
A B A&B A|B xor(A,B) ~A
nol nol 0 0 0 1
nol bukan nol 0 1 1 1
bukan nol nol 0 1 1 0
bukan nol bukan nol 1 1 0 0
>> D=A|B|C
D =
1 1 0 1 1
>> E = xor(~A,B)
E =
1 0 1 0 1
if thn<1900 | thn>2500
disp('Tahun yang valid: 1900 - 2500');
hasil=[];
return
end
84 M-file dan Pemrograman MATLAB
if sum(sum(thn<1900 | thn>2500))~=0
disp('Tahun yang valid: 1900 - 2500');
hasil=[];
return
end
M-file dan Pemrograman MATLAB 85
>> iskabisat(1980:1990)
ans =
1 0 0 0 1 0 0 0 1 0 0
86 M-file dan Pemrograman MATLAB
Soal Latihan
ANALISIS DATA
Tabel 7. 1
max(x) menghitung nilai maksimum dari elemen
vektor x. Jika x bernilai kompleks maka
dihitung max(abs(x))
max(A) menghitung nilai maksimum dari setiap kolom
di matriks A; hasilnya berupa vektor 1×n
max(max(A)) menghitung nilai maksimum dari elemen
matriks A
max(A,B) menghitung matriks berukuran sama dengan A
dan B dengan elemen berisi nilai terbesar di
antara elemen A dan B pada posisi yang sama
Data IP mahasiswa
Nama IP sem-1 IP sem-2 IP sem-3
Agus 3,3 2,8 3,3
Dedy 3,9 4,0 3,8
Tanjung 3,8 3,5 2,9
Vijay 2,9 3,2 3,1
>> x=[175 177 173 165 160 170 174 177 168 170];
>> A=[3.3 2.8 3.3;
3.9 4.0 3.8;
3.8 3.5 2.9;
2.9 3.2 3.1];
>> max(x)
ans =
177
>> max(max(A))
ans =
4
Tabel 7. 2
sum(x) menjumlahkan nilai elemen vektor x
sum(A) menjumlahkan nilai elemen dari setiap kolom
di matriks A; hasilnya berupa vektor 1×n
sum(sum(A)) menjumlahkan nilai semua elemen matriks A
Tabel 7. 3
prod(x) mengalikan nilai elemen vektor x
prod(A) mengalikan nilai elemen dari setiap kolom di
matriks A; hasilnya berupa vektor 1×n
prod(prod(A)) mengalikan nilai semua elemen matriks A
7.3 Statistika
Tabel 7. 4
mean(x) menghitung rata-rata aritmatik dari elemen
vektor x
mean(A) menghitung rata-rata aritmatik dari elemen
setiap kolom di matriks A; hasilnya berupa
vektor 1×n
Sebagai contoh, kita gunakan kembali data tinggi badan dan nilai
IP mahasiswa seperti sebelumnya.
>> x=[175 177 173 165 160 170 174 177 168 170];
>> A=[3.3 2.8 3.3;
3.9 4.0 3.8;
3.8 3.5 2.9;
2.9 3.2 3.1];
7.4 Sortir
Tabel 7. 5
sort(x) menghitung vektor dengan elemen x telah
tersortir secara ascending (dari kecil ke
besar). Jika x bernilai kompleks maka
dihitung sort(abs(x))
[y,ind] = sort(x) menghitung vektor y berisi sortiran elemen x,
dan vektor ind berisi indeks sehingga
y = x(ind)
[B,Ind] = sort(A) menghitung matriks B berisi sortiran kolom-
kolom matriks A. Setiap kolom pada matriks
Ind berisi indeks seperti halnya kasus vektor
di atas
Mari kita coba command tersebut pada data tinggi badan dan IP
mahasiswa.
>> sort(x)
ans =
160 165 168 170 170 173 174 175 177 177
>> [y,ind]=sort(x)
y =
160 165 168 170 170 173 174 175 177 177
ind =
5 4 9 6 10 3 7 1 2 8
>> fliplr(sort(x))
ans =
177 177 175 174 173 170 170 168 165 160
>> sort(A)
ans =
2.9000 2.8000 2.9000
3.3000 3.2000 3.1000
3.8000 3.5000 3.3000
3.9000 4.0000 3.8000
>> flipud(sort(A))
ans =
3.9000 4.0000 3.8000
3.8000 3.5000 3.3000
3.3000 3.2000 3.1000
2.9000 2.8000 2.9000
>> [Y,IND]=sort(A)
Y =
2.9000 2.8000 2.9000
3.3000 3.2000 3.1000
3.8000 3.5000 3.3000
3.9000 4.0000 3.8000
IND =
4 1 3
1 4 4
3 3 1
2 2 2
Command fliplr dan flipud telah dibahas pada subbab 3.6 (Tabel
3.3).
7.5 Histogram
Tabel 7. 6
hist(x) memplot histogram dari data di x dalam 10
interval
hist(x,n) memplot histogram dari data di x dalam n
interval
hist(x,y) memplot histogram dari data di x dengan
interval yang dinyatakan oleh y. Elemen vektor
y harus terurut secara ascending.
Pada command hist, bar, dan stairs, data bisa juga disimpan untuk
penggunaan selanjutnya.
Tabel 7. 7 (lanjutan)
[m,y] = hist(x)
membuat histogram dengan 10 interval seragam antara
minimum x dan maximum x. Vektor y berisi 10 nilai antara
min(x) dan max(x) yang terpisah seragam; vektor m berisi
jumlah pada setiap interval. Histogram bisa diplot dengan
bar(y,m,’string’)
Analisis Data 95
Mari kita coba gunakan data tinggi badan yang ada. Pertama, kita
plot menjadi histogram dengan 10 interval.
>> x=[175 177 173 165 160 170 174 177 168 170];
>> hist(x); title(‘Histogram tinggi badan’);
>> xlabel(‘Interval tinggi badan’);
>> ylabel(‘frekuensi’);
Atau kita bisa juga memplot vektor x tersebut sebagai data diskrit.
>> stem(x)
Analisis Data 97
>> [m,y]=hist(x);
>> subplot(1,2,1); bar(y,m,’w’)
>> xlabel(‘Interval tinggi badan’)
>> ylabel(‘frekuensi’)
98 Analisis Data
Data tadi juga bisa kita plot sebagai diagram tangga berwarna
merah:
Gambar 7. 5
Tabel 7. 8
fft(x) menghitung “Transformasi Fourier Diskrit”
dengan metode FFT dari vektor x. Apabila x
berupa matriks, operasi akan dilakukan per
kolom
fft(x,n) menghitung FFT n-titik. Jika panjang x lebih
dari n maka sisanya akan diisi nol; jika panjang
x lebih dari n maka akan dipotong
ifft(X) menghitung invers-FFT dari X
ifft(X,n) menghitung invers-FFT n-titik
n −1
N − j 2π ( k −1)
X (k ) = ∑ x(n)e N
untuk 1 ≤ k ≤ N
n =1
n −1
N j 2π ( k −1)
x(n ) = ∑ X (k )e N
untuk 1 ≤ n ≤ N
n =1
>> clear;
>> Fs = 1000; % frekuensi sampling 1000Hz
>> t = 0:1/Fs:1.5; % durasi sinyal 1,5 detik
>> tone1 = 200;
>> tone2 = 300;
>> tone3 = 450; % 3 frekuensi tone dalam Hz
>> sinyal = cos(2*pi*tone1.*t) + ...
1/2*cos(2*pi*tone2.*t) + 1/3*sin(2*pi*tone3.*t);
>> S = fft(sinyal,Fs);
>> plot(abs(S));
>> xlabel(‘frekuensi (Hz)’); ylabel(‘magnitude’)
Soal Latihan
p( x ) = an x n + an −1 x n −1 + ... + a1 x + a0
dinyatakan sebagai:
p = ( an an-1 ... a1 a0 )
Tabel 8. 1
polyval(p,x) mengevaluasi polinonial p pada nilai x. x bisa
berupa skalar maupun vektor
poly(x) menghitung vektor sepanjang n+1 yang mewakili
suatu polinomial orde-n. Vektor x sepanjang n
berisi akar-akar dari polinom tersebut
roots(p) menghitung vektor berisi akar-akar dari
polinomial p
conv(p,q) menghitung produk (hasil perkalian) dari
polinomial p dan q. Bisa juga dianggap sebagai
konvolusi antara p dan q
[k,r] = membagi polinomial p dengan q. Hasil
deconv(p,q) pembagian disimpan dalam polinom k dan sisa
pembagian dalam polinom r. Bisa juga dianggap
sebagai dekonvolusi antara p dan q
polyder(p) menghitung vektor sepanjang n berisi turunan
pertama dari polinom p
g (x ) = 2 x 3 + 5 x − 1 h( x ) = 6 x 2 − 7
>> g = [2 0 5 –1];
>> h = [6 0 –7];
>> x = -3:3
x =
-3 -2 -1 0 1 2 3
nilai2 =
47 17 -1 -7 -1 17 47
>> p = conv(g,h)
p =
12 0 16 -6 -35 7
yang mewakili: p ( x ) = 12 x 5 + 16 x 3 − 6 x 2 − 35 x + 7
Turunan pertama dan kedua dari g(x) bisa kita hitung pula:
5 x − 6.4 9x x − 0.4
f (x ) = + −
(x − 1.3)2 + 0.002 x 3 + 0.03 (x − 0.92)2 + 0.005
bisa kita tuliskan pada editor M-file (lihat kembali subbab 6.1)
function y = f(x)
Untuk mencari nol dari fungsi f(x), sama saja dengan mencari
solusi dari f(x) = 0. Nol dari suatu fungsi satu variabel bisa dicari
dengan command fzero. Sementara untuk polinomial gunakanlah
roots seperti pada subbab 8.1. Algoritma yang digunakan pada
fzero bersifat iteratif, dan membutuhkan tebakan awal (initial
guess) yang tidak terlalu jauh dari nol fungsi yang dicari.
Tabel 8. 2
fplot(‘fcn’,lim,’string’)
memplot fungsi fcn pada interval lim dengan property yang
didefinisikan oleh string (lihat Tabel 5.3).
fcn berupa M-file yang berisi definisi fungsi.
lim berupa vektor 2 elemen berisi batas interval xmin dan xmax.
fzero(‘fcn’,x0)
menghitung nol dari fungsi fcn dengan nilai tebakan awal x0.
fzero(‘fcn’,x0,tol)
menghitung nol dari fungsi fcn dengan nilai tebakan awal x0.
tol menentukan toleransi error dari perhitungan pendekatan
yang diinginkan
110 Analisis Fungsi dan Interpolasi
s ( x ) = cos 2 x − 5 x + 2 = 0
function s = cosm(x)
s = cos(2.*x) – 5.*x + 2;
f ( xmin ) = min f (x )
x
Metode iteratif ini membutuhkan tebakan awal x0. Dari nilai awal
ini akan diperoleh nilai berikutnya, x1, yang diharapkan semakin
mendekati xmin. Seberapa dekat x1 ke xmin tergantung pada metode
numerik yang digunakan. Proses iterasi ini berlanjut hingga nilai
112 Analisis Fungsi dan Interpolasi
Tabel 8. 3
fmin(‘fcn’,x1,x2)
menghitung minimum dari fungsi satu variabel fcn pada
interval x1 < x < x2. Jika minimum-lokal tidak ditemukan,
hasilnya ialah nilai x terkecil pada interval tadi.
fminbnd(‘fcn’,x1,x2)
sama dengan command fmin, tetapi untuk MATLAB versi
terbaru.
fmins(‘fcn’,x0)
menghitung minimum dari fungsi multi variabel fcn dengan
tebakan awal berupa vektor x0.
fminsearch(‘fcn’,x0)
sama dengan command fmins, tetapi untuk MATLAB versi
terbaru.
Untuk fungsi yang lebih rumit, misalkan fungsi f(x) pada subbab
8.2, kita bisa temukan minimumnya pada interval 0 ≤ x ≤ 2.
function y = minusf(x)
y = -f(x);
x1 x 2
g ( x1 , x 2 ) = x12 + x 22 − − sin x1
4
function g = gx1x2(x)
Dari gambar tersebut, kita coba tebakan awal pada titik (1,0):
8.4 Interpolasi
Tabel 8. 4
yy = interp1(x,y,xx)
menghitung vektor yy yang panjangnya sama dengan vektor
xx. Dalam hal ini yy fungsi dari xx merupakan interpolasi
dari y fungsi dari x. Vektor x harus diurutkan secara
ascending / descending
interp1(x,y,xx,’string’)
menghitung interpolasi 1-dimensi; string menunjukkan
metode yang digunakan, yaitu:
linear interpolasi linier
nearest interpolasi “nearest-neighbor”
spline interpolasi “cubic-spline”
cubic interpolasi kubik, membutuhkan jarak pisah
seragam pada x
Apabila string tidak dituliskan, maka digunakan interpolasi
linier. Untuk semua metode tersebut, x harus diurutkan
ascending / descending.
interp1q(x,y,xx)
bekerja seperti interp1 namun lebih cepat untuk titik-titik
data yang terpisah tak seragam. x, y, dan xx harus berupa
vektor kolom.
>> tt = linspace(0,12,100);
>> PP1 = interp1(t,pres,tt,’*linear’);
>> PP2 = interp1(t,pres,tt,’*cubic’);
>> PP3 = interp1q(t’,pres’,tt’);
>> figure;
>> plot(t,pres,’k*’,tt,PP1,’k-‘,tt,PP2,’k:’, ...
tt,PP3,’k--’)
>> grid on;
>> xlabel(‘waktu (jam)’), ylabel(‘Pressure’)
>> legend(‘data’,’linier’,’kubik’,’interp1q’)
>> title(‘Perbandingan metode interpolasi’
116 Analisis Fungsi dan Interpolasi
8.5 Curve-Fitting
Tabel 8. 5
polyfit(x,y,n)
menghitung vektor berisi koefisien polinomial orde-n yang
mendekati titik-titik data di ( xi , yi )
[p,E] = polyfit(x,y,n)
menghitung vektor polinomial p dan matriks E yang bisa
digunakan oleh command polyval untuk mengestimasi error.
>> p3 = polyfit(t,pres,3)
p3 =
0.5857 -6.9967 -38.3200 727.0393
>> p4 = polyfit(t,pres,4);
p4 =
-0.3022 7.8645 -60.4717 77.6181 704.1170
>> p5 = polyfit(t,pres,5);
p5 =
1.0e+003 *
0.0006 -0.0183 0.1908 -0.8055 1.0783 0.6648
>> tt = linspace(0,12,100);
>> kurva_p3 = polyval(p3,tt);
>> kurva_p4 = polyval(p4,tt);
>> kurva_p5 = polyval(p5,tt);
>> figure;
>> plot(t,pres,’ko’,tt,kurva_p3,’k-‘, ...
tt,kurva_p4,’k:’,tt,kurva_p5,’k--’)
>> grid on;
>> xlabel(‘waktu (jam)’), ylabel(‘Pressure’)
>> legend(‘data’,’orde-3’,’orde-4’,’orde-5’)
>> title(‘Perbandingan pendekatan polinomial’)
118 Analisis Fungsi dan Interpolasi
>> funtool
Figure 3 berfungsi
sebagai papan kunci
Tabel 8. 6
df/dx df ( x )
menghitung turunan f(x) terhadap x:
dx
menghitung integral tak tentu dari f(x)
int f
terhadap x: ∫ f (x )dx
finv menghitung fungsi invers dari f(x)
Soal Latihan
PERHITUNGAN INTEGRAL
b
q = ∫ f ( x )dx
a
Tabel 9. 1
trapz(x,y)
menghitung integral dari y sebagai fungsi dari x. Vektor x
dan y panjangnya harus sama. Nilai elemen dalam x
sebaiknya disortir
trapz(x,A)
menghitung integral dari setiap kolom di A sebagai fungsi
dari x; hasilnya berupa vektor baris berisi hasil integrasi.
Jumlah kolom A harus sama dengan panjang x.
quad(‘fcn’,a,b)
menghitung aproksimasi dari integral fungsi fcn pada interval
a ≤ x ≤ b. Fungsi fcn harus didefinisikan terlebih dahulu
dalam M-file.
quad(‘fcn’,a,b,tol)
menghitung aproksimasi integral dari fcn dengan toleransi
kesalahan sebesar tol.
quad(‘fcn’,a,b,tol,trace,pic)
menghitung aproksimasi integral dari fcn dengan toleransi
tol. Jika trace tidak nol, maka grafik yang mengilustrasikan
integral akan diplot. Hasil integrasi dievaluasi pada pic. Kita
bisa memberi nilai nol pada tol dan trace dengan matriks
kosong [ ].
quad8( ... )
sama dengan command quad, tetapi menghitung dengan
akurasi yang lebih tinggi.
quadl( ... )
sama dengan command quad8( ... ), namun untuk MATLAB
versi terbaru.
∫ e dx
3
−x
function y = myfun(x)
y = exp(-x.^3);
int_1 =
0.89309707589214
int_2 =
0.89295225387894
∫∫
3
−x −y
e dydx
0 0
function z = fungsiku(x,y)
z = exp(-x.^3-y);
Tabel 9. 2
dblquad(‘fcn’,xmin,xmax,ymin,ymax,tol)
menghitung integral lipat-2 untuk fungsi dua variabel fcn
pada area segiempat xmin ≤ x ≤ xmax, ymin ≤ y ≤ ymax.
2 2 2
∫∫∫
−2 −2 −2
x 2 + y 2 + z 2 dzdydx
function w = funxyz(x,y,z)
>> int_w = 0;
>> for i = 1:length(x)-1
X = (x(i)+x(i+1))/2;
dX = x(i+1)-x(i);
for j = 1:length(y)-1
Y = (y(j)+y(j+1))/2;
dY = y(j+1)-y(j);
for k = 1:length(z)-1
Z = (z(k)+z(k+1))/2;
dZ = z(k+1)-z(k);
int_w = int_w + funxyz(X,Y,Z)*dX*dY*dZ;
end
end
end
>> int_w
int_w =
122.9346
Tabel 9. 3
triplequad(‘fcn’,xmin,xmax,ymin,ymax,zmin,zmax,tol)
menghitung integral lipat-3 untuk fungsi tiga variabel fcn
pada area balok xmin ≤ x ≤ xmax, ymin ≤ y ≤ ymax, zmin ≤
z ≤ zmax, dengan toleransi kesalahan sebesar tol.
Integral_tripel =
122.9577
Perhitungan Integral 129
Soal Latihan
∫ ∫ 10 − 2 x − y 2 dydx
2
− 4 −5
www.mathworks.com/support
www.math.hmc.edu/calculus/tutorials/complex
LAMPIRAN 1
REFERENSI CEPAT
Berikut ini ringkasan command, sebagian telah dijelaskan pada isi
buku, dan selebihnya bisa dieksplorasi sendiri dengan bantuan
help.
Variabel
who, whos daftar variabel yang aktif
clear membersihkan variabel
size, length ukuran matriks dan vektor
exist eksistensi
format mengatur format keluaran
134 Referensi Cepat
Pencatat waktu
flops jumlah flop (operasi floating point)
tic, toc, etime menghidupkan dan mematikan pencatat waktu
clock, date waktu dan tanggal saat ini
cputime waktu sejak MATLAB dimulai
Fungsi Matematik
Fungsi elementer:
abs nilai absolut
sign fungsi signum
sqrt akar kuadrat
pow2 kuadrat
exp fungsi eksponensial
log, log2, log10 fungsi logaritmik
sin, cos, tan, cot, sec, csc fungsi trigonometrik
asin, acos, atan2, atan, inversi fungsi trigonometrik
acot, asec, acsc
sinh, cosh, tanh, coth, fungsi hiperbolik dan invers-hiperbolik
asinh, acosh, atanh, acoth,
sech, csch, asech, acsch
Transformasi koordinat:
cart2pol, pol2cart kartesian dan polar
cart2sph, sph2cart kartesian dan bola
Referensi Cepat 135
Bilangan Kompleks
real, imag komponen riil dan imajiner
conj konjugasi
angle sudut fase
unwrap mengatur kembali argumen sudut
cplxpair pasangan kompleks
Operasi Matriks
+ − penjumlahan dan pengurangan
* .* cross, dot, kron perkalian
/ \ ./ .\ pembagian dan pembagian terbalik
‘ .’ transposisi, konjugasi
^ .^ pangkat
>, <, >=, <=, ==, ~= operator pembandingan
and, or, not, operator logika
&, |, ~, xor
136 Referensi Cepat
Fungsi Matriks
det, trace, rank determinan, trace, dan rank
inv, pinv invers dan pseudo-invers
orth, null basic subspaces
subspace sudut antara subspaces
expm, logm, sqrtm, funm, fungsi-fungsi matriks
polyvalm
size, length ukuran dan panjang matriks / vektor
any, all, isnan, isinf, isieee, fungsi logika
issparse, isstr, isempty, finite
Grafik
Grafik 2-D dan 3-D:
plot plot grafik 2-dimensi
plot3 plot garis dalam 3-dimensi
fplot plot fungsi
subplot membagi figure yang ada menjadi subplot
errorbar plot grafik dengan error-bar
comet, comet3 plot beranimasi, 2-D, 3-D
polar plot dalam koordinat polar
semilogx, semilogy, plot logaritmik
loglog
quiver, feather, grafik bilangan kompleks
compass, rose
stem plot data diskrit
hist, bar, stairs plot histogram, diagram batang dan tangga
Mengatur grafik:
figure menciptakan atau memunculkan suatu figure
clf membersihkan figure
hold menahan plot yang ada agar tidak hilang tertimpa
plot baru
subplot membagi figure yang ada menjadi subplot
clc membersihkan tampilan command window
Referensi Cepat 137
Suara
sound membunyikan suara
wavwrite, wavread menulis dan membaca file .WAV
Pemrograman
Conditional statements:
if kondisi if kondisi if kondisi_1
command command_A command_1
end else elseif kondisi_2
command_B command_2
end elseif kondisi_3
command_3
...
end
138 Referensi Cepat
switch nama_variabel
case { kondisi_1, kondisi_2, ... }
command_1
case { kondisi_A, kondisi_B, ... }
command_2
case { kondisi_X, kondisi_Y, ... }
command_3
...
default
command
end
Loop:
for variabel = awal : inkremen : akhir
command
end
while kondisi
command
end
Lain-lain:
% penanda komentar
break keluar dari suatu loop
return keluar dari program
continue melanjutkan loop tanpa menjalankan command di
bawahnya
global mendeklarasikan variabel global
nargin jumlah argumen input
nargout jumlah argumen output
Integral
trapz, quad, quad8, menghitung integral terbatas
quadl
dblquad menghitung integral terbatas lipat-2
triplequad menghitung integral terbatas lipat-3
LAMPIRAN 2
Im
z = a + ib
b
Re
a
Operasi Dasar
(a + ib ) + (c + id ) = (a + c ) + i(b + d )
142 Pengenalan Bilangan Kompleks
(a + ib ) − (c + id ) = (a − c ) + i(b − d )
(a + ib )(c + id ) = (ac − bd ) + i(bc + ad )
a + ib a + ib c − id ac + bd bc − ad
= = 2 +i 2
c + id c + id c − id c + d 2
c +d2
Im
z = c + id
d
Re
c
-d
z* = c - id
Contoh:
(2 + 3i )(2 − 3i ) = 4 − 6i + 6i − 9i 2 = 4 + 9 = 13
2 + 3i = 2 − 3i = 4 + 9 = 13
Pengenalan Bilangan Kompleks 143
Bentuk Polar
Im
z = a + ib
b
r
θ Re
a
Contoh:
eiπ = cos π + i sin π = −1
π π
3eiπ / 2 = 3 cos + i sin = 3i
2 2
144 Pengenalan Bilangan Kompleks
π π
− 2eiπ / 6 = −2 cos + i sin = − 3 − i
6 6
( )(
Jika z = re iθ maka z* = re − iθ , dan juga zz* = re iθ re − iθ = r 2 )
Contoh:
Untuk menghitung (1 + i ) , kita terlebih dahulu bisa menuliskan
8
Persamaan
zn = 1
(e )
iθ n
= einθ , dengan persamaan Euler, menghasilkan formula
de Moivre:
(cosθ + i sin θ )n = cos nθ + i sin nθ
Pengenalan Bilangan Kompleks 145
Contoh:
3
Kita akan menghitung 1.
3
(
1 = e i 2πk )
1/ 3
= e i 2πk / 3 k = -1, 0, 1
untuk k = -1 diperoleh:
2π 2π 1 1
e −i 2π / 3 = cos − i sin = − −i 3
3 3 2 2
untuk k = 0 diperoleh:
e0 = 1
untuk k = 1 diperoleh:
2π 2π 1 1
e i 2π / 3 = cos + i sin = − +i 3
3 3 2 2
Im
1 1
− +i 3
2 2
120o Re
120o
120o 1
1 1
− −i 3
2 2
Im
z4
z5
72o Re
z3
z1
z2
LAMPIRAN 3
Bab 2:
1. >> 12/3.5, (3+5/4)^2
ans =
3.4286
ans =
18.0625
>> Z = D^(A/B) + C
Z =
134.4340
5. >> clear
>> p = 9 + 16*i; q = -9 + 16*i;
>> r=p*q, s=p/q, p-r
r =
-337
s =
0.5193 - 0.8546i
ans =
3.4600e+002 +1.6000e+001i
Bab 3:
>> vektor_2=[-5;
-15;
-40]
vektor_2 =
-5
-15
-40
>> matriks=[1 3 5 0;
3 1 3 5;
5 3 1 3;
0 5 3 1]
matriks =
1 3 5 0
3 1 3 5
5 3 1 3
0 5 3 1
>> C=[A B]
C =
4 8 1 1
2 4 1 -1
150 Jawaban Soal Latihan
4. >> 5.*eye(4)
ans =
5 0 0 0
0 5 0 0
0 0 5 0
0 0 0 5
5 -5 5 -5 5
>> M(1,:)
ans =
1 5 10 15 20
>> M(:,3)
ans =
10
4
3
8
5
>> M(3:5,2:4)
ans =
0 3 6
16 8 4
-5 5 -5
7. >> x = -10:10
>> y = 7.5:-0.5:0
>> z = 1:3:100
8. >> N = M(:,1:4)
N =
1 5 10 15
1 2 4 8
-3 0 3 6
32 16 8 4
5 -5 5 -5
>> fliplr(N)
>> flipud(N)
>> reshape(N,10,2)
>> reshape(N,4,5)
152 Jawaban Soal Latihan
Bab 4:
Bab 5:
>> figure;
>> plot(x,y1,'k-',x,y2,'k--',x,y3,'k:',x,y4,'r-');
>> grid on; % membuat plot
>> xlabel(‘sumbu-X’), ylabel(‘sumbu-Y’)
>> legend(‘Y1’,’Y2’,’Y3’,’Y4’)
Jawaban Soal Latihan 155
3. >> clear
>> f=linspace(100,1e5,500); % finisikan frekuensi
>> F=4e3; % frekuensi cut-off
>> Vo_Vi = 1./(1+j*2*pi.*f./F); % menghitung Vo/Vi
>> figure;
>> subplot(2,1,1); semilogx(f,abs(Vo_Vi));
>> % plot respon amplituda
>> grid on; ylabel(‘|Vo/Vi|’);
4. >> phi=linspace(-pi/2,pi/2,100);
>> % definisikan rentang sudut phi
>> U = cos(phi).^3; % menghitung U
>> figure; polar(phi,U); grid on;
Jawaban Soal Latihan 157
5. >> t = linspace(0,2*pi,100);
>> % definisikan parameter t
>> x = 1 + cos(t); y = 2 + sin(t); z = 1 –
cos(2.*t);
>> % hitung x,y,z
6. >> clear;
>> x = linspace(-5,5,25); y=x;
>> % definisikan batas x dan y
>> [X,Y]=meshgrid(x,y);
>> % buat jalinan titik pada bidang xy
>> Z = X.^2 – Y.^2; % hitung z
7. >> clear;
>> x = linspace(0,4*pi,100); y=x;
>> [X,Y]=meshgrid(x,y);
>> Z = cos(X).*sin(2.*Y);
>> figure; contour(x,y,Z);
>> sound(suara,Fs);
>> wavwrite(suara,Fs,‘file_suara.wav’)
Bab 6:
P=[1 1];
for i=3:x
for j=1:i-2
q(j) = P(j) + P(j+1);
end
P = [1 q 1];
disp(P) % tampilkan level-3 dst..
end
if (thni<1900) | (thnf<1900)
% keluar dari program jika tahun < 1900
disp('Tahun harus >= 1900')
return
elseif (blni<1) | (blnf<1) | (tgli<1) | (tglf<1)
% keluar jika bulan/tanggal < 1
disp('Bulan dan tanggal harus positif')
return
end
if (tgli>tabel_bulan(blni+1)+iskabisat(thni)) | ...
(tglf > tabel_bulan(blnf+1) + iskabisat(thnf))
disp('Tanggal terlalu besar')
return
end
jml_hari=0;
if thni~=thnf
for i=thni:thnf-1
jml_hari = jml_hari + 365 + iskabisat(i);
end
end
for i=1:blni
jml_hari = jml_hari - tabel_bulan(i);
if i==3
jml_hari = jml_hari - iskabisat(thni);
end
end
162 Jawaban Soal Latihan
for i=1:blnf
jml_hari = jml_hari + tabel_bulan(i);
if i==3
jml_hari = jml_hari + iskabisat(thnf);
end
end
Bab 7:
g) >> [m,y]=hist(pend,6);
>> figure; bar(y,m,’r’)
>> xlabel('Pendudukan'), ylabel('Frekuensi')
164 Jawaban Soal Latihan
f) >> TT = reshape(T,1,24);
% bentuk ulang matriks T menjadi vektor TT
>> avg_T = mean(TT), med_T = median(TT)
avg_T =
29.2042
med_T =
29.5500
Bab 8:
2. >> x = -1.5:0.3:1.5;
>> eval_p = polyval(p,x)
eval_p =
Columns 1 through 6
1.2500 0.4400 -0.1900 -0.6400 -0.9100 -1.0000
Columns 7 through 11
-0.9100 -0.6400 -0.1900 0.4400 1.2500
3. >> x = linspace(-1.5,1.5,100);
>> yp=polyval(p,x); yq=polyval(q,x);
>> yr=polyval(r,x);
y = (x-1)./(x.^2+1);
y = -1.* fungsi_Fx(x);
z = sin(x(1)).*sin(x(2)) + sin(x(1).*x(2));
z = -fungsi_Gxy(x);
>> t = linspace(0,20,100);
>> F1 = interp1(waktu,frek,t,’*linear’);
>> F2 = interp1(waktu,frek,t,’*nearest’);
170 Jawaban Soal Latihan
>> figure;
>> plot(waktu,frek,’ko’,t,F1,’k-‘,t,F2,’k:’);
>> xlabel(‘waktu’), ylabel(‘frekuensi’)
>> legend(‘data’,’interp linier’,’interp nearest’)
>> figure;
>> plot(waktu,frek,’ko’,t,kurva_M,’k-‘, ...
t,kurva_N,’k:’,t,kurva_K,’k--’)
>> xlabel(‘waktu’), ylabel(‘frekuensi’)
>> legend(‘data’,’M(waktu)’,’N(waktu)’,’K(waktu)’)
172 Jawaban Soal Latihan
Bab 9:
y = sqrt(100 – x.^2);
z = 10 – 2.*x.^2 – y.^2;