Si
BAB 1
Pendahuluan
Stanford pada tahun 1970. software ini pertama kali memang digunakan
untuk keperluan analisis numerik, aljabar linier dan teori tentang matriks.
Saat ini, kemampuan dan fitur yang dimiliki oleh Matlab sudah jauh lebih
Perhitungan Matematika
Komputasi numerik
bilangan kompleks, akar kuadrat dan logaritma. Nah, Matlab mirip dengan
Dokumentasi Matlab
Matlab memberikan kemudahan bagi para pengguna untuk
Menu dari menu Help. Untuk bantuan tentang Matlab sendiri, dibagi atas
matematis dan statistik. Isi dalam bantuan ini dicakup antara lain:
mengeplot grafik dari data yang kita miliki. Yang termasuk dalam
berbasis Matlab.
bagian online-help yan dapat diakses dengan cara pilih Menu -> MATLAB
Desktop Matlab
Ketika kita pertama kali menjalankan Matlab, maka tampilan
pertama yang kita temui ini dikenal sebagai Desktop Matlab. Dalam
7
5 3
6 4 1
2
10 8
11 9
Keterangan
1. tool untuk browse direktori aktif. Dari tool ini kita dapat mengeset
inilah yang siap untuk diakses file didalamnya atau tempat yang siap
2. Tool yang menampilkan direktori aktif. Dari tool ini kita dapat
ini kita dapat memasukkan perintah Matlab. Disamping itu kita juga
Browser.
9. Tool untuk melihat perintah apa saja yang pernah kita jalankan
10. Tool untuk mendisplay isi file apa saja yang terdapat di direktori
aktif.
11. Tool untuk mendisplay nama variabel, ukuran, bytes dan classnya.
tanda cek yang ada pada submenu command hstory. Lihat gambar 3.
BAB 2
Dasar-Dasar Matlab
jendela yang yang ada pada desktop Matlab adalah command window. Di
>> x=6;
>> y=7;
>> z=x*y
z=
42
ditulis dalam Matlab bekerja. Perlu diketahui bahwa Matlab secara teknis
terhadap suatu angka tertentu, maka suatu ruangan telah diset untuk
kotak yang berada dalam bank tersebut diberi nama simbolik tertentu.
>> gaya=80
dalam lokasi memori (kotak) bernama gaya. Nilai 80 ini dapat diubah
menjadi harga berapapun. Nama lokasi memori atau kotak dimana suatu
berikut:
gaya=10;
luas_permukaan=2;
tekanan=gaya*luas_permukaan;
disp(tekanan);
sebagai berikut:
akan satu perintah atau belum tahu deskripsi atau pengguanaan dari
perintah tersebut. Nah, disamping kita dapat meminta bantuan lewat tool
bantuan (Help), kita dapat pula meminta bantuan lewat command window,
dengan mengetik
>>NEsya= Nesya/5;
>> NESYA=exp(NEsya*3)
>> clc;
>> pwd;
>> who
>> whos
sebagai variabel berbeda. Variabel Nesya tidak sama dengan NEsya tidak
sama pula dengan variabel NESYA. Ini berarti bahwa antara huruf besar
dengan huruf kecil dibedakan. Oleh sebab itu, Matlab adalah case sensitive.
melakukan fitting data dengan tool yang disediakan oleh Matlab. Sebagai
>> cftool
Setelah anda tulis perintah seperti di atas maka akan muncul gambar
>> pdetool
Gambar 2.6. pde tool untuk memecahkan masalah persamaan diferensial parsial.
pengurangan (-), perkalian (*), pembagian (/) dan pangkat (^). Simbol ^
>> a=10
a=
10
>> a^2
ans =
100
>> a^3
ans =
1000
>> 1+2*4/3
ans =
3.6667
>> 1+2/4*3
ans =
2.5000
Tetapi, coba kita lihat contoh ke-4 dan ke-5, yaitu bagaimana urutan
operasi pada angka-angka tersebut. Untuk bentuk yang lebih jelas operasi
1+((2*4)/3) = 1+8/3
= 1+ 2.667
= 3.667
1+2/4*3 = 1+(2/4)*3
= 1 + 0.5 *3
= 2.5000
Contoh
perhitungan manual terlebih dahulu dan setelah itu dicek dengan Matlab
a) 1/3/2/4/5
b) 2*3/4+5
c) 2-3*4/6
d) (3-4*2)/4-6/2
e) 3-4/(2+3*5)
dimensi pada setiap variabel yang akan digunakan dalam sebuah program
itu, hal yang sangat penting untuk diingat bahwa variabel Matlab bersifat
case sensitif, artinya antara huruf besar dengan huruf kecil dibedakan.
1. Variable tidak boleh diawali dengan angka, misalnya 2abc, 45y, 3ok43
harga − 1.
5. Disarankan pembuatan variabel singkat tetapi penuh makna
yang berulang-ulang.
kelak akan sangat berguna. Format penulisan angka dapat diatur melalui
desktop Matlab, caranya pilih menu File > Preferences > Command
short seperti yang dapat dilihat pada gambar 2.7. Untuk mengubah ke
menuliskan perintah
misalnya
lebih dekat.
dengan rem(x,y) jika x dan y bertanda sama dan akan berharga beda
di bawah ini.
>> x=22/3
x=
7.3333
>> ceil(x)
ans =
>> floor(x)
ans =
>> fix(x)
ans =
>> round(x)
ans =
>> rem(4,3)
ans =
>> rem(-4,3)
ans =
-1
>> mod(4,3)
ans =
>> mod(-4,3)
ans =
>> abs(-2.3)
ans =
2.3000
>> abs(2+3i)
ans =
3.6056
>> sign(-2.3)
ans =
-1
>> sign(2.3)
ans =
>> factor(18)
ans =
2 3 3
sebelumnya.
Matlab
current direktori
>> pi=5;
>> sqrt(pi)
ans =
2.2361
>> who
ans pi
>> whos
>> clear
>> whos
>> sqrt(pi)
ans =
1.7725
itu, kita dapat menggunakan notasi titik koma (semi colon) , contoh
y=
6.3000
z=
13.2300
karena setelah variabel x diikuti tanda titik koma, sedangkan y dan z tidak
cosh(), tanh(), asin(), acos(), atan(), asinh(), acosh()dan atanh(). Yang penting
untuk diingat bahwa argumen untuk fungsi trigonometri ini adalah mode
radian. Contoh
>> sin(pi/3),cos(pi/3),tan(pi/3)
ans =
0.8660
ans =
0.5000
ans =
1.7321
>> asin(0.88),acos(0.88),atan(0.88)
ans =
1.0759
ans =
0.4949
ans =
0.7217
>> sinh(pi/3),cosh(pi/3),tanh(pi/3)
ans =
1.2494
ans =
1.6003
ans =
0.7807
>> asinh(1.22),acosh(1.22),atanh(1.22)
ans =
1.0287
ans =
0.6517
ans =
1.1558 + 1.5708i
Beberapa fungsi dasar tersebut antara abs(), sqrt(), exp(), log(), log10(),
Contoh
>> z = 3+4i;
>> abs(z)
ans =
>> a=100;
>> sqrt(a)
ans =
10
>> log(a)
ans =
4.6052
>> log10(a)
ans =
>> log2(a)
ans =
6.6439
>> exp(log10(a))
ans =
7.3891
No Konstanta Keterangan
1 pi 3.14159265...
2 i Unit imajiner, −1
3 j Sama dengan i
4 eps Ketelitian relatif floating-point
5 realmin Bilangan floating-point terkecil
6 realmax Bilangan floating-point terbesar
7 inf Bilangan tak hingga
8 NaN Not-a-Number
>> pi
ans =
3.1416
>> i
ans =
0 + 1.0000i
>> j
ans =
0 + 1.0000i
>> realmin
ans =
2.2251e-308
>> realmax
ans =
1.7977e+308
>> eps
ans =
2.2204e-016
>> 1/0
ans =
Inf
>> 0/0
ans =
NaN
pada bidang x-y yang diatasnya terdapat permukaan fungsi. Perintah ini
Contoh
Penyelesaian
menggunakan meshgrid.
>> x=0:5;
>> y=0:5;
>> [X Y]=meshgrid(x,y)
X=
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
Y=
0 0 0 0 0 0
1 1 1 1 1 1
2 2 2 2 2 2
3 3 3 3 3 3
4 4 4 4 4 4
5 5 5 5 5 5
adalah
>> z=X.^2-Y.^2
z=
0 1 4 9 16 25
-1 0 3 8 15 24
-4 -3 0 5 12 21
-9 -8 -5 0 7 16
-16 -15 -12 -7 0 9
-25 -24 -21 -16 -9 0
Sebagai contoh pada titik jaring (3,4) harga z =32−2 2=5 . Dengan
menampilkan grafiknya
>> mesh(X,Y,z)
Illustration 1:
perhitungan numerik. Dalam bab ini kita akan membahas beberapa fungsi
Untuk itu, pertama kali yang harus dipersiapkan adalah membuat fungsi
yang akan dievaluasi. Kali ini, kita menggunakan fungsi yang sudah
>> fhandle=@humps;
>> feval(fhandle,1)
ans =
16
Jawab
p=[1 0 3 4 5].
>> x=[2,-3,4];
>> polyval(p,x)
ans =
41 101 325
kadang kita perlu mencocokan dengan bentuk fungsi apa data yang telah
fungsi ini, kita dapat mencocokan data kita. Bentuk umum fungsi ini adalah
p = polyfit(x,y,n)
mencocokan data.
Contoh
x 1 2 3 4 5 6 7 8 9 10
y 1.3 3.2 11.3 15.1 25.5 38.2 47.1 68.2 81.3 98.2
trend data y, kita bisa menduga bahwa data kita mendekati polinomial orde
2 (kuadratis).
x=[1:10];
y=[1.3,3.2,11.3,15.1,25.5,38.2,47.1,68.2,81.3,98.2];
p=polyfit(x,y,2)
p=
f=polyval(p,x);
tabel =
k = polyder(p)
atau
k = polyder(a,b)
Contoh
p x =4 x 4 3 x 24 x 5
Jawab
p=[4 0 3 4 5];
polyder(p)
ans =
16 0 6 4
16 x 36 x 4
Contoh
a=[4 0 3 4 5];
b=[2 1 3 1];
p=polyder(a,b)
p=
56 24 90 60 69 40 19
atau
r = roots(c)
Contoh
Jawab
Matlab berbentuk
p=[ 4 0 3 4 5]
roots(p)
ans =
0.6364 + 1.0830i
0.6364 - 1.0830i
-0.6364 + 0.6222i
-0.6364 - 0.6222i
adalah
p = poly(r)
Contoh
polinomialnya.
Jawab
>> poly(r)
ans =
atau
5 4 3 2
p x =x −15 x 85 x −225 x 274 x −120
umumnya adalah
w = conv(u,v)
Contoh
tersebut.
Jawab
>> conv(u,v)
ans =
1 5 11 14 9 2
atau
x 5 5 x 4 11 x 314 x 2 9 x 2
[q,r] = deconv(v,u)
Contoh
Jawab
>> [q r]=deconv(p1,p2)
q=
2 -3 2
r=
0 0 0 10 -3
SOAL LATIHAN
Matlab
a) 2-3 g) (2-3)/3*4
b) 2-5/2 h) (3+4/3)/(3-4/3)/3
c) 3+4*3 i) (3+4/3)/(3-4/3)*3
d) 3+4/3*3 j) (3+4/3)/(3-4/3)+3
e) 3+4*3/4 k) 3*4-4/5+2
f) (2-3/4)/2+3*4
a) b32 g) kecepatan&
b) 2d h) laju sepeda
c) s34d i) 'a'nu
d) laju_sepeda j) pi
e) _laju k) realmax
f) %kecepatan l) a^3
oleh Matlab
a) 2,34 c) 0.32
b) 2.32 d) -3214
e) 2.3e-4 h) 3.43e5.3
f) 5.2e+2 i) 34.2*e^2
g) 5e^3
y=0;
i=1;
x=x+i;
y=y+i/x;
x=x+i;
y=y+i/x;
x=x+i;
y=y+i/x;
x=x+i;
y=y+i/x;
berikut ini.
ditampilkan.
ditampilkan.
ditampilkan.
luas_permukaan
BAB 3
5.1) Vektor
Salah satu fitur yang dimiliki oleh Matlab adalah penggunaan vektor
>> A=[1;2;3]
A=
dan setiap elemen dipisahkan oleh spasi atau tanda titik koma.
>> A=[1,2,3,4]
A=
1 2 3 4
>> x=1:5
x=
1 2 3 4 5
>> y=0:2:10
y=
0 2 4 6 8 10
dengan cara
nama_vektor(indeks_elemen)
Contoh:
>>y(2)
ans =
2
>> 4*y(3)
ans =
16
dengan pola tertentu adalah dengan perintah linspace. Dengan perintah ini
>> z=linspace(0,10,5)
z=
dituliskan sebagai
nama_vektor=linspace(bawah,atas,jmlh_elemen)
yang melibatkan vektor, termasuk pengenalan pada operasi dot (.). Untuk
>> v=[1,2,3,4,5];
>> 2*v
ans =
2 4 6 8 10
dilakukan dengan cara memberikan tanda dot (.) sebelum operator pengali
(*).
>> v=[1,2,3,4,5];
>> w=[2,3,4,5,6];
>> v.*w
ans =
2 6 12 20 30
[ v 1 w 1 ,v 2 w 2 , v 3 w 3 ,v 4 w 4 ,v 5 w 5 ]
Selanjutnya jika v dan w dilakukan operasi pembagian pada setiap elemen
>> v=[1,2,3,4,5];
>> w=[2,3,4,5,6];
>> y=v./w
y=
y=
[ v1 v2 v3 v4 v5
, , , ,
w1 w 2 w 3 w 4 w5
,
]
Agar lebih jelas mengenai operasi antar elemen pada vektor, maka marilah
kita kerjakan latihan berikut ini. Jika diketahui dua buah vektor masing-
a) v+w
b) w-v
c) v.*w
d) v.^2
e) w./v
f) 1./w
g) w/2
h) v+1
Hasilnya adalah
>> v=linspace(1,2,5);
>> w=linspace(2,4,5);
>> v+w
ans =
3.0000 3.7500 4.5000 5.2500 6.0000
>> w-v
ans =
1.0000 1.2500 1.5000 1.7500 2.0000
>> v.*w
ans =
2.0000 3.1250 4.5000 6.1250 8.0000
>> v.^2
ans =
1.0000 1.5625 2.2500 3.0625 4.0000
>> w./v
ans =
2 2 2 2 2
>> 1./w
ans =
0.5000 0.4000 0.3333 0.2857 0.2500
>> w/2
ans =
1.0000 1.2500 1.5000 1.7500 2.0000
>> v+1
ans =
2.0000 2.2500 2.5000 2.7500 3.0000
Contoh
x3
Dapatkan nilai fungsi dari f x = untuk domain 0x 2
1x 2
dengan panjang langkah 0.2.
Jawab
x=0:0.2:2;
f=x.^3;
g=x.^2+1;
y=f./g;
disp([y'])
Hasilnya adalah
0
0.0077
0.0552
0.1588
0.3122
0.5000
0.7082
0.9270
1.1506
1.3755
1.6000
>> v=[1;2;3;4;5]
v=
1
2
3
4
Subscript
>> v=[2,4,6,8,10];
>> 2*v(2)
ans =
Pada contoh di atas kita dapat mengakses elemen nomor dua dari
Transpose Vektor
Kalau kita sudah memiliki vektor w yang berbentuk baris, maka kita
aksen tunggal pada pada vektor w tersebut. Misalnya kita memiliki vektor
[]
v1
v2
v= v 3
⋮
vn
v T =[ v 1, v 2, v 3, ⋯, v n ]
Contoh
vektor kolom
>> w=[1,2,3,4,5];
>> w'
ans =
1
2
3
4
5
Contoh
baris
>> B=[1;2;3;4;5];
>> B'
ans =
1 2 3 4 5
No Simbol Keterangan
1 [ ] Konstruktur untuk array (vektor)
2 , Tanda pemisah kolom elemen vektor
3 ; Tanda pemisah baris elemen vektor
4 : Untuk menentukan range elemen
5 + Operasi penambahan vektor
6 - Operasi pengurangan vektor
7 .* Operasi perkalian elemen vektor
8 .^ Pangkat setiap elemen vektor
9 ./ Operasi bagi kanan
10 .\ Operasi bagi kiri
>> A=[1,2,3];
>> B=[3,4,5];
>> C=A+B
C=
4 6 8
>> A=[1;2;3];
>> B=[3;4;5];
>> C=A+B
C=
4
6
8
vektor seletak. Apabila kita memiliki dua buah vektor sejenis, kemudian
elemen pada matriks pertama akan dibagi dengan elemen seletak pada
vektor kedua.
>> P=[8,6,4];
>> Q=[4,3,2];
>> P./Q
ans =
2 2 2
>> P.\Q
ans =
yang seletak
>> A=[1,2,3,4];
>> B=[2,3,4,5];
>> C=A.*B
C=
2 6 12 20
>> A=[1,2,3,4];
>> A.^2
ans =
1 4 9 16
5.4.3. Membuat Vektor Lebih Besar dengan Variabel yang Sudah Ada
bermodal pada vektor tersebut kita dapat membuat vektor baru lagi
>> A=[1;2;3];
>> B=[6;7];
>> C=[A;B]
C=
1
2
3
6
7
>> A=[1,2,3];
>> B=[6,7];
>> C=[A,B]
C=
1 2 3 6 7
sebuah vektor. Perintah ini bisa digunakan untuk vektor baris maupun
>> P=[1,2,3,4,5,6,7,8,10];
>> length(P)
ans =
9
>> P=[1,2,3,4,5,6,7,8,10];
>> max(P)
ans =
10
>> min(P)
ans =
1
magnitud dari sebuah vektor, kita ingatkan kembali jika kita memiliki
[]
v1
v2
v= v
3
⋮
vn
dicari magnitudnya
>> Q=[4,3,2];
>> Q.*Q
ans =
16 9 4
>> y=sum(Q.*Q)
y=
29
>> magnitude=sqrt(y)
magnitude =
5.3852
adalah mencari konjugat (sekawan) dari vektor Q. Lihat contoh berikut ini
>> Q=[4;3+2i;2]
Q=
4.0000
3.0000 + 2.0000i
2.0000
>> P=conj(Q)
P=
4.0000
3.0000 - 2.0000i
2.0000
>> W=Q.*P;
>> y=sum(W)
y=
33
>> sqrt(y)
ans =
5.7446
cara
>> Q=[4;3+2i;2];
>> magnitud=sqrt(sum(conj(Q).*Q))
magnitud =
5.7446
>> Q=[4;3+2i;2];
>> abs(Q)
ans =
4.0000
3.6056
2.0000
A⋅B=∑ ai bi
i
dot(a,b).
>> A=[1,2,3,4];
>> B=[2,3,4,5];
>> dot(A,B)
ans =
40
>> A=[1,2,3,4];
>> dot(A,A)
ans =
30
>> magnitud=sqrt(dot(A,A))
magnitud =
5.4772
Operasi dot juga dapat bekerja pada vektor kompleks, seperti di
bawah ini
>> A=[4;3+2i;2];
>> dot(A,A)
ans =
33
Operasi lain pada vektor selain dot adalah perkalian cross. Syarat
agar dapat dilakukan operasi perkalian cross adalah jumlah elemen vektor
>> A=[1,2,3];
>> B=[2,3,4];
>> C=cross(A,B)
C=
-1 2 -1
ini.
No Perintah Keterangan
Membangkitkan vektor dengan panjang
1 :
langkah sama.
Membangkitkan vektor pada jangkauan
dalam jangkauan yang dapat diatur. Bentuk umum dari fuungsi ini adalah
y = logspace(a,b)
y = logspace(a,b,n)
y = logspace(a,pi)
hingga 10b .
>> x=logspace(0,1);
>> y=x;
>> stem(x,y)
>> x=logspace(0,1,10);
>> y=x;
>> stem(x,y)
5.9) Matriks
[ ]
a11 a12 a 13
A= a21 a22 a 23
a31 a32 a 33
bentuknya berupa larik membentuk baris atau kolom, dengan kata lain
array merupakan matriks satu dimensi. Array sering juga disebut vektor
adalah penulisan dan operasi Matlab yang sangat mudah. Lain halnya
[
2 1 12
A= 4 2 −1
5 12 4 ]
Matriks seperti di atas dapat kita tuliskan dengan cara
A=
2 1 12
4 2 -1
5 12 4
atau
A=
2 1 12
4 2 -1
5 12 4
Jadi, antara elemen satu dengan elemen yang lain dalam satu baris
Contoh, misalnya elemen pada baris pertama dan kolom ketiga yang
berharga 12 akan dikalikan dengan 11, maka perintah yang dapat dilakukan
adalah
>> A(1,3)*11
>> B=[2,3,4,5;1,2,3,4;4,2,1,3;4,5,2,3];
>> A+B
ans =
3 5 7 9
3 5 7 9
7 6 6 9
8 10 8 10
>> A-B
ans =
-1 -1 -1 -1
1 1 1 1
-1 2 4 3
0 0 4 4
kesalahan
>> A=[1,2,3,4;2,3,4,5;3,4,5,6;4,5,6,7];
>> B=[2,3,4;1,2,3;4,2,1;4,5,2];
>> A+B
Contoh Program
masing adalah
A=
3 5
1 2
,
B= 4 10
6 5
Penyelesaian
A=[3,5;1,2]
B=[4,10;6,5];
C=2*A-3*B;
disp(C)
berada pada baris i ke kolom j atau dapat dinyatakan dalam notasi Aij = A ji .
T
matriks A.
>> z=v*u
z=
2 4 6
3 6 9
4 8 12
>> z'
ans =
2 3 4
4 6 8
6 9 12
Tetapi hati-hati apabila vektor atau matriks yang kita miliki adalah
Sedangkan, kalau kita hanya ingin melakukan transpose saja, maka perlu
>> A=[2i+1,3i-2,2+3i;i+2,3+2i,3i-5;2+4i,3i+1,5i+1]
A=
>> A'
ans =
>> A.'
ans =
membutuhkan syarat yakni jumlah kolom matriks kiri harus sama dengan
jumlah baris matriks kanan. Oleh sebab itu, perkalian matriks tidak bersifat
>> A=[1,2,3;2,3,4;3,4,5]
A=
1 2 3
2 3 4
3 4 5
>> B=[3,2,1;4,3,2;6,5,4]
B=
3 2 1
4 3 2
6 5 4
>> A*B
ans =
29 23 17
42 33 24
55 43 31
>> B*A
ans =
10 16 22
16 25 34
28 43 58
kalau aturan di atas tidak terpenuhi seperti pada contoh di bawah, maka
>> P=[1,2,3;2,3,4;3,4,5];
>> Q=[3,2,1;4,3,2];
>> P*Q
>> P=[1,2,3;2,3,4;3,4,5];
>> Q=[3,2;1,4;3,2];
>> P*Q
ans =
14 16
21 24
28 32
jika keduanya merupakan matriks yang sejenis. Lihat contoh dibawah ini
>> A=[1,2,3;2,3,4;3,4,5];
>> B=[3,2,1;4,3,2;6,5,4];
>> A.*B
ans =
3 4 3
8 9 8
18 20 20
>> P=[1,2,3;2,3,4;3,4,5];
>> Q=[3,2,1;4,3,2];
>> P.*Q
>> A=[1,2,3;2,3,4;3,4,5];
>> B=[2,4,6;4,6,8;6,8,10];
>> A./B
ans =
>> A.\B
ans =
2 2 2
2 2 2
2 2 2
>> A=[1,2,3;2,3,4;3,4,5];
>> A.^3
ans =
1 8 27
8 27 64
27 64 125
fungsi pascal()
>> pascal(4)
ans =
1 1 1 1
1 2 3 4
1 3 6 10
1 4 10 20
(1) Untuk membuat matriks tak simetri, Matlab memiliki fungsi magic().
>> magic(4)
ans =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
bertipe integer maka haru ditambahi fungsi round(), ceil(), fix() atau
>> rand(3,4)
ans =
>> 10*rand(3,4)
ans =
>> round(10*rand(3,4))
ans =
2 9 5 6
7 9 9 8
4 6 8 7
>> ceil(10*rand(3,4))
ans =
4 6 9 8
3 8 6 6
4 4 4 5
>> A=[1,2,3;2,3,4;3,4,5]
A=
1 2 3
2 3 4
3 4 5
>> I=eye(3)
I=
1 0 0
0 1 0
0 0 1
>> A*I
ans =
1 2 3
2 3 4
3 4 5
>> I*A
ans =
1 2 3
2 3 4
3 4 5
>> ones(3,4)
ans =
1 1 1 1
1 1 1 1
1 1 1 1
>> zeros(3,4)
ans =
0 0 0 0
0 0 0 0
0 0 0 0
>> randn(3,4)
ans =
Contoh
1 2 3 4
2 0 0 0
3 0 0 0
4 0 0 0
Penyelesaian
jumlah elemennya sangat banyak, maka apa yang dapat kita perbuat?? Kita
langsung menyelesaikan
x=zeros(4);
r=1:4;
x(:,1)=r';
x(1,:)=r
>> a=[1,2,3,4;2,zeros(1,3);3,zeros(1,3);4,zeros(1,3)]
a=
1 2 3 4
2 0 0 0
3 0 0 0
4 0 0 0
Contoh
1 2 0 0 0 0 0 0 0 0
2 1 2 0 0 0 0 0 0 0
0 2 1 2 0 0 0 0 0 0
0 0 2 1 2 0 0 0 0 0
0 0 0 2 1 2 0 0 0 0
0 0 0 0 2 1 2 0 0 0
0 0 0 0 0 2 1 2 0 0
0 0 0 0 0 0 2 1 2 0
0 0 0 0 0 0 0 2 1 2
0 0 0 0 0 0 0 0 2 1
Penyelesaian
y=eye(10);
i=1;
for j=1:9;
i=i+1;
y(i,j)=2;
y(j,i)=2
end
sebagai
A=
∣a 11 a12
a 21 a 22 ∣
=a 11 a 22−a 12 a 21
>> A=[1,2;3,1]
A=
1 2
3 1
>> det(A)
ans =
-5
>> B=[1,2,4;2,1,5;8,3,1];
>> det(B)
ans =
54
menemukan satu set persamaan simultan linier. Sebagai contoh jika kita
−4 x3 y−5z=1
maka
3 2 −1
◦ A= 1 3 2
−4 3 −5
• Tentukan matriks b yaitu
3
◦ b= 5
1
• Gunakan operasi bagi kiri untuk memperoleh harga x,y dan z yang
>> A=[3,2,-1;1,3,2;-4,3,-5];
>> b=[3;5;1];
>> A\b
ans =
0.2500
1.3214
0.3929
dan 0.3929.
AA−1= A−1 A= I
a11 a 12 a 13 x b1
a 21 a 22 a 23 y = b2
a 31 a 32 a 33 z b3
A−1 A X =A−1 b
X = A−1 b
dimana A-1A=I
Contoh
−4 x3 y−5z=1
Penyelesaian
>> A=[3,2,-1;1,3,2;-4,3,-5]
A=
3 2 -1
1 3 2
-4 3 -5
>> b=[3;5;1]
b=
3
5
1
>> X=inv(A)*b
X=
0.2500
1.3214
0.3929
Kita dapat lihat bahwa penyelesaian ini persis sama dengan penyelesaian
>> A=[3,2,-1;1,3,2;-4,3,-5];
>> inv(A)
ans =
>> inv(A)*A
ans =
1.0000 -0.0000 0
0 1.0000 -0.0000
0 0.0000 1.0000
Apa yang terjadi sebenarnya? Dalam hal ini kita hasrus ingat bahwa
diandalkan.
LU,QR maupun SVD. Dalam pasal ini kita akan lihat bagaimana
[L,U]=lu(A),
3 2 −1
A= 1 3 2
−4 3 −5
Penyelesaian
>> A=[3,2,-1;1,3,2;-4,3,-5];
>> [L,U]=lu(A)
L=
-0.7500 1.0000 0
-0.2500 0.8824 1.0000
1.0000 0 0
U=
Setelah kita peroleh matriks L dan U, selanjutnya akan kita gunakan untuk
sebelumnya. Jika
3
b= 5
1
maka penyelesaian dapat diperoleh dengan dua kali bagi kiri, yaitu
X=L\(U\b)
Kita dapatkan
>> A=[3,2,-1;1,3,2;-4,3,-5];
>> b=[3;5;1];
>> [L,U]=lu(A);
>> X=U\(L\b)
X=
0.2500
1.3214
0.3929
a=
1 2 3 4
3 4 5 6
5 6 7 8
7 8 9 10
>> a=[1:4;3:6;5:8;7:10]
a=
1 2 3 4
3 4 5 6
5 6 7 8
7 8 9 10
dinyatakan
>> a(3,:)
ans =
5 6 7 8
ans =
1 2
3 4
5 6
7 8
ans =
5 6 7 8
7 8 9 10
>> a(1:2,3:4)
ans =
3 4
5 6
berharga 1.
>> a(2:4,1:3)=ones(3)
a=
1 2 3 4
1 1 1 6
1 1 1 8
1 1 1 10
Contoh, kita ingin membuat tabel sinus dan cosinus dari sudut
>> x=[0:30:180]';
>> trig(:,1)=x;
>> trig(:,2)=sin(pi/180*x);
>> trig(:,3)=cos(pi/180*x);
>> trig
trig =
0 0 1.0000
>> a=[-1,1,2,2;8,2,5,3;10,-4,5,3;7,4,1,-5];
>> a(2,:)=a(2,:)-a(2,1)/a(1,1)*a(1,:)
a=
>> a(3,:)=a(3,:)-a(3,1)/a(1,1)*a(1,:)
a=
>> a(4,:)=a(4,:)-a(4,1)/a(1,1)*a(1,:)
a=
>> a(3,:)=a(3,:)-a(3,2)/a(2,2)*a(2,:)
a=
0 0 12.40 11.60
>> a(4,:)=a(4,:)-a(4,2)/a(2,2)*a(2,:)
a=
0 0 12.40 11.60
0 0 -8.10 -11.90
>> a(4,:)=a(4,:)-a(4,3)/a(3,3)*a(3,:)
a=
0 0 12.40 11.60
0 0 0 -4.32
Kata kunci end dapat menyatakan elemen paling akhir dari sebuah
>> a=[1:6]
a=
1 2 3 4 5 6
>> a(end)
ans =
>> sum(a(2:end))
ans =
20
Dalam kasus ini, operator ini akan berperilaku lain ketika berada di
ruas kiri dan ruas kanan. Ketika berada di ruas kanan, operator colon
>> a=[1,2,3;2,3,4];
>> b=a(:)
b=
>> b=[1,2,3,3;4,5,6,7]
b=
1 2 3 3
4 5 6 7
>> a=zeros(4,2)
a=
0 0
0 0
0 0
0 0
>> a(:)=b
a=
1 3
4 6
2 3
5 7
>> a=[1:4;5:8]
a=
1 2 3 4
5 6 7 8
>> a(:)=-1
a=
-1 -1 -1 -1
-1 -1 -1 -1
yang ada pada baris atau kolom karena kebetulan elemen-elemen yang
>> a=[1;2;3];
b=
1 1 1
2 2 2
3 3 3
c=
dapat dinyatakan dengan repmat(a,1,3) dan repmat (a,[2 1]) bisa dinyatakan
dengan repmat(a,2,1).
>> b=[1,2,3;3,4,5;6,7,8]
b=
1 2 3
3 4 5
6 7 8
>> b(:,2)=[]
b=
1 3
3 5
6 8
Kalau yang akan dihapus adalah elemen matriks b pada kolom 2 dan
3, maka
>> b=[1,2,3;3,4,5;6,7,8];
b=
>> b=[1,2,3;3,4,5;6,7,8];
b=
1 2 3
antara lain
diag, fungsi ini digunakan untuk membuat matriks diagonal. Jika kita
>> v=[1:4];
>> diag(v)
ans =
1 0 0 0
0 2 0 0
0 0 3 0
0 0 0 4
sebesar b kolom.
>> diag(v,2)
ans =
0 0 1 0 0 0
0 0 0 2 0 0
0 0 0 0 3 0
0 0 0 0 0 4
0 0 0 0 0 0
0 0 0 0 0 0
>> diag(v,-2)
ans =
0 0 0 0 0 0
0 0 0 0 0 0
1 0 0 0 0 0
0 2 0 0 0 0
0 0 3 0 0 0
0 0 0 4 0 0
>> a=[1,2,3;4,5,6]'
a=
1 4
2 5
3 6
>> fliplr(a)
ans =
4 1
5 2
6 3
>> a=[1,2,3,4,5,6]
a=
1 2 3 4 5 6
>> fliplr(a)
ans =
6 5 4 3 2 1
>> a=[1,2,3;4,5,6]
a=
1 2 3
4 5 6
>> flipud(a)
ans =
4 5 6
1 2 3
>> a=[1,2,3;4,5,6]
a=
1 2 3
4 5 6
>> rot90(a)
ans =
3 6
2 5
1 4
>> a=[1,2,3;4,5,6]
a=
1 2 3
4 5 6
>> tril(a)
ans =
1 0 0
4 5 0
>> triu(a)
ans =
1 2 3
0 5 6
bujur sangkar.
>> a=[1,2,3;4,3,-2;-1,5,2];
>> det(a)
ans =
73
>> a=[1,2,3;4,3,-2;-1,5,2];
>> eig(a)
ans =
5.5031
0.2485 + 3.6337i
0.2485 – 3.6337i
>> a=[1,2,3;4,3,-2;-1,5,2];
>> [L,U]=lu(a)
L=
1.00 0 0
-0.25 1.00 0
U=
0 5.75 1.50
0 0 3.17
elemen yang berharga tidak sama dengan nol dari matriks tersebut jarang.
Bayangkan kalau ukuran matriks sangat besar, misalnya 1000 x 1000 dengan
sparse(baris,kolom,masukan,m,n)
[ ]
2 −1 0 0 0
−1 2 −1 0 0
0 −1 2 −1 0
0 0 −1 2 −1
0 0 0 −1 2
maka caranya
>> p=sparse(1:5,1:5,2,5,5);
>> p=p+sparse(2:5,1:4,-1,5,5);
>> p=p+sparse(1:4,2:5,-1,5,5);
>> full(p)
ans =
2.00 -1.00 0 0 0
0 0 0 -1.00 2.00
Keterangan
dengan -1.
SOAL LATIHAN
tentukan
3 0 0 0 0 0 0
0 3 0 0 0 0 0
0 0 3 0 0 0 0
(a) A= 0 0 0 3 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 3 0
0 0 0 0 0 0 3
3 4 5 6 7 8 9
4 3 0 0 0 0 0
5 0 3 0 0 0 0
(b) A= 6 0 0 3 0 0 0
7 0 0 0 0 0 0
8 0 0 0 0 3 0
9 0 0 0 0 0 3
3 2 −1 2 4
A= −2 1 1 3 2
8 2 −4 3 −5 4 1 −1 2 7
B= 6 3 0 3 6
1 −2 14 2 −5
(a) tentukan hasil perkalian matriks A dengan B.
2p + 3p + 4q -5s =10
p - 5p + 6q – 10s =-2
4p + 2q – 7r – 10s = 9
-2p + 10q + 2r – 4s = 6
2 x5 y6 z =7
5 x−6 y2 z=1
−5 x−2 y8 z =−2
koefisien A.
BAB 4
data dan semua data disajikan dalam bentuk tabel, sudah tentu kita akan
pusing dibuatnya. Lain halnya, jika data tersebut disajikan dalam bentuk
grafik, maka dengan mudah kita dapat memahami hasil penelitian tersebut.
adalah plot. Fungsi ini memiliki bentuk berbeda tergantung pada argumen
input yang kita berikan. Sebagai contoh, misalnya kita memiliki data dalam
bentuk array dan kita simpan dalam vektor y, maka plot(y) akan
y=10*rand(100,1);
plot(y)
x=0:pi/200:10*pi;
y=cos(x);
plot(x,y)
x=linspace(0,10*pi,200);
y=cos(x);
plot(x,y)
linspace(awal,akhir, jumlah_langkah)
Kita juga dapat membuat beberapa grafik dalam satu frame. Matlab
yang berbeda-beda. Plot tiga grafik dalam satu frame dapat dilihat pada
gambar 4.3
x=linspace(0,2*pi,200);
y1=cos(x);
y2=cos(x-0.5);
y3=cos(x-1.0);
plot(x,y1,x,y2,x,y3)
kita miliki, misalnya garis putus-putus, titik-titik, kombinasi garis dan titik
x=linspace(0,2*pi,200);
y1=cos(x);
y2=cos(x-0.5);
y3=cos(x-1.0);
plot(x,y1,'-',x,y2,'o',x,y3,':')
grid
berbeda
string yang menyatakan warna, jenis garis dan penanda. Secara umum,
bentuk umum
plot(x,y,'JenisGaris_Penanda_Warna')
dan lain-lain.
Penanda dapat berupa tanda bintang (*), kotak (square), bulatan (o),
Warna dapat berupa merah (r), kuning (y), hijau (g), cian (C), hitam
dengan jenis grafik dash (-), penanda kotak (square) dan warna merah.
x=linspace(0,2*pi,200);
y=cos(x);
plot(x,y,'-squarer')
Kita juga dapat menentukan warna dan ukuran garis grafik melalui
perintah-perintah
penanda masif.
x = -pi:pi/10:pi;
y = tan(sin(x)) - sin(tan(x));
plot(x,y,'--rs','LineWidth',3,...
'MarkerEdgeColor','k',...
'MarkerFaceColor','g',...
'MarkerSize',5)
kotak ('--rs'),
Ukuran penanda 5
kotak dengan kotak warna isi hijau dan warna tepian hitam dengan
ukuran kotak 5
dengan perintah hold. Perintah ini akan aktif saat di on-kan atau hold on dan
x=1:100;
semilogx(x,'-','LineWidth',3);
hold on;
plot(1:5:500,1:100,'+');
hold off
terdahulu
data yang ada dengan berbagai alasan. Untuk tujuan tersebut, maka atribut
x = -pi:pi/10:pi;
y = tan(sin(x)) - sin(tan(x));
plot(x,y,'square')
x = 0:pi/15:4*pi;
y = exp(2*cos(x));
plot(x,y,'-r',x,y,'ok')
penanda
bentuk vektor atau array, maka hasilnya dapat kita lihat seperti contoh-
contoh di atas. Nah, bagaimana jika data yang kita miliki berbentuk
matriks. Untuk memecahkan masalah ini, marilah kita ingat kembali bahwa
vektor memiliki ukuran 1×m atau m×1 Perintah plot(y) akan menampilkan
setiap elemen dalam kolom atau baris y terhadap indeks elemen vektor
matriks akan menampilkan elemen pada setiap kolom atau baris matriks
y=peaks;
plot(y)
untuk mengeplot grafik fungsi dengan dua argumen dimana data yang
1. jika y adalah matriks dan x berupa vektor, maka perintah plot (x,y)
x=1:length(peaks);
plot(peaks,x)
x=-2:0.1:2;
y=-2:0.1:2;
[X,Y]=meshgrid(x,y);
f=-X.*Y.*exp(-2*(X.^2+Y.^2));
mesh(X,Y,f);
xlabel('Sumbu x');
ylabel('Sumbu y');
zlabel('Sumbu z');
yang digambar lebih dari satu. Untuk memberikan teks tambahan ini dapat
x=linspace(0,2*pi,200);
y1=cos(x);
y2=cos(x-0.5);
y3=cos(x-1.0);
plot(x,y1,x,y2,x,y3);
gtext('y1=cos(x)');gtext('y1=cos(x-0.5)');
gtext('y1=cos(x-1.5)');
di bawah ini
x=linspace(0,2*pi,200);
y1=cos(x);
y2=cos(x-0.5);
y3=cos(x-1.0);
plot(x,y1,x,y2,x,y3)
text(pi/2,cos(pi/2),'\leftarrowy1=cos(x)');
text(pi/3,cos(pi/3-0.5),'\leftarrowy1=cos(x-0.5)');
text(2*pi/3,cos(2*pi/3-1.0),'\leftarrowy1=cos(x-1.0)')
Penulisan simbul dapat disertakan dalam label, title, text maupun legend.
Cara Cara
Simbol simbul
penulisan penulisan
\alpha α \epsilon ε
\beta β \phi φ
\gamma γ \chi χ
\delta δ \psi ψ
\eta η \Gamma Ψ
\zeta ζ \Omega Ω
\iota ι \Delta ∆
\theta θ \Theta Θ
\vartheta ϑ \Lambda Λ
\kappa κ \Xi Χ
\lambda λ \Pi Π
\nu ν \Sigma Σ
\mu µ \Phi Φ
\xi ξ \Epsilon Ε
\phi φ \Rho Ρ
\rho ρ \Kappa Κ
grafik bar. Ada dua jenis grafik bar yaitu bar horisontal dan bar vertikal.
Fungsi-fungsi tersebut antara lain adalah bar, barh, bar3 dan bar3h. Contoh
Y = [5 2 1
873
986
555
4 3 2];
bar(Y)
dimensi dari fungsi tertentu yang memuat data grafik maupun model objek
3 dimensi.
gambar
3. Panggil fungsi untuk h = surf(Z); h=mesh(Z); h=contour(Z)
menampilkan grafik
4. Atur peta warna dan colormap hot
shading interp
shading
set(h,'EdgeColor','k')
material([0.4,0.6,0.5,30])
'BackFaceLighting','lit')
set(gca,'CameraViewAngleMode','Manual')
'auto')print -dps2
Apabila kita memiliki dua buah fungsi dengan argumen sama, maka
kita dapat menampilkan grafik 3D dari data tersebut. Demikian pula jika
kita memiliki 3 buah vektor dengan ukuran sama, maka kita juga dapat
t=-2*pi:pi/200:2*pi;
x=sin(t);
y=cos(t);
plot3(x,y,t);grid
Apabila kita memiliki data yang sudah dibuat dalam bentuk matriks,
maka kita dapat menampilkannya dalam bentuk grafik. Grafik yang terbuat
x=linspace(-2,2,200);
y=linspace(-2,2,200);
[X,Y] = meshgrid(x,y);
Z = X.*exp(-X.^2-Y.^2);
plot3(X,Y,Z)
grid on
matriks
antara lain
mesh(X,Y,Z)
mesh(Z)
mesh(...,C)
mesh(...,'PropertyName',PropertyValue,...)
meshc(...)
meshz(...)
h = mesh(...)
h = meshc(...)
h = meshz(...)
Contoh
x=-3:.125:3;
y=-3:.125:3;
[X,Y] = meshgrid(x,y);
Z = peaks(X,Y);
mesh(X,Y,Z);
Apabila kita memiliki sebuah fungsi f(x,y) yakni fungsi dengan dua
merta dapat dibuat grafik fungsi f terhadap x dan y. Akan tetapi, ada satu
x=-8:.5:8;
y=-8:.5:8;
[X,Y] = meshgrid(x,y);
Z=sin(R)./R;
surf(X,Y,Z);
grid on
x=1:3;
y=1:4;
[X,Y]=meshgrid(x,y);
X=
1 2 3
1 2 3
1 2 3
1 2 3
Y=
1 1 1
2 2 2
3 3 3
4 4 4
fungsi Z=sin(R)./R
informasi dari grafik yang kita miliki. Di bawah ini diberikan contoh grafik
x=-8:.5:8;
y=-8:.5:8;
[X,Y] = meshgrid(x,y);
Z=sin(R)./R;
surf(X,Y,Z,'FaceColor','interp',...
'EdgeColor','none',...
'FaceLighting','phong')
daspect([5 5 1])
axis tight
view(-50,30)
camlight left
basanya.
dengan plot permukaan. Contoh ini akan mengevaluasi fungsi sinc untuk
data yang dibangkitkan dari fungsi random (acak) untuk range tertentu,
BAB 5
5.1) Pendahuluan
Matlab memberikan kemudahan di dalam penulisan pernyataan-
catatan skrip sudah diberikan nama. M-File dalam bentuk fungsi terdiri atas
ouput. Apabila M-File kita berupa fungsi, maka langkah eksekusi file
>> b= 3.1;
>> c=fungsiku(a,b)
command window c=
3.9205
Perbedaaan antara M-File dalam bentuk skrip dan fungsi antara lain
di current directory.
5.2) Skrip
Skrip merupakan bentuk sederhana dari M-File, karena tidak
memiliki argumen input maupun output. Bentuk ini sangat berguna untuk
tombol down arrow atau up arrow, maka kita dapat menemukan kembali
data atau perintah yang pernah kita eksekusi. Hal ini karena data atau
rho(1,:) = 2*sin(5*theta).^2;
rho(2,:) = cos(10*theta).^3;
rho(3,:) = sin(theta).^2;
rho(4,:) = 5*cos(3.5*theta).^3;
for k = 1:4
pause
end
5.3) Fungsi
fungsi ini siap digunakan. Contoh fungsi bawaan ini misalnya sin, cos, tan,
exp, log, dan lainnya. Disamping fungsi bawaan ini, Matlab juga
kembali, bahwa ketika kita membuat program melalui edit window, file
bahwa file yang disimpan tersebut dalam format M-File. Fungsi M-File yang
sudah disiapkan oleh Matlab berjumlah banyak. Sebagai contoh fzero, ode23,
% biasanya dilambangkan N!
adalah c.
lookfor.
argumen output.
Misalnya kita mempunyai sebuah sistem yang terdiri atas dua massa
Dalam Matlab, kita dapat menyatkan h(t) tersebut dengan perintah inline,
h=inline('sin(7*t)+sin(8*t)','t')
command window.
>> h=inline('sin(7*t)+sin(8*t)','t');
>> t=0:pi/60:5*pi;
>> plot(t,h(t))
Illustration 1:
inputan. Variabel t tersebut disebut pula sebagai variabel dummy. Kita dapat
>> h=inline('sin(7*t)+sin(8*t)','t');
>> x=0:pi/6:pi;
0 0
0.5236 -1.3660
1.0472 1.7321
1.5708 -1.0000
2.0944 -0.0000
2.6180 0.3660
3.1416 -0.0000
diungkapkan dengan
f xi
x i1= xi −
f ' xi
Untuk membuat fungsi M-File f(x) dan f'(x) kita dapat melakukan
dengan dua cara, yaitu dengan inline dan menyimpannya dalam file M-File
lainnya.
f=inline('sin(x)-x','x');
df=inline('cos(x)-1','x');
step=0;
tol=1e-2;
temp=1;
while (temp>=tol)
xlama=x;
x=x-f(x)/df(x);
step=step+1;
disp([x' f(x)']);
temp=abs(x-xlama);
end
if temp<=tol
disp(x);
else
end
function y=f(x)
y=sin(x)-x;
function y=df(x)
y=cos(x)-1;
sebuah fungsi yang akan digunakan untuk menghitung rerata dan dan
function [jumlah,mean]=fungsiku(x)
N=length(x);
jumlah=sum(x);
mean=sum(x)/N;
>> s=1:3;
>> [J,M]=fungsiku(s)
J=
M=
yaitu,
outarg1 = ... ;
outarg2 = ... ;
...
diganti dengan s.
Kita dapat menentukan lebih dari satu argumen ouput. Pada contoh,
argumen ouput yang kita buat yaitu jumlah dan mean. Kita dapat
[outarg1, ouarg2, ...]. Jika hanya menginkan hasil dari outarg1 saja,
>> jum=fungsiku(x)
jum =
Matlab. Apabila fungsi yang kita buat diberikan nama lain, maka
disimpan. Sebagai contoh, jika fungsi yang telah kita buat bukan
>> r=rand(1,10);
>> [J,M]=stats(r)
J=
3.8603
M=
0.3860
perintah nargin.
function y = myfunction(a, b, c)
disp( nargin );
...
nargout.
disp( nargout );
...
turunannya f ' x pada file fungsinya. Nah, ini kurang praktis karena kita
akan selalu mengedit file tersebut manakala fungsi yang akan dicari
akarnya berbeda.
fungsi tersebut menjadi lebih umum. Artinya, fungsi tersebut akan dapat
>> fhandle=@cos;
>> y=feval(fhandle,pi)
y=
-1
akan membuat sebuah handle untuk fungsi cos. Untuk program Newton
function [x,f,conv]=newton2(fh,dfh,xo)
x=xo;
step=0;
tol=1e-2;
temp=1;
while (temp>=tol)
xlama=x;
x=x-feval(fh,x)/feval(dfh,x);
step=step+1;
disp([x' feval(fh,x)']);
temp=abs(x-xlama);
end
if temp<=tol
conv=1;
else
conv=0;
end
f=feval(fh,x);
>> xo=1;
>> fh=@f;
>> dfh=@df;
>> [x,f,conv]=newton2(fh,dfh,xo)
>> xo=1;
>> fh=inline('x.^2-3*x-4');
>> dfh=inline('2*x-3');
>> [x,f,conv]=newton2(fh,dfh,xo)
bagaimana cara mendebug secara intraktiv, marilah kita buka kembali file
newton.m.
3 step=0;
4 tol=1e-2;
5 temp=1;
6 while (temp>=tol)
7 xlama=x;
8 x=x-f(x)/df(x);
9 step=step+1;
10 disp([x' f(x)']);
11 temp=abs(x-xlama);
12 end
13 if temp<=tol
15 disp(x);
16 else
18 end
ini, cukup klik pada tanda dash (-) di sebelah kanan nomor baris
dengan menekan tombol F5 atau klik menu Debug > Run. Kita juga
akan dijalankan.
Step atau tekan tombol F10. Saat sampai pada baris nomor 5, kita
➔ Ketika kita sampai pada baris nomor 8, klik F11 maka debuger akan
perintah nomor 6 hingga 12. Kita tahu bahwa program ini akan
panggil newton2.m.
>> xo=1;
>> fh=@f;
>> dfh=@df;
>> [x,f,conv]=newton2(fh,dfh,xo);
breakpoint.
di bawah ini.
Operator Deskripsi
+ Penambahan
- Pengurangan
.* Perkalian
./ Bagi kanan
.\ Bagi kiri
: Operator kolon
.^ Pangkat
.' Transpose
' Transpose konjugat kompleks
* Perkalian matriks
/ Bagi kanan matriks
\ Bagi kiri matriks
^ Pangkat matriks
Operator Deskripsi
Contoh
>>P=[2,3,4;3,4,5;5,6,7];
>> Q=[3,2,4;2,4,5;5,1,2];
>> P==Q
ans =
0 0 1
0 1 1
1 0 0
>> P<Q
ans =
1 0 0
0 0 0
0 0 0
>> P<=Q
ans =
1 0 1
0 1 1
1 0 0
>> P>Q
ans =
0 1 0
1 0 0
0 1 1
>> P>=Q
ans =
0 1 1
1 1 1
1 1 1
BAB 6
KONTROL ALIRAN
5.1) Pendahuluan
Ada delapan pernyataan kontrol kendali yang disediakan di dalam
ditentukan.
atau while.
memungkinkan dua atau lebih pilihan. Bila proses yang diseleksi terpenuhi
atau bernilai benar, maka pernyataan yang ada di dalam blok if akan
tidak
if (kondisi)
ya
Perintah
if (syarat)
pernyataan
Dasar-Dasar Pemrogramanend
Matlab Untuk Sains dan Teknik 151
Supardi, M.Si
Keterangan
pernyataan atau perintah yang berada diantara if dan end akan dijalankan.
b^2>4*a*c 2
b 4 a c
b^2-4*a*c==0 2
b −4 a c =0
b~=4 b≠4
Contoh 6.1
a=2;
if mod(a,2) == 0
disp('Pernyataan benar..!!')
end
logika
And & Dan
Or | Atau
Not ~ Bukan
Xor Eksklusiv Or
logika
Contoh
pernyataan. Jika syarat yang diperiksa bernilai benar atau terpenuhi maka
if(syarat)
pernyataan A
else
pernyataan B
Keterangan
pernyataan
dijalankan
tidak
if (kondisi)
ya
Perintah Perintah
if (x>3)
disp('Pernyataan benar.');
else
disp('Pernyataan salah.');
end
kepada kita apabila terdapat lebih dari satu syarat yang ada untuk
terpenuhi.
if(syarat1)
pernyataan/perintah A
elseif (syarat2)
pernyataan/perintah B
elseif(syarat3)
pernyataan/perintah C
..........
else
Dari bentuk umum di atas dapat dijelaskan sebagai berikut
end.
✗ Dengan cara ini, maka semua syarat akan diuji hingga syarat yang
Ya
Perintah …
If
Perintah ....
Tidak
Ya Perintah …
elseif Perintah ....
Tidak
Ya Perintah …
elseif Perintah ....
Tidak
Perintah …
else Perintah ....
A = n/2;
else
end
kedua ini dapat berada di dalam if sendiri atau berada di dalam else. Untuk
lebih jelasnya lihatlah diagram alir 6.4. Bentuk umum dari pernyataan if
bersarang adalah
if (syarat)
perintah/pernyataan
if (syarat)
perintah/pernyataan
else
perintah/pernyataan
end
else
perintah/pernyataan
if (syarat)
perintah/pernyataan
a=input('Masukkan a:');
if mod(a,2)==0
if (a>5)
else
end
else
if (a<5)
else
end
end
tidak
if (kondisi)
ya
Perintah
Perintah
if (kondisi)
if (kondisi)
Perintah Perintah
Pernyataan logika yang lebih rumit dapat disusun dari tiga operator
logika yaitu and (&), or (|) dan not (~). Sebagai contoh dalam penyelesaian
ax 2bxc=0
akan memiliki akar yang berharga -b/(2a) apabila diskriminan b 2−4 a c=0
x=-b/(2*a);
end
Gambar 6.5 Grafik fungsi kuadrat dengan dua akar yang sama
operator logika untuk membuat kriteria nilai. Tentunya, itu tidak salah..!
Tetapi, ada baiknya juga kalau kita membuat kriteria dengan cara yang
nilai = 100*rand;
disp(nilai);
if (nilai>=80)
disp('Nilai = A');
disp('Nilai = B');
disp('Nilai = C');
disp('Nilai = C');
disp('Nilai = C');
else
end
yang sama
nilai = 100*rand;
disp(nilai);
if (nilai>=80)
disp('Nilai = A');
elseif (nilai>=70)
disp('Nilai = B');
elseif (nilai>=60)
disp('Nilai = C');
elseif (nilai>=50)
disp('Nilai = D');
else
end
5.8) switch-case
Pernyataan switch akan mengeksekusi sekelompok perintah/
strcmp(nilai,ekspresi).
Nilai ekspresi ini berada dalam satu baris dengan case. Baris
apabila ekspresi nilai sesuai dengan ekspresi pada switch. Blok case
eksepresi pada switch tidak sama dengan nilai ekspresi pada case
➔ Pernyataan end.
switch no
case 1
luas=a^2;
case 2
luas=a*b;
case 3
luas=pi*r^2;
otherwise
end
switch no
case 1
luas=a*a;
case {2,3,4}
luas=a*b;
otherwise
end
5.9) while
Pernyataan while akan menjalankan pernyataan atau sekelompok
while (syarat)
pernyataan
end
inisialisai untuk n
cetak n
akhiri perulangan
jum=100;
n = 1;
disp(n)
n = n + 1;
end
1
2
3
4
5
Contoh Program
➢ Sebaliknya
✔ Selesai
Penyelesaian
bil=round(10*rand);
while (bil~=tebak)
if (tebak<bil)
else
end
end
1 2
1 2 3
1 2 3 4
1 2 3 4 5
1 2 3 4 5 6
Penyelesaian
tersebut
inisialiasasi I
inisialisasi x
cetak x
i=1;
while(i<=6)
x=1;
while(x<=i)
fprintf('%i',x);
x=x+1;
end
fprintf('\n');
i=i+1;
end
berikut ini
1−1/31 /5−1/71/9−⋯
Penyelesaian
inisialisasi jum=0
inisialisai tol=10−10
inisialisasi sign=-1
inisialisasi k=1
inisialisasi suku=1
selama (suku>tol)
➔ sign=-sign
➔ suku=1/(2*k-1)
➔ jum=jum+sign*suku
Cetak hasilnya
Selesai
jum=0;
tol=1e-2;
sign=-1;
k=1;
suku=1;
sign=-sign;
suku=1/(2*k-1);
jum=jum+sign*suku;
k=k+1;
end
disp(jum)
gerak lurus beratura (GLB) dan gerak lurus berubah beraturan (GLBB).
Komponen GLB berada pada sumbu x dan komponen GLBB berada pada
sumbu y.
Jarak yang ditempuh oleh peluru selama t detik pada arah sumbu x
adalah
x=v ox t
jalankan
voy
selama y>=0
➔ menampilkan data
dt=0.01;
g=9.8;
vo=10;
sudut=sudut*pi/180;
vox=vo*cos(sudut);
voy=vo*sin(sudut);
x=0;y=0;t=0;
fid=fopen('peluru.txt','w');
while (y>=0)
fprintf(fid,'%f %f %f\n',x,y,t);
t=t+dt;
x=vox*t;
y=voy*t-1/2*g*t^2;
end
fclose(fid);
load peluru.txt;
x=peluru(:,1);
y=peluru(:,2);
t=peluru(:,3);
plot(x,y)
grid on
untuk penambahan negatif, perulangan berakhir saat indeks lebih kecil dari
atau
Keterangan
hingga elemen terakhir tidak lebih dari k jika m>0 dan elemen
N=5;
for i=1:N
end
1 2
1 2 3
1 2 3 4
1 2 3 4 5
1 2 3 4 5 6
Penyelesaian
Cetak bilangan j.
for i=1:6
for j=1:i
fprintf('%5i',j);
end
fprintf('\n');
end
Sekarang misalnya kita ingin mencari sebuah akar dari bilangan a=7,
inisialisasi a
tampilkan
selesai
Dengan algoritma yang telah ditulis di atas maka kita dapat menulis
a=7;
x=a/2;
for i=1:5
x=(x+a/x)/2;
disp(x);
end
disp(sqrt(a))
2.7500
2.6477
2.6458
2.6458
2.6458
2.6458
selain dengan for. Cara yang ditawarkan oleh Matlab ini berbasis pada
vektor.
tic
sum=0;
N=10000;
for n=1:N
sum=sum+n^2;
end
toc
Hasilnya adalah
y = 333333833333127550.000000
elapsed_time =
2.9840e+000
tic
N=1000000;
n=1:N;
y=sum( n.^2 )
toc
Hasilnya adalah
y=
3.3333e+017
elapsed_time =
0.0460
1000000
Dari hasil eksekusi program jumlahan ∑ n2 kita dapat melihat
n=1
perlu sedikit pintar. Dalam contoh ini, kita akan menghitung hingga suku
N=999;
sum=1;
koef=-1;
for n=1:N
if (koef==-1)
koef=1;
end
sum=sum+1/n;
end
disp(sum)
a=7;
x=a/2;
x=(x+a/x)/2;
disp(x);
end
bawah ini
N=20;
for i=1:N
if (i<5)
continue;
end
end
nomor 5 hingga nomor 20. Dengan kata lain, kalimat dari nomot 1 hingga 4
maupun loop while. Apabila break ditemukan di dalam kalang for maupun
N=20;
for i=1:N
if (i>5)
break;
end
end
bersyarat dimana syaratnya telah terpenuhi. Dengan kata lain, kalimat pada
Contoh Program
berikut ini
1−1/31 /5−1/71/9−⋯
Penyelesaian
inisialisasi jum=0
inisialisai tol=10−4
inisialisasi sign=-1
inisialisasi suku=1
inisialisai N=100000000
➔ sign=-sign
➔ suku=1/(2*k-1)
➔ jika suku<tol
➔ hentikan pencarian
➔ jum=jum+sign*suku
Cetak hasilnya
Selesai
jum=0;
tol=1e-4;
sign=-1;
N=100000000
suku=1;
for k=1:N
sign=-sign;
suku=1/(2*k-1);
if (suku<tol)
break;
end
jum=jum+sign*suku;
end
disp(jum)
SOAL
if a>b
if c>a
tmp=c;
else
tmp=a;
end
else
if c>b
tmp=c;
else
tmp=b;
end
end
fprintf(tmp)
Jika ditentukan a=2, b=4 dan c=5, maka tentukan tmp terakhir.
12
20
30
42
function y=f(n)
if n==0
y=0;
else
y=n+f(n-1);
end
• gantikan N dengan 2N
• Misalkan L=NA/2
• misalkan U =L 1− A2 /2
• cetakN,P,E
• selesai
inisialiasasi n=10
fakt=1;
cetak fact
selesai
sebagai berikut
p=10;
x=1;
q=30;
for i=1:q
x=p*x/n;
disp([n q]);
end
2
2
R 2 L−
1
2 C
dengan E=2 dan =2 masing-masing adalah masukan untuk
○ Jika ada 500 unit atau kurang, maka biaya dihitung 2 sen per
unit.
○ Jika lebih dari 500 unit, tetapi tidak lebih dari 1000, maka
selebihnya.
menampilkan total biaya dari 200, 500, 700, 1000 dan 1500.
12. Diketahui kecepatan gerak jatuh bebas dari sebuah objek di dekat
dv
=g ,
dt
dimana v adalah kecepatan dan g adalah percepatan grafitasi yang besarnya
presisi ganda).
2. Inisialisai v=vo;
4. Untuk i=1,N
BAB VII
Matlab
>> x=solve('x-2=0')
x=
2
Matlab akan menganggap bahwa ketika kita menuliskan 'x-2' berarti bahwa
>> x=solve('x-2')
x=
2
yaitu
>> x=solve('a*x+3')
x=
-3/a
Tetapi ada cara lain untuk menyatakan simbol mana yang akan
solve(persamaan,variabel).
>> x=solve('a*x+3','a')
x=
-3/x
persamaan dengan orde lebih tinggi. Cara persis sama dengan cara
x 2−4 x−8=0 ,
>> s= solve('x^2-4*x-8')
ans =
[ 2+2*3^(1/2)]
[ 2-2*3^(1/2)]
4 2
x −4 x −8=0
>> s=solve('x^4-4*x^2-8')
ans =
[ (2+2*3^(1/2))^(1/2)]
[ -(2+2*3^(1/2))^(1/2)]
[ (2-2*3^(1/2))^(1/2)]
[ -(2-2*3^(1/2))^(1/2)]
Matlab sebagai s(1), s(2), s(3) ... s(n) sesuai dengan jumlah akar
>> s=solve('x^4-4*x^2-8');
>> s(1)
ans =
(2+2*3^(1/2))^(1/2)
>> s(2)
ans =
-(2+2*3^(1/2))^(1/2)
>> s(3)
ans =
(2-2*3^(1/2))^(1/2)
>> s(4)
ans =
-(2-2*3^(1/2))^(1/2)
dipecahkan.
>> d='x^4-4*x^2-8=0';
>> solve(d)
ans =
[ (2+2*3^(1/2))^(1/2)]
[ -(2+2*3^(1/2))^(1/2)]
[ (2-2*3^(1/2))^(1/2)]
[ -(2-2*3^(1/2))^(1/2)]
masukkan dengan perintah ezplot. Sebagai contoh jika kita ingin mengeplot
>> d=('x^2-4*x-8');
>> ezplot(d)
dengan perintah
ezplot(f,[x1 x2])
yang ingin kita buat berada dalam range x 1x x 2 . Jadi, jika cara ini
yang kita gunakan maka kita dapat memilih range pada sumbu x agar
>> d=('x^2-4*x-8');
x, ita juga dapat menentukan range ploting pada kedua sumbu y. Jika kedua
maka
>> d=('x^2-4*x-8');
>> ezplot(d,[-4,8,-13,15])
Gambar 7.3 Grafik simbolik fungsi dengan domain pada sumbu x dsn y
ini yang kita lakukan maka tentu saja akan muncul pesan kesalahan.
>> d=('x^2-4*x-8=0');
>> ezplot(d)
Contoh 7.1
Penyelesaian
Pertama, kita buat terlebih dahulu bentuk fungsi yang akan diplot
dan disimpan dalam variabel d. Setelah itu kita panggil ezplot untuk
10^1/2).
>> d='x^4+2*x^2-sqrt(10)';
>> s=solve(d)
s=
[ (-1+(1+10^(1/2))^(1/2))^(1/2)]
[ -(-1+(1+10^(1/2))^(1/2))^(1/2)]
[ i*(1+(1+10^(1/2))^(1/2))^(1/2)]
[ -i*(1+(1+10^(1/2))^(1/2))^(1/2)]
>> ezplot(d)
>> double(s(1))
ans =
1.0199
>> double(s(2))
ans =
-1.0199
>> double(s(3))
ans =
0 + 1.7436i
>> double(s(4))
ans =
0 - 1.7436i
sejumlah variabel yang tidak diketahui, maka Matlab akan dengan mudah
>> q=solve('2*x-5*y=10','5*x+2*y=5');
koma. Setiap persamaan yang dituliskan juga harus berada diantara tanda
petik tunggal.
>> x=q.x
x=
45/29
>> y=q.y
y=
-40/29
Misalnya
>> pers1='2*x+4*y-5*z+u-10*v=1';
>> pers2='x+10*y-3*z+10*u+2*v=10';
>> pers3='5*x-2*y+3*z-3*u-2*v=6';
>> pers4='10*x-5*y+z+u-4*v=7';
>> pers5='4*x+6*y+9*z-2*u+7*v=2';
>> q=solve(pers1,pers2,pers3,pers4,pers5);
>> x=q.x
x=
-13063/51
>> y=q.y
y=
-15622/153
>> z=q.z
z=
8421/17
>> u=q.u
u=
51794/153
>> v=q.v
v=
-46817/153
Contoh
Penyelesaian
>> d='log(x)-log(x-5)=4';
>> s=solve(d);
>> s(1)
ans =
5*exp(4)/(-1+exp(4))
bentuk eksponen
y=34 x
x
y=3 2
dengan mudah dapat diperoleh y
>> d1='y=3^(2*x)';
>> d2='y=3^x+1';
>> s=solve(d1,d2);
>> s(1)
ans =
x: [2x1 sym]
y: [2x1 sym]
Ternyata yang muncul hanyalah dua variabel yang ingin kita cari.
>> s.x(1)
ans =
log(1/2*5^(1/2)+1/2)/log(3)
>> s.x(2)
ans =
log(1/2-1/2*5^(1/2))/log(3)
>> s.y(1)
ans =
3/2+1/2*5^(1/2)
>> s.y(2)
ans =
3/2-1/2*5^(1/2)
>> a=double(s.x(1))
a=
0.4380
>> b=double(s.x(2))
b=
-0.4380 + 2.8596i
>> c=double(s.y(1))
c=
2.6180
>> d=double(s.y(2))
d=
0.3820
y=e 2x x
diperoleh
>> d='exp(2*x)+x=0';
>> s=solve(d)
s=
-1/2*lambertw(2)
>> double(s)
ans =
-0.4263
>> syms x
>> taylor(cos(x))
ans =
1-1/2*x^2+1/24*x^4
lima suku. Dalam kasus penderetan fungsi cos(x) di atas yang tertampil
hanya ada tiga suku. Hal ini dikarenakan pada suku yang ke 2 dan ke 4,
Dengan perintah ini, kita dapat memesan sampai berapa suku deret
yang diinginkan. Sebagai contoh, jika kita menginkan 15 suku deret fungsi
exp(x):
>> syms x
>> s=taylor(exp(x),15)
s=
1+x+1/2*x^2+1/6*x^3+1/24*x^4+1/120*x^5+1/720*x^6+1/5040*x^
7+1/40320*x^8+1/362880*x^9+1/3628800*x^10+1/39916800*x^11
+1/479001600*x^12+1/6227020800*x^13+1/87178291200*x^14
perintah expand.
>> syms x;
>> expand((x-2)*(x+4))
ans =
x^2+2*x-8
>> expand(cos(2*x))
ans =
2*cos(x)^2-1
memberi tahu kepada Matlab bahwa variabel kita berupa simbolik. Jika hal
bawah ini
>> syms x;
>> syms y;
>> expand(cos(x+y))
ans =
cos(x)*cos(y)-sin(x)*sin(y)
>> expand(cos(x-y))
ans =
cos(x)*cos(y)+sin(x)*sin(y)
>> expand(sin(x+y))
ans =
sin(x)*cos(y)+cos(x)*sin(y)
>> expand(sin(x-y))
ans =
sin(x)*cos(y)-cos(x)*sin(y)
>> expand(tan(x-y))
ans =
(tan(x)-tan(y))/(1+tan(x)*tan(y))
>> expand(sin(2*x))
ans =
2*sin(x)*cos(x)
>> expand(tan(2*x))
ans =
2*tan(x)/(1-tan(x)^2)
>> z=x^2*(x^2+2*x-4);
>> collect(z)
ans =
x^4+2*x^3-4*x^2
>> syms t;
>> y=(1+t^2)*cos(t)+t*cos(t);
>> collect(y)
ans =
cos(t)*t^2+t*cos(t)+cos(t)
yaitu dengan fungsi factor. Ini tentunya sebagai kebalikan dari fungsi
>> syms x;
>> z=x^2-5*x-14;
>> factor(z)
ans =
(x+2)*(x-7)
>> z=sin(x)^2+2*sin(x)+1;
>> factor(z)
ans =
(sin(x)+1)^2
Kita juga dapat memfaktorkan lebih dari satu persamaan, sebagai contoh
>> z1=x^2-y^2;
>> z2=x^3-y^3;
>> factor([z1,z2]);
>> syms x;
>> syms y;
>> z1=x^3-y^3;
>> z2=x^2-y^2;
>> simplify(z1/z2)
ans =
(x^2+x*y+y^2)/(x+y)
e 2log4x=elog16x =16 x 2
>> z=exp(2*log(4*x));
>> simplify(z)
ans =
16*x^2
SOAL LATIHAN
(d) x 3− y 3=27
(b) 2 x 2 2 x−2=0
BAB VII
DIFERENSIAL
simboliknya.
fungsi dengan perintah limit. Sebagai contoh, jika kita ingin mengetahui
>> syms x;
>> f=x^3+3*x^2-4*x+10;
>> g=2*x^3+10*x^2-4*x+10;
>> limit(f/g,inf)
ans =
akan dicari harga limitnya adalah berupa varabel simbolik. Oleh sebab itu,
contoh
>> syms x
>> limit(x^2-9,4)
ans =
Sifat pertama dari limit fungsi adalah bahwa limit dari jumlahan dua
buah fungsi sama dengan jumlah dari limit masing-masing fungsi atau jika
Contoh 7-1.
2 x 2x −4 x−10
Misalnya f x = dan g x= . Hitunglah limit
x−2 2 x1
Penyelesaian
>> syms x
>> f=(2*x^2+x-4)/(x-2);
>> g=(x-10)/(2*x+1);
>> F1=limit(f+g,3)
F1 =
16
>> F2=limit(f,3)+limit(g,3)
F2 =
16
lim
x 3
2 x 2x−4
x −2
=17 , lim
x −10
x 3 2 x1
=−1 dan lim
x 3 x−2
2 x 2 x−4 x−10
2 x1
=16 .
Selanjutnya, aturan kedua limit adalah limit dari perkalian antara
kontanta dengan fungsi sama dengan konstanta dikalikan dengan limit fungsi
tersebut, yaitu
lim kf x=k lim f x
x a x a
>> syms x;
>> f1=2*(x^2+x-4);
>> f2=x^2+x-4;
>> limit(f1,3)
ans =
16
>> 2*limit(f2,3)
ans =
16 (Terbukti)
Aturan ketiga limit mengatakan bahwa limit dari perkalian antara dua
fungsi f dan g sama dengan perkalian dari masing-masing limit tersebut, yaitu
lim f x g x =lim f x lim g x
x a x a x a
Contoh. Jika f x = x 2x −4 dan g x= x−1 , maka buktikan aturan
Penyelesaian
>> syms x;
>> f=x^2+x-4;
>> g=x-1;
>> limit(f*g,2)
ans =
>> limit(f,2)*limit(g,2)
ans =
yang dipangkatkan dengan g(x) akan sama dengan limit fungsi f(x) dipangkatkan
x a x a
DIFERENSIAL
Beberapa integral yang tidak dapat diselesaikan secara analiti. Oleh karena
Drawing 1:
Dasar-Dasar Pemrograman Matlab Untuk Sains dan Teknik 216
Supardi, M.Si
integral dan x=b disebut batas atas integral sedangkan x adalah variabel
integral.
Jarak yang ditempuh oleh benda setelah bergerak dari t=a hingga
t=b dan posisi awal ada di s(a) ketikan t=a dinyatakan sebagai
b
s t=∫ v t ts a
a
integral dari arus yang dikenakan melalui kapasitor tersebut. Jika mula-
[∫ ]
b
1
v b = it dt Q a
C a
5.1.4. Usaha
Usaha yang dilakukan oleh sebuah benda yang dikenai gaya F x
selanjutnya
d
W =∫ k x dx
0
fungsi x, maka
b b b
1
atas mengandung titik x=1 . Fungsi harganya menjadi tak
1−x
terdefinisi saat nilai x mendekati harga sama dengan 1 dari arah kiri ke
Kita tahu bahwa ln 0=−∞ . Yang perlu kita ketahui bahwa meskipun
titik mana yang menyebabkan nilai integral tak terdefinisi. Nah, titik-titik
5.2) Turunan
Turunan dan integral merupakan dua operasi yang saling
f x =∫ g x dx
(slope), sehingga f(x) sering disebut pula sebagai fungsi kemiringan. Beberapa
f x
Jika kita memiliki fungsi h x = , maka
g x
df dg
g x − f x
dh dx dx
=
dx g 2
Contoh
sin x dy
Jika diketahui y= , maka carilah . Dengan
x dx
menggunakan aturan pembagian dengan mudah diperoleh
d sin x dx
x −sin x
dy dx dx
=
dx x 2
x cos x −sin x
=
x2
menyatakan bahwa
dh df dy
=
dx dy dx
Contoh
df
Jika diketahui f =sin y dan y=cos x maka carilah .
dx
Dengan menggunakan aturan berantai dengan mudah diperoleh
df df dy
=
dx dy dx
d sin y d cos x
=
dy dx
=cos y −sin x
=−cos cos x sin x
Metode Trapesium
∫ f x dx= b−a
2
[ f a +f b ] +E
a
Suku pertama pada ruas kanan adalah aturan trapezium yang kita
gambar (3-3)
Perintah Deskripsi
trapz(x,y) Perintah ini digunakan untuk menghitung
yang diberikan.
dengan quad.
Contoh
1
Penyelesaian
>> x=linspace(0,1,100);
>> y=x-cos(x);
>> plot(x,y)
>> trapz(x,y)
ans =
-0.3415
Contoh
pesawat terbang. Dimisalkan pesawat dari keadaan diam pada t=0 dan
Tabel 9.2 Percepatan pada setiap waktu yang diukur dengan akselerometer.
Waktu 0 1 2 3 4 5 6 7
Percepatan (m/s2) 0 2 4 7 20 23 40 55
Penyelesaian
fungsi quad atau quadl, karena integrand berupa data diskret. Oleh
>> t=[0:7];
>> a=[0,2,4,7,20,23,40,55];
>> v=trapz(t,a)
ans =
123.5000
t=[0:7];
a=[0,2,4,7,20,23,40,55];
v(1)=0;
for i=2:8
v(i)=trapz(t(1:i),a(1:i))
end
disp([t' v']);
t=[0:7];
a=[0,2,4,7,20,23,40,55];
v(1)=0;
for i=1:7
v(i+1)=trapz(t(i:i+1),a(i:i+1))+v(i);
end
disp([t' v']);
ini
0 0
1.0000 1.0000
2.0000 4.0000
3.0000 9.5000
4.0000 23.0000
5.0000 44.5000
6.0000 76.0000
7.0000 123.5000
maka metode Simpson 1/3 dapatdi terapkan untuk memperoleh harga yang
[ ]
b N /2−1 N /2−1
Contoh
batas atas b.
Penyelesaian
trapz dapat menyelesaikan dengan nilai eksak untuk fungsi integrand linier,
maka quad dapat memperoleh harga eksak untuk integrand yang berbentuk
kuadratik.
Contoh
6
Penyelesaian
hasilnya
>> x=linspace(4,6,20);
>> y=x.^2-3*x-4;
>> trapz(x,y)
ans =
12.6704
>> y=inline('x.^2-3*x-4');
>> quad(y,4,6)
ans =
12.6667
4
]
∫ x 2 −3 x−4 dx= 13 x 3− 32 x 2−4 x =−618.6667=12.6667
4
dahulu kita akan mengenalkan teori sederhana tentang beda hingga. Apa
yang dimaksud dengan beda hingga? Tentunya kita masih ingat ketika
atau
dy y x x −y x − x
= lim (5-7)
dx x 0 2 x
berhingga. Oleh sebab itu, metode ini disebut dengan metode beda hingga.
y ( xn + h ) − y ( xn )
Beda maju
h
y ( xn + h ) − y ( xn − h )
Beda terpusat
2h
y ( xn ) − y ( xn − h )
Beda Mundur
h
BAB VIII
APLIKASINYA
5. Pertumbuhan Bakteri
N t =N 0 e
rt
,
tetapi kita juga akan mendekatinya dengan metode Euler maju dengan
algoritma yang telah diberikan di atas. Dibawah ini diberikan kode sumber
a=0;
b=10;
dt=1;
M=round((b-a)/dt);
N=10;
N_eksak=10;
r=0.1;
fid=fopen('bakteri.txt','w');
for i=1:M
t=a+i*dt;
fprintf('%f %f %f\n',t,N,N_eksak);
fprintf(fid,'%f %f %f\n',t,N,N_eksak);
end
fclose(fid);
load bakteri.txt;
t=bakteri(:,1);
N=bakteri(:,2);
N_eksak=bakteri(:,3);
plot(t,N,'-',t,N_eksak,'--');
xlabel('t');
legend('N','N_eksak');
6. Arus Listrik
Jika kita memiliki sebuah rangkaian listrik yang terdiri atas sebuah
pada saat t=0, maka menurut hukum Kirchofff ungkapan untuk sistem ini
adalah
di
L Ri=V
dt
dimana i adalah arus yang mengalir pada rangkaian. Begitu saklar dalam
i=
V
L
1e
−R
L
t
,
berikut.
diferensial
di −R V
= i
dt L L
yaitu
function I=listrik(t,i)
R=1;L=1;V=1;
I=-R/L*i+V/L;
>> a=0;b=6;R=1;L=1;V=1;
>> i0=0;
>> [t,i]=ode23(@listrik,[a:0.01:b],i0);
>> plot(t,i,'lineWidth',3);
tertentu. Kejadian alam yang terjadi pada cuaca pada waktu tertentu tidak
diferensial berikut ini akan memodelkan gejala chaos yang terjadi pada
sistem berikut ini lebih sederhana namun tidak menghilangkan esensi dari
Matlab melalui ODE Solver. Dalam hal ini, kita akan selesaikan
function f=lorenz(t,x)
f=zeros(3,1);
f(1)=10*(x(2)-x(1));
f(2)=-x(1)*x(3)+28*x(1)-x(2);
f(3)=x(1)*x(2)-8*x(3)/3;
Tiga elemen yaitu x(1), x(2) dan x(3) mewakili variabel x,y dan z.
diferensial.
>> x0=[-1,-3.2,15];
>> plot(t,x)
>> xlabel('t');
3. Selanjutnya ubahlah syarat awal untuk variabel x,y dan z yaitu x(1)=-
3, x(2)=3, dan x(3)=10. Ploting data untuk masukan syarat awal ini
Gambar 6.2 Gejala chaos setela masukan syarat awal berbeda dari
gambar 6.1
dan ode23tb.
d 2 y1 dy
2
− 1− y 21 1 y 1=0
dx dx
function dydt=vdp(t,y)
berikut:
y(1)=2.4;
y(2)=0;
plot(t,y(:,1),'-',t,y(:,2),'--')
xlabel('waktu t');
ylabel('penyelesaian y');
legend('y_1','y_2')
yang harus ditentukan secara manual dari fungsi yang dibuat. Sedangkan
itu, kali ini kita akan memberikan contoh bagaimanakan membuat fungsi
dx
= px−qxy
dt
dy
=rxy−sy
dt
()
dimana x(t) dan y(t) adalah populasi predator dan prei pada waktu t,
berikut ini:
function f=voltera(t,x,p,q,r,s)
f=zeros(2,1);
f(1)=p*x(1)-q*x(1)*x(2);
f(2)=r*x(1)*x(2)-s*x(2);
>> p=0.4;q=0.04;r=0.02;s=2;x(1)=105;x(2)=8;
>> plot(t,x);xlabel('Waktu');ylabel('Populasi');
Gambar 8.
Keterangan:
10.