Pengantar untuk
Pemrograman MATLAB
1.1 Pendahuluan
MATLAB (Matrix Laboratory) adalah sebuah program
untuk analisis dan komputasi numerik dan merupakan suatu
bahasa pemrograman matematika lanjutan yang dibentuk
dengan dasar pemikiran menggunkan sifat dan bentuk
matriks. Pada awalnya, program ini merupakan interface
untuk koleksi rutin-rutin numerik dari proyek LINPACK dan
EISPACK, dan dikembangkan menggunkan bahasa FORTRAN
namun sekarang merupakan produk komersial dari
perusahaan Mathworks, Inc.yang dalam perkembangan
selanjutnya dikembangkan menggunakan bahasa C++ dan
assembler (utamanya untuk fungsi-fungsi dasar MATLAB).
MATLAB telah berkembang menjadi sebuah
environment pemrograman yang canggih yang berisi fungsifungsi built-in untuk melakukan tugas pengolahan sinyal,
aljabar linier, dan kalkulasi matematis lainnya. MATLAB juga
berisi toolbox yang berisi fungsi-fungsi tambahan untuk
aplikasi khusus . MATLAB bersifat extensible, dalam arti
bahwa seorang pengguna dapat menulis fungsi baru untuk
ditambahkan pada library ketika fungsi-fungsi built-in yang
tersedia tidak dapat melakukan tugas tertentu. Kemampuan
pemrograman yang dibutuhkan tidak terlalu sulit bila Anda
telah memiliki pengalaman dalam pemrograman bahasa lain
seperti C, PASCAL, atau FORTRAN.
MATLAB
dikembangkan
merupakan
oleh
merk
software
yang
Mathworks.Inc.(lihat
Judul Buku
Pemrograman
modeling,
pembuatan prototipe
simulasi,
dan
diary 'c:\backup\mydata.txt'
Judul Buku
dari
direktori aktif.
pwd
sedang
clc
doc
secara
online.
demo :
tampilan
Digunakan
untuk
mencoba
beberapa
(Editor
M-File/Pencarian
Judul Buku
Contoh
>> x=0:2:360;
>> y=sin(x*pi/180);
>> plot(x,y)
- Sine.
sinh
- Hyperbolic sine.
asin
- Inverse sine.
asinh
cos
- Cosine.
cosh
- Hyperbolic cosine.
acos
- Inverse cosine.
acosh
tan
- Tangent.
tanh
- Hyperbolic tangent.
atan
- Inverse tangent.
atan2
atanh
sec
- Secant.
sech
- Hyperbolic secant.
asec
- Inverse secant.
asech
csc
- Cosecant.
csch
- Hyperbolic cosecant.
acsc
- Inverse cosecant.
acsch
cot
- Cotangent.
coth
- Hyperbolic cotangent.
acot
- Inverse cotangent.
acoth
Exponential.
Judul Buku
exp
- Exponential.
log
- Natural logarithm.
log10
log2
pow2
sqrt
- Square root.
nextpow2
Complex.
abs
- Absolute value.
angle
- Phase angle.
complex
conj
- Complex conjugate.
imag
real
unwrap
isreal
cplxpair
floor
ceil
round
mod
rem
sign
- Signum.
10
Judul Buku
11
s/s
>>
s\s
>>
inv(s) * s
>> a/b
>> a\b
>> c = [ 1 1; 1 1 ]
>> inv(c);
12
Judul Buku
>> t = 0:.3:10;
>> y = sin(t);
>> plot(t,y)
z = x .* exp(-x.^2 - y.^2);
>>
mesh(z)
Keterangan:
Untuk setiap perintah di atas sebelum ke perintah
selanjutnya maka tekan enter agar dapat ditampilkan
outputnya.
Bilangan real
Bilangan kompleks
13
14
Judul Buku
Perkalian a x b
Pembagian a : b
Pemangkatan ab
*
/ atau \
^
15
seismologi=4
tomografi=2
analisis_sinyal=3
gravitasi=4
seismologi =
4
tomografi =
2
analisis_sinyal =
3
gravitasi =
4
total_sks=12
total_sks =
12
ip=(seismologi*4+tomografi*2+analisis_sinyal*3+gravitasi*
3)/total_sks
ip =
3.4167
16
Judul Buku
N=e(2*x)+x
O=sqrt((1/(x+y))+(1/(t+z)))
P=4*(e(-x/2))*sin(pi*x)
Tentukan nilai fungsi tersebut dengan nilai-nilai t=25, x=43,
y=15.25, z=8.2 !
17
4
RE 3 RI 3
3
18
Judul Buku
19
Deskripsi
Kurang dari
Lebih dari
Kurang dari atau sama
dengan
>=
Lebih
dari
atau
sama
dengan
=
Sama dengan
~=
Tidak sama dengan
Operator
relasi
MATLAB
dapat
digunakan
untuk
membandingkan dua array berukuran sama atau untuk
membandingkan array dengan skalar.
Operator logika menyediakan cara untuk menggabung atau
menegasikan ekspresi relasi.
20
Judul Buku
Deskrips
i
AND
OR
NOT
1.9. Demos
Untuk mengetahui atau belajar lebih banyak
mengenai MATLAB, MATLAB menyediakan fasilitas yang
dapat dijalankan dengan menggunakan command demo
yang diketikkan pada Command Window atau dengan
mengklik pada menu Help dan pilih Examples dan
Demos dari menu pull-down yang disediakan. Beberapa
demos MATLAB menggunakan Command Window dan
Figure Window sekaligus.
Sebagai contoh untuk belajar lebih jauh mengenai
matriks dalam MATLAB, dapat membuka demo window
dengan menggunakan satu metode yang dijelaskan di
atas tadi. Pada jendela kiri pilih Matrices dan pada
jendela kanan pilih Basic matrix operations kemudian
klik pada Run Basic matrix. Tampilan yang dihasilkan
adalah sebagai berikut :
21
22
Judul Buku
dapat
23
Web
site:
24
Judul Buku
Bab 2
2 TIPE DATA
Software MATLAB mengenal 3 tipe data yaitu : string,
scalar, dan matriks. Array merupakan matriks yang hanya
memiliki satu baris. MATLAB juga memiliki banyak fungsi
built-in untuk bejkerja memanipulasi tipe data tersebut.
Berikut ini beberapa contoh yang menjelaskan ketiga tipe
data tersebut di atas.
2.1 String
String dalam MATLAB adalah type data yang terdiri
atas huruf-huruf dan atau nilai-nilai ASCII yang
ditampilkan representasinya. String adalah teks yang
diawali dan diakhiri dengan apostrof .
Contoh :
p='hallo apa kabar'
p =
hallo apa kabar
size(p)
ans =
1
15
whos
Name
Size
Bytes
Class
ans
1x2
16
double array
1x15
30
char array
25
32
97 112 97 32 107 97
Columns 13 through 15
98
97
114
abs(p)
ans =
Columns 1 through 12
104
97
108
108
111
32
97
112
97
32
107
97
Columns 13 through 15
98
97
114
26
Judul Buku
t =
kabar
Penggabungan
string
penggabungan array:
mengikuti
Contoh
a='jika anda belajar rajin,'
a =
jika anda belajar rajin,
b='maka anda akan dapat nilai yang bagus'
b =
maka anda akan dapat nilai yang bagus
c=[a b]
c =
aturan
27
2. fungsi input
Contoh:
nama=input('Masukkan nama anda !','s')
Masukkan nama anda !
disp('Nama yang anda masukkan=');
Nama yang anda masukkan=
disp(nama);
28
Judul Buku
3. fungsi fprintf
Command ini berfungsi untuk menampilkan output di
layar atau menyimpan output di suatu external file ( sama
halnya dengan command fprint di C/C++). Fungsi ini
mempunyai argumen sbb:
fprintf( ' nama file ' ,' format string ' , list)
Contoh 2.
x=1007.46 ; y=2.1278;k=17;
fprintf('x= %8.2f y=%8.2f k=%2.0f',x,y,k)
x= 1007.46 y= 2.13 k=17
29
2.2. Scalar
Scalar adalah nama lain dari data numeric, Dalam
MATLAB data scalar dapat dimanipulasikan dengan
menggunakan beberapa fungsi, seperti type string
sebelumnya. Berikut ini beberapa contohnya:
x=0:0.1:1;
y=[x;tan(x)];
fid=fopen('c:\backup\tan.txt','w');%
fprintf(fid,'&6.2f %12.8f\n',y);
fclose(fid);
0.00000000
0.10
0.10033467
0.20
0.20271004
0.30
0.30933625
0.40
0.42279322
0.50
0.54630249
0.60
0.68413681
0.70
0.84228838
0.80
1.02963856
0.90
1.26015822
30
Judul Buku
1.00
1.55740772
2.3. Array.
MATLAB menangani array secara intuitif. Untuk
membuat array dalam MATLAB, yang perlu dilakukan
hanyalah mengetikkan kurung kotak kiri, memasukkan
elemen-elemen denagn dipisahkan oleh spasi atau koma,
kemudian menutup array dengan kurung kotak kanan.
Berikut ini akan diberikan beberapa contoh
assignment untuk array :
a. Pengalamatan array
Dalam MATLAB elemen-elemen array diakses
menggunkan subcript; misalnya x(1) adalah elemen
pertama x, x(2) adalah elemen kedua x, dan seterusnya.
Contoh :
1. x=[2 4 6 8 10]
31
bahkan
z=10:-2:1
z =
10
32
Judul Buku
y=x(2:4)
y =
2
n=n(1:length(n)-1)
n =
1
a. Menghapus
tertentu
elemen
pada
index
z([2 4])=[]
z =
1
2.4. Matriks
Matriks merupakan bentuk utama dari MATLAB,
seperti halnya array matriks juga didefenisikan elemen
33
5
1
A=
5
1
34
Judul Buku
Size
Bytes
Class
3x3
72
double array
3x3
72
double array
3x2
48
double array
10
11
12
>> A+C
??? Error using ==> +
Matrix dimensions must agree.
Matrix multiplication is also defined:
>> A*C
ans =
22
28
49
64
76
100
>> C*A
??? Error using ==> *
Inner matrix dimensions must agree.
If A is a square matrix and m is a positive integer,
then A^m is the product of m factors of A.
35
C(:,:,2) =
5
>> D = [1;2]
D =
1
2
>> whos
Name
Size
Bytes
Class
2x2x2
64
double array
2x1
16
double array
36
Judul Buku
3. >>2*A
4. >>inv(B)
37
Bab 3
3 FUNGSI M-FILE
3.1. Fungsi M-File
Penulisan barisan ekspresi dalam MATLAB
command window biasanya dilakukan baris perbaris dan
biasanya untuk menyimpan barisan perintah dan hasil
outputnya dengan menggunkan command diary. Hal ini
sangatlah tidak efisien dikarenakan barisan yang telah
tersimpan di diary tidak dapat diloadkan kembali
seandaianya telah keluar dari MATLAB. Apalagi jika dilakukan
banyak sekali perulangan barisan perintah yang sama,
misalkan dilakukan pengolahan data dan perhitungan yang
samayang melibatkan data atau fungsi yang berbeda. Untuk
itu MATLAB menyediakan suatu struktur untuk membuat
fungsi anda sendiri atau suatu teknik pemrograman dalam
bentuk M-File.
Fungsi M-file hampir sama dengan script file
dimana keduanya merupakan suatu file teks dengan ekstensi
.m. Fungsi M-file ini tidak dimasukkan dalam command
window, melainkan suatu file tersendiri yang dibuat dalam
editor teks (MATLAB editor/debugger).
Suatu fungsi M-File harus mengikuti beberapa
aturan. Fungsi M-file juga mempunyai sejumlah sifat penting.
Aturan-aturan dan sifat-sifat tersebut meliputi :
1. Nama fungsi dan nama file harus identik. Contohnya
flipud disimpan dalam file yang bernama flipud.m
2. Pertama kali MATLAB mengeksekusi suatu fungsi Mfile, MATLAB membuka file fungsi tersebut dan
38
Judul Buku
39
40
Judul Buku
koordinat
titik
yang
akan
dicari
41
blok_tomo
no blok = 8471
42
Judul Buku
43
[xbar]=average(x)
xbar =
2.5000
44
Judul Buku
45
dan
B = ones(2)
B =
1
maka
C = f(A, B)
C =
1.4142 2.2361
3.1623 4.1231
Dalam
pembahasan
sebelumnya
anda
telah
mempelajari tentang bagamaimana membuat suatu fungsi
file. Beberapa fungsi mengambil input argumen dari fungsi
lainnya, yang berupa string. Untuk menjalankan fungsi
khusus tersebut yang namanya disebutkan oleh string maka
digunakan command feval seperti yang ditunjukkan di
bawah ini :
46
feval('functname',
functname)
Judul Buku
input
parameters
of
function
47
function k = isint(x);
% Check whether or not x is an integer number.
% If it is, function isint returns 1 otherwise it returns 0.
if abs(x - round(x)) < realmin
k = 1;
else
k = 0;
end
48
Judul Buku
Dengan
persamaan
umumnya
49
2x
x
x
+ cos
, maka script untuk program
2. 4
2.4
2. 4
m-filenya dapat dituliskan sebagai berikut :
function p=coba(x)
x=x/2.4;
p=x^3-2*x+cos(pi*x);
[r,c] = radius(A);
50
Judul Buku
BAB 4
4 CONTROL FLOW
Untuk mengatur jalannya eksekusi dari statement di
dalam script/m-file maka diperlukan adanya kontrol program.
Kontrol program sangat berguna karena memungkinkan
komputansikomputansi
yang
lalu
mempengaruhi
komputansi yang akan datang. Jika pernah menggunakan
51
fasilitas kontrol ini , maka bab ini bukanlah hal yang baru
bagi anda . Namun jika kontrol program ini dianggap sebagai
sesuatu yang baru,maka materi ini mungkin tampak rumit.
Jika hal itu terjadi, maka pelajarilah materi ini pelan-pelan.
Matlab menyediakan empat struktur kontrol program,
yaitu loop for, loop while, kontruksi switch-case dan
kontruksi if-else-end. Kontruksi-kontruksi tersebut seringkali
melibatkan banyak perintah Matlab, yang oleh karenanya
konstruksi ini lebih banyak terdapat dalam M-file.
4.1.Loop for
Loop for memungkinkan sekelompok perintah diulang
sebanyak suatu jumlah yang tetap. Be ntuk umum loop for
adalah:
for x= *array/matriks
statement1;
statement 2;
end
Keterangan: *aturan pembuatan array seperti yang telah dibahas
pada bab sebelumnya.
52
Judul Buku
x =
0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 0.8090
0.5878 0.3090 0.0000
53
x =
-4
x =
-4
x =
-4
x =
-4
54
Judul Buku
0.2000
0.1667
0.1429
0.1250
0.1111
end
55
a= =b
a>b
a<b
a>=b
a<=b
a~=b
a&b
a|b
a xor b
~a
56
Judul Buku
while (1+eps)>1
eps=eps/2;
num=num+1;
end
57
n=n+1;
end
disp(n)
Keterangan
command
menghitung n!.
prod(1:n)
diatas
akan
4.3.Kontruksi switch-else
Bila sederetan perintah harus dikerjakan dengan
didasarkan pada penggunaan berulang-ulang suatu tes
dengan argumen yang sama, kontruksi switch else akan
lebih tepat digunakan. Konstruksi ini mempunyai bentuk:
switch ekspresi
case test ekspresi 1
deret perintah 1 (statement,,statement)
case {test ekspresi 2, test ekspresi 3, test
ekspresi 4}
deret perintah 2 (statement,,statement)
.
otherwise
deret perintah 3 (statement,,statement)
end
Expresi harus berupa skalar atau karakter string. Jika
ekspresinya adalah skalar, ekspresi= =test_ekspresi di test
oleh statemen case. Jika ekspresi berupa karakter string
maka strcm(ekspresi, test_ekspresi) ditest.
Pada contoh diatas ekspresi dibandingkan dengan
dengan test ekspresi 1 pada statemen case pertama, jika
keduanya sama maka deret perintah akan dikerjakan, dan
deret statemen berikutnya yang berada sebelum
58
Judul Buku
'
,num2str(bilangan),'adalah
otherwise
disp('Bilangan ini tidak mungkin ada')
end
59
switch x
case {1,2}
disp('Probability = 20%');
case {3,4,5}
disp('Probability = 30%');
otherwise
disp('Probability = 50%');
end
60
Judul Buku
61
harga=(1-20/100)*harga;
end
harga
harga =
900
62
Judul Buku
end
sekarang setelah kita tahu bagaimana membuat
keputusan dengan struktur ifelse-end, maka terbukalah jalan untuk menunjukkan cara
melompati atau keluar dari loop for dan loop while, sebagai
contoh :
eps=1;
for num=1:1000
eps=eps/2;
if (1+eps) <=1
eps=eps*2
break
end
end
eps =
2.2204e-016
num
num =
53
63
Contoh 1.
Chebyshev polynomials Tn(x), n = 0, 1, merupakan salah
satu masalah yang penting dalam analisa numerik. Fungsi
didefinisikan secara rekursif seperti berikut ini:
Tn(x) = 2xTn 1(x) Tn 2(x), n = 2, 3, ,
T0(x) = 1, T1(x) = x.
fungsi di atas dapat diimplementasikan ke pemrograman
MATLAB sebagai berikut :
function T = ChebT(n)
% Coefficients T of the nth Chebyshev polynomial of the
first kind.
% They are stored in the descending order of powers.
t0 = 1;
t1 = [1 0];
if n == 0
T = t0;
elseif n == 1;
T = t1;
else
for k=2:n
T = [2*t1 0] - [0 0 t0];
t0 = t1;
t1 = T;
end
end
64
Judul Buku
Contoh 2:
Buat grafik nilai x nya dari contoh 1 tersebut sampai didapat
nilai error
0.0005!
Penyelesaian :
65
clear all
x1=2;
err=1;
i=1; % dibuat indeks kompenen 1 untuk array x
x=[ ];
x(1)=x1; % membuat elemen pertama array x == x1
while err > 0.0005
i;
x2=1+(1/x1);
err=abs(x2-x1);
x(i+1)=x2; % Untuk menyimpan nilai x yang didapat di
array x
x1=x2;
i=i+1; % Membuat indeks 1 bertambah 1 tiap satu kali
looping
end
t=1:length(x); % membuat array berdasarkan banyaknya
looping
plot(t,x)
Contoh 3 :
Diketahui data porositas dari sebuah sumur bor
Well ID
X
Y
Porosity
1
2280
890
1240
1210
1,5
1651
1290
5,7
2169
1230
2,9
2059
1690
10,4
1722
1630
16,1
891
1820
1,9
1385
2060
7,7
1682
2020
15,2
10
1885
2050
7,6
11
1991
2310
11,9
12
1694
2420
15,8
66
Judul Buku
13
1023
2310
6,1
14
1305
2750
4,5
15
1705
2620
12,7
16
2301
2000
12,4
Contoh 4 :
clear all
% Input Data Koordinat source dan receiver ,t dan s
s=[0,-250;0,-633;1000,0]; % source
r=[2000,-1000]; % receiver
t=[1.509;1.447;0.707]; % waktu tempuh gelombang
n=length(s);
% menghitung kecepatan awal
for i=1:n
pj(i,1)=sqrt((r(1)-s(i,1))^2+(r(2)-s(i,2))^2);
end
v0=mean(pj);
% menghitung t calculate
for i=1:n
t_cal(i,1)=pj(i)/v0;
end
% menghitung delta_t
for i=1:n
del_t(i,1)=t(i)-t_cal(i);
end
% membuat matrix model
blok=2;
sumber=3;
for i=1:sumber
for j=1:blok
M(i,j)=pj(i)/2;
end
end
M(3,:)=[0 ,pj(3)];
% bentuk : M*ds=del_t;
% ds=inv(M)*del_t;
% ds=inv(M'*M)*M'*del_t;
ds=inv(M'*M)*M'*del_t;
for i=1:2
dv(i,1)=(-ds(i)*v0^2)/(1+ds(i)*v0);
end
for i=1:2
v(i,1)=v0+dv(i);
end
fprintf('\nkecepatan V1 adalah : %5.3f\n' ,v(1));
67
68
Judul Buku
Bab 5
5 MATRIKS DAN VEKTOR
5.1 Membentuk Matriks dalam
MATLAB.
Matriks merupakan dasar dari pengembangan
MATLAB. Dalam MATLAB nama yang digunakan untuk
matriks haruslah dimulai dengan sebuah huruf dan diikuti
oleh kombinasi huruf-huruf lainnya atau digit. Huruf yang
dimaksudkan boleh huruf kapital atau biasa.
Dalam
MATLAB
operasi
aritmatika
seperti
penjumlahan, pengurangan, perkalian dan pembagian dapat
dibentuk langsung dengan matriks. Langkah pertama yang
dilakukan adalah membentuk matriksnya. Ada bebrapa cara
dalam MATLAB untuk membentuk matriks dengan metode
69
9
5 10
dilakukan dengan mengetikkan perintah berikut :
M=[4 6 -7;2 5 1;8 0 3;5 10 9]
M =
4
-7
10
B = 1
11
3
2
7
12
5
3
8
13
7
4
9
14
10
9
10
15
10
70
Judul Buku
10
11 12 13 14 15]
b =
2
10
10
11
12
13
14
15
a. Transpose Matriks
Jika ingin membuat transpose dari sebuah matriks
dapat dilakukan dengan memberikan tanda apostrope
pada notasi matrik tersebut. Contohnya, jika diketahui
matriks :
1
P =
4
2
5
8
3
6
maka untuk mendapatkan transpose dari
9
Q=P'
71
Q =
1
atau
conj(P')
ans =
b. Matriks Kompleks
Jika X adalah suatu matriks kompleks seperti :
1
X =
j 5
sebagai berikut :
j
maka di MATLAB dapat dientrikan
2
X=[1 j;-j*5 2]
akan menghasilkan :
X =
1.0000
0 - 5.0000i
0 + 1.0000i
2.0000
72
Judul Buku
1.0000
0 + 5.0000i
0 - 1.0000i
2.0000
c. Invers Matriks
Function inv
dalam MATLAB digunakan untuk
menghitung invers matriks
Misalkan diketahui matriks A didefinisikan sebagai berikut
A = [1 2 3;4 5 6;7 8 10]
A =
1 2 3
4 5 6
7 8 10
maka
B = inv(A)
B =
-0.6667 -1.3333 1.0000
-0.6667 3.6667 -2.0000
1.0000 -2.0000 1.0000
1.0000
-0.0000
0
1.0000
73
74
Judul Buku
15
end
B = A([1:k-1,k+1:n],[1:l-1,l+1:n]);
ckl = (-1)^(k+l)*det(B);
75
Misalkan :
A = rand(25);
76
Judul Buku
end
B = [];
for k = 1:n
for l=1:n
B = [B;cofact(A,k,l)];
end
end
B = reshape(B,n,n);
Jika diketahui A = 4
3
5
1
B =
2
0
3
77
C=A+B
C =
3
12
14
D=A-B
D =
1
78
Judul Buku
Contoh 2 :
Jika diketahui vektor x adalah
5
x =
4 dan y merupakan mengurangi 1 dari setiap
b. Perkalian Matriks
1. Perkalian Matriks dengan skalar
Jika A adalah suatu matriks dan c adalah suatu skalar
maka hasil kali cA adalah matriks yang diperoleh
dengan mengalikan masing-masing entri dari A oleh c.
Contoh :
2
A =
4
3
5
dan c=8,
79
c=8
c =
8
K=c*A
K =
16
24
32
40
48
56
80
Judul Buku
-1
12
27
30
13
-4
26
12
C=A*B
C =
Contoh 2.
P=A'
P =
1
-1
D=P*B
81
82
Judul Buku
X(1,3)=C(4,5)+V(9,1);
a(1)=b(1)+d(1)
atau
C(i,j+1)=D(i,j+1) + E(i,j+1) adalah pernyataan-pernyataan
yang benar yang berhubungan dengan elemen matriks. Baris
dan kolom dapat dimanipulasikan sebagai suatu entitas yang
lengkap. Jadi A(:,3), A(5,:). Menunjukkan kolom ke 3 dan baris
ke 5 dari matriks A.
Supaya lebih jelasnya tentang
manipulasi yang dimaksud, dapat dilihat contoh berikut ini :
Diketahui matriks a :
a=[2 3 4 5 6;-4 -5 -6 -7 -8;3 5 7 9 1;4 6 8 10 12;
-2 -3 -4 -5 -6]
a =
2
-4
-5
-6
-7
-8
10
12
-2
-3
-4
-5
-6
v=[1 3 5];
b=a(v,2)
b =
3
5
-3
83
-2
-3
-4
-5
-6
d(:,1)=a(v,2)
d =
3
-3
-7
-8
84
Judul Buku
Q=[5 6;7 8]
Q =
5
P*Q
ans =
19
22
43
50
85
ans =
5
12
21
32
64
2187
65536
0.3333
0.4286
0.5000
3.0000
2.3333
2.0000
86
Judul Buku
87
1
2
3
4
5
maka
angle = acos((a*b)/(norm(a)*norm(b)))
angle =
1.1303
88
Judul Buku
for j=1:n
cp(j) = cofact(C,1,j);
end
end
Misalkan
A = [1 -2 3; 4 5 6; 7 8 9; 1 0 1]
A =
1 -2 3
4 5 6
7 8 9
1 0 1
89
Bab 6
6 SISTEM PERSAMAAN LINEAR
DAN NILAI EIGEN
90
Judul Buku
.
a m1
a12
a 22
.
.
.
am2
... a1n x1 b1
... a 2 n x 2 b2
.
. . .
=
.
. . .
.
. . .
... a mn x n bn
91
92
Judul Buku
3
7
,
0
2
5
8
36
b =
40
70
-2
b=[36;40;70]
b =
93
36
40
70
det(A)
ans =
-70
x=inv(A)*b
x =
16.0857
12.7714
-12.6000
diperoleh
x1=16.0857,
94
Judul Buku
Persamaan
ini
menggunakan
pendekatan
faktorisasi LU dan melambangkan solusi sebagai
pembagian kiri A ke B. Operator pembagian kiri \ tidak
didahului oleh titik karena merupakan operasi matriks.
Cara yang ke dua ini lebih disukai karena hanya
memerlukan sedikit perkalian dan pembagian, sehingga
lebih cepat. Selain itu jika masalah yang didapatkan lebih
besar maka hasil yang diperoleh lebih akurat.
95
4.08x1 - x2 =2.90
SPL di atas adalah suatu persamaan yang inconsisten,
sehingga untuk menyelesaikan
sistem ini digunakan
script MATLAB berikut :
a=[1 1;2.05 -1;3.06 1;-1.02 2;4.08 -1]
b=[1.98;0.95;3.98;0.92;2.90]
x=a\b
0.0358
-0.0444
0.0747
0.0409
96
Judul Buku
-4
-3
b=[1;3]
b =
1
3
x=a\b %penyelesaian denngan jumlah nol terbanyak
x =
0
1.0000
-0.3333
xn=pinv(a)*b %menemukan penyelesaian normal minimum
xn =
-0.4554
0.6585
0.0462
norm(x)
elemen nol
ans =
1.0541
norm(xn)
%penyelesaian normal minimum mempunyai
normal lebih kecil
ans =
0.8019
97
-1
eig(B)
ans =
2
1
Contoh 2.
A=[0 1;-1 0]
A =
0
-1
eig(A)
ans =
98
Judul Buku
0 + 1.0000i
0 - 1.0000i
-17
eig(C)
ans =
0.2679
3.7321
4.0000
99
1
0
11
0
1
dari
statemen
[u,
lambda]=eig(A)
dengan
menggunakan command MATLAB diperoleh hasil sebagai
berikut :
A=[0 1 0;0 0 1;-6 -11 -6]
A =
0
-6
-11
-6
[u,lambda]=eig(A)
u =
-0.5774
0.2182
-0.1048
0.5774
-0.4364
0.3145
-0.5774
0.8729
-0.9435
-1.0000
-2.0000
-3.0000
lambda =
100
Judul Buku
dari
P=poly(A).
Sebagai contoh, jika diketahui matriks A :
0
A =
0
6
1
0
11
0
1
dengan
-6
-11
-6
p=poly(A)
p =
mengetikkan
command
1.0000
6.0000
11.0000
dari
hasil
tersebut
maka
karakteristiknya adalah :
101
6.0000
diperoleh
persamaan
x3 + 6x2 + 11x +6 = 0
dan akar-akar perasamaan dari perasamaan karakteristik
p=0 di atas dapat dihitung di MATLAB dengan
menggunakan function r=roots(p). dan hasilnya adalah :
r=roots(p)
r =
-3.0000
-2.0000
-1.0000
6.0000
11.0000
6.0000
102
Judul Buku
dilakukan
dengan
mengetikkan
f1f2=conv(f1,f2), dan diperoleh hasilnya :
command
f1=[1 0 -20.6]
f1 =
1.0000
-20.6000
19.6000
151.2000
f1f2=conv(f1,f2)
f1f2 =
1.0e+003 *
0.0010
0.0196
0.1306
-0.4038
-3.1147
19.6000
151.2000
r =
0
103
Bab 7
7 PEMROGRAMAN ANALISA
NUMERIK DENGAN MATLAB
8
MATLAB mempunyai banyak tool yang sangat sesuai
untuk perhitungan numerik. Bab ini akan membahas tentang
menhitung akar-akar dari suatu persamaan, interpolasi,
penyelesaian diferensial dan integral secara numerik, dan
penyelesaian persamaan differensial biasa.
104
Judul Buku
Keterangan
Abs
Harga Mutlak
Dblquad
Erf
Fungsi kesalahan
feval
Mengesekusi
fungsi
adisebutkan oleh string
fzero
gamma
Fungsi gamma
inline
interp1
interp2
linspace
meshgri
d
norm
ode23
ode45
ode113
ode15s
yang
namany
105
ode23s
poly
polyval
Mengevaluasi polinomial
ppval
quad
Mengevaluasi
integral
numerik,metode low order
secara
quad8
Mengevaluasi
integral
numerik,metode high order
secara
rcond
roots
spline
surf
unmkpp
106
Judul Buku
107
y = cos(x) - x;
MATLAB maka
r = fzero('f1', 0.5)
r =
0.73908513321516
108
Judul Buku
k = 0, 1,
norm(xold-xnew,'inf')/norm(xnew,'inf')
<
109
(niter == maxiter)
break
end
end
r = xnew;
Misalkan
x0 = [0 0];
maka
[r, iter] = NR('fun1', 'J1', x0, eps, eps, 10)
??? Error using ==> nr
Try a new initial approximation x0
110
Judul Buku
x(2)^2)-1
2*x(2)*cos(x(1)^2
111
0.48011911689839
0.51988088310161
niter =
5
Implementasi
metode
klasik
lainnya
untung
menghitung pembuat nol dari persamaan skalar termasuk
metode fixed-point iteration, metode secant dan metode
Schroder akan dibahas pada akhir bahasan bab ini..
7.3 Interpolasi
Jika kita melakukan suatu penelitian terhadap n+1 titik
pengamatan maka akan diperoleh pasangan data (x0, y0), (x1,
112
Judul Buku
113
interpolasi
fungsi
Menghasilkan
114
Judul Buku
115
105.711
203.212
123.203 131.669...
226.505 249.633];
116
Judul Buku
dan didapatkan :
117
118
Judul Buku
yi = val(:);
function a = divdiff(x, y)
% Divided differences based on points stored in arrays x and y.
n = length(x);
for k=1:n-1
y(k+1:n) = (y(k+1:n) - y(k))./(x(k+1:n) - x(k));
end
a = y(:);
119
Contoh
terkenal
fungsi
divergence,
harus
menggunakan Runge, untuk menggambarkan fenomena ini,
misalkan g(x) = 1/(1 + x2), -5 x5, menjadi fungsi yang
diinterpolasi pada n + 1 dengan jarak titik-titik xk = -5 +
10k/n, k = 0, 1, , n.
Script file showint berikut ini akan menghasilkan grafik
keduanya, fungsi g(x) dan interpolasi polinomial pn(x).
% Script showint.m
% Plot of the function 1/(1 + x^2) and its
% interpolating polynomial of degree n.
m = input('Enter number of interpolating polynomials ');
for k=1:m
n = input('Enter degree of the interpolating polynomial ');
hold on
x = linspace(-5,5,n+1);
y = 1./(1 + x.*x);
z = linspace(-5.5,5.5);
t = 1./(1 + z.^2);
h1_line = plot(z,t,'-.');
set(h1_line, 'LineWidth',1.25)
t = Newtonpol(x,y,z);
h2_line = plot(z,t,'r');
set(h2_line,'LineWidth',1.3,'Color',[0 0 0])
axis([-5.5 5.5 -.5 1])
title(sprintf('Example of divergence (n = %2.0f)',n))
xlabel('x')
ylabel('y')
legend('y = 1/(1+x^2)','interpolant')
hold off
120
Judul Buku
end
121
cubic
Hermite
interpolant.
Points
of
122
Judul Buku
-2
-1
Y= f(x)
-39
-15
-5
-3
39
123
and
Piecewise
cubic
Hermite
124
Judul Buku
3.
125
126
Judul Buku
f ( x)dx = wk f ( x k )
1
127
f ( x) =
diambil
suatu
fungsi
rasional
a + bx
1 + cx 2
function y = rfun(x, a, b, c)
% A simple rational function that depends on three
% parameters a, b and c.
y = (a + b.*x)./(1 + c.*x.^2);
y = y';
128
Judul Buku
129
f ( x)dx = wk f ( x k )
1
130
Judul Buku
if n < 2
error(' Number of nodes must be greater than 1')
end
x = (0:n-1)/(n-1);
f = 1./(1:n);
V = Vander(x);
V = rot90(V);
w = V\f';
w = (b-a)*w;
x = a + (b-a)*x;
x = x';
s = feval(fun,x,varargin{:});
s = w'*s;
t 2
dt
131
k =1
p( x) f ( x)dx = wk f ( x k )
dimana p(x) menyatakan fungsi bobot. Tipe memilih fungsi
bobot beserta dengan interval integrasi seperti berikut ini :
Bobot
p(x)
Interval [a,b]
Nama
Quadratur
[-1,1]
Gauss-Legendre
132
Judul Buku
1/ 1 x
[-1,1]
e-x
[0, )
(, -)
x 2
GaussChebyshev
Gauss Laquerre
Gauss Hermiet
133
w = (fc*u(1,:).^2)';
w = w(j)';
w = 0.5*(b - a)*w;
x = 0.5*((b - a)*x + a + b);
else
x = cos((2*(1:n) - (2*n + 1))*pi/(2*n))';
w(1:n) = pi/n;
end
f = feval(fun,x,varargin{:});
s = w*f(:);
w = w';
134
Judul Buku
0.84270079294972
exact_v = erf(1)
exact_v =
0.84270079294971
135
f = zeros(1,n);
fc = sqrt(pi);
end
J = diag(d,-1) + diag (f) + diag(d,1);
[u,v] = eig(J);
[x,j] = sort(diag(v));
w = (fc*u(1,:).^2)';
w = w(j);
f = feval(fun,x,varargin{:});
s = w'*f(:);
(t ) = e t x t 1 dx (t>-1)
0
= (n - 1)! for n = 1, 2, .
maka function mygamma dibuat untuk menghitung
aproksimasi numerik fungsi gamma menggunakan quadratur
Gauss-Laguerre, seperti berikut ini :
function y = mygamma(t)
% Value(s) y of the Euler's gamma function evaluated at t (t > -1).
td = t - fix(t);
if td == 0
n = ceil(t/2);
else
n = ceil(abs(t)) + 10;
end
y = Gquad2('pow',n,'L',t-1);
136
Judul Buku
mygamma
137
gamma
_____________________________________________________
1.00000000000000 1.00000000000000 1.00000000000000
1.10000000000000 0.95470549811706 0.95135076986687
1.20000000000000 0.92244757458893 0.91816874239976
1.30000000000000 0.90150911731168 0.89747069630628
1.40000000000000 0.89058495940663 0.88726381750308
1.50000000000000 0.88871435840715 0.88622692545276
1.60000000000000 0.89522845323377 0.89351534928769
1.70000000000000 0.90971011289336 0.90863873285329
1.80000000000000 0.93196414951082 0.93138377098024
1.90000000000000 0.96199632935381 0.96176583190739
2.00000000000000 1.00000000000000 1.00000000000000
138
Judul Buku
139
140
Judul Buku
bivariate
f ( x, y )dxdy
D
f ' ( x) =
141
f ( x + h) f ( x h)
2h
iterations
in
the
Richardson
142
Judul Buku
s = zeros(n-j+1,1);
s = d(j:n) + diff(d(j-1:n))/(l - 1);
d(j:n) = s;
l = 4*l;
end
der = d(n);
function testnder(h, n)
% Test file for the function numder. The initial stepsize is h and
% the number of iterations is n. Function to be tested is
% f(x) = exp(-x^2).
format long
disp(' x numder exact')
disp(sprintf('\n
_____________________________________________________'))
for x=.1:.1:1
s1 = numder('exp2', x, h, n);
s2 = derexp2(x);
disp(sprintf('%1.14f %1.14f %1.14f',x,s1,s2))
end
function y = derexp2(x)
% First order derivative of f(x) = exp(-x^2).
143
y = -2*x.*exp(-x.^2);
numder
exact
_____________________________________________________
0.10000000000000 -0.19800996675001 -0.19800996674983
0.20000000000000 -0.38431577566308 -0.38431577566093
0.30000000000000 -0.54835871116311 -0.54835871116274
0.40000000000000 -0.68171503117430 -0.68171503117297
0.50000000000000 -0.77880078306967 -0.77880078307140
0.60000000000000 -0.83721159128436 -0.83721159128524
0.70000000000000 -0.85767695185699 -0.85767695185818
0.80000000000000 -0.84366787846708 -0.84366787846888
0.90000000000000 -0.80074451919839 -0.80074451920129
144
Judul Buku
ode15s
ODE
non
stiff
ODE
non
stiff
ODE
non
stiff
ODE stiff
ode23s
ODE stiff
Functio
n
ode23
ode45
ode113
145
MATLAB bagi
146
Judul Buku
147
1
,
1 +t
y(0)=1.
148
Judul Buku
diperoleh hasil :
[t, y] = ode23s(dy, tspan, 1);
149
150
Judul Buku
151
152
Judul Buku
BAB 9
9 Pemrograman MATLAB untuk
Kriptografi
Contoh 1.
Program ini digunakan untuk melakukan proses
merubah data dari bentuk asli ke bentuk baru (enkripsi) dan
proses pengembalian dari bentuk baru ke bentuk asli
(dekripsi).
Untuk
proses
cipher
yang
digunakan
menggunakan metode transposisi yaitu dengan mengubah
posisi karakter-karakternya dengan cara tertentu. Pada
bagian ini akan digunakan 2 cara, yaitu:
1. Metode zig-zag menggunaan n baris
Pada metode ini pada prinsipnya pesan yang akan
dikirimkan ditulis perbaris sebanyak baris yang
ditentukan (sesuai dengan nilai n nya). Dengan
sebelumnya carakter disusun dalam posisi baris dan
kolom dengan urutan penyusunan sebagai berikut :
baris ke-1 dengan menyusun karakter dengan
urutan menggunakan jeda ke-1 = 2*n baris 2
dan jeda 2 = 0
baris ke-2 dengan menyusun karakter dengan
urutan menggunakan jeda ke-1 sebelumnya
dikurangi 2 dan jeda ke-2 dengan menambah
nilai jeda ke-2 sebelumnya dengan 2
demikian seterusnya sampai baris ke-n
Ilustrasi :
Plaintext = a1 a2 a3 a4 an
Dikirim menggunakan metode zig-zag : n baris
153
an+3 dst
a2
an+2
an+1
an
Kolom 1
kolom 2
kolom 3
kolom n
Kemudian diubah menjadi baris
Kolom 1
Kolom 2
Kolom 3
Kolom n
a1
a2
a3
..
an
154
Judul Buku
maka
permasalahan
Permasalahan 1 :
Fungsi encipher dan decipher menggunakan
transposisi dengan formula zig-zag.
a. Fungsi Enchiper
Fungsi enchiper diberi nama function enkripsi
function c=enkripsi(x,baris)
n=size(x,2);
jeda1=2*baris-2;
jeda2=0;
c=[];
for i=1:baris
k=i;
c=[c x(k)];
while k<=n
k=k+jeda1;
if k<=n & jeda1~=0
c=[c x(k)];
end
k=k+jeda2;
if k<=n & jeda2~=0
c=[c x(k)];
end
end
proses
jeda1=jeda1-2;
jeda2=jeda2+2;
end
b. Fungsi Dechiper
Fungsi dechiper diberi nama function dekrip
function c=dekrip(x,baris)
n=size(x,2);
jeda1=2*baris-2;
jeda2=0;
pos=0;
for i=1:baris
k=i;
pos=pos+1;
155
156
Judul Buku
deciper(k)=[x(pos)];
while k<=n
k=k+jeda1;
if k<=n & jeda1~=0
pos=pos+1;
deciper(k)=[x(pos)];
end
k=k+jeda2;
if k<=n & jeda2~=0
pos=pos+1;
deciper(k)=[x(pos)];
end
end
jeda1=jeda1-2;
jeda2=jeda2+2;
end
c=[];
for i=1:n
c=[c deciper(i)];
end
157
5
d=dekrip(x,baris)
d =
MUHAMMAD ARHAMI
Permasalahan 2 :
Fungsi encipher dan decipher menggunakan
transposisi dengan formula permutasi.
a. Fungsi Enchiper
Fungsi enchiper diberi nama function enkripsi
function c=enkripsiP(x,permutasi)
k=size(permutasi,2);
n=size(x,2);
y=mod(n,k);
if y==0
b=n/k;
else
b=((n-y)/k)+1;
end
index=1;
for i=1:b
for j=1:k
if index>n
ciper(i,j)=[' '];
proses
158
Judul Buku
else
ciper(i,j)=[x(index)];
end
index=index+1;
end
end
cb=1:1:b;
ciperp=ciper(cb,permutasi);
d=ciperp(:);
c=d';
c=enkripsiP(x,permutasi)
c =
RMAGEPGP GRAN HKAS IIAUNEME AATEK N D ART
b. Fungsi Dechiper
Fungsi dechiper diberi nama function dekrip
function c=dekripP(x,permutasi)
k=size(permutasi,2);
n=size(x,2);
y=mod(n,k);
if y==0
b=n/k;
else
b=((n-y)/k)+1;
end
index=1;
for i=1:k
for j=1:b
deciper(i,j)=[x(index)];
index=index+1;
end
end
for i=1:k
j=1;
while permutasi(j)~=i
j=j+1;
end
for l=1:b
deciperp(i,l)=deciper(j,l);
end
159
160
Judul Buku
end
deciperk=deciperp(:);
c=deciperk';
d=dekripP(x,permutasi)
d =
HARAP KAMU DATANG SEGERA KEMARI PENTING
Contoh 2.
1. Diket : matrik permutasi = m = [7 3 5 6 1 4 2]
Kunci = k = sugengraharjo
Spasi antar kata = X
Plaintext = p = SELAMA UJIAN BERLANGSUNG
TIDAK BOLEH MEMINJAM BUKU
TEMANNYA
161
Ciphertext=QCDSPSNSJTMLUCMSHJFBLQNNPLDPTL
SHNQMXJJXFFL
Buatlah :
a. enkripsi plaintext dengan
dengan monoalfabetik
transposisi
kemudian
abjad
pengisi
sisa=upper(sisa);
n=size(p,2);
nblok=ceil(n/sblok);
p=upper(p);
temp=[];
for i=1:sblok*nblok-n
temp=[temp sisa];
end;
p=[p temp];
for j=1:nblok
b(j,1:sblok)=p((j-1)*sblok+1:j*sblok);
end
blok
162
Judul Buku
Fungsi
function t=transposisi(p,trans);
n=size(trans,2);
b=blok(p,n);
disp('hasil bloknya menjadi:');
disp(b);
[a,z]=size(b);
c=[];
for i=1:a
for j=1:z
for k=1:n
if j==trans(k)
c(i,k)=b(i,j);
end;
end;
end;
end;
%baca matrik cipher
tmp=[];
for i=1:a
for j=1:z
tmp=[tmp c(i,j)];
end;
end;
t = setstr(tmp);
163
164
Judul Buku
pjkunci=[];
for x=1:round(i/j);
pjkunci=[pjkunci abskunci];
end;
for x=1:rem(i,j);
pjkunci=[pjkunci abskunci(x)];
end;
%menambahkan pesan+kunci dalam numerik
penampung=[];
for x=1:i;
penampung(x)=abspesan(x)+pjkunci(x);
%disp(penampung);
end;
%encripsi
hasil=[];
for x=1:i;
%if penampung(x)~=32;
hasil(x)=penampung(x)-65;
if hasil(x)>90;
hasil(x)=hasil(x)-26;
end;
%end;
end;
%merubah kembali kehuruf
165
166
Judul Buku
v=setstr(hasil);
%disp(v);
2]
m =
7
>> k = 'sugengraharjo'
k =
sugengraharjo
>> p = 'SELAMA UJIAN BERLANGSUNG TIDAK BOLEH MEMINJAM
BUKU TEMANNYA'
p =
SELAMA UJIAN
TEMANNYA
BERLANGSUNG
TIDAK
167
BOLEH
MEMINJAM
BUKU
>> hasil=soal1a(m,k,p)
masukkan huruf pengganti spasi : x
pesan barunya menjadi :
SELAMAXUJIANXBERLANGSUNGXTIDAKXBOLEHXMEMINJAMXBUKUXTEMANN
YA
masukkan abjad pengisi blok dibelakang : z
hasil bloknya menjadi:
SELAMAX
UJIANXB
ERLANGS
UNGXTID
AKXBOLE
HXMEMIN
JAMXBUK
UXTEMAN
NYAZZZZ
hasil transposisinya adalah :
XLMASAEBINXUAJSLNGEARDGTIUXNEXOLABKNMMIHEXKMBUJXANTMAUEXZ
AZZNZY
hasil vigenerenya adalah:
hasil =
PFSEFGVBPNODOBMRRTKRRKGKRIPHKBBRRBRNDVWZYDOZ
HLJEAECASOKBMGQZUZP
168
Judul Buku
temp=[];
for p=1:n
for q=1:n
if asli(p)==trans(q)
temp=[temp asli(q)];
end;
end;
end;
disp(temp)
%baca matriks ciphertext
dt=[];
for i=1:a
for j=1:z
for k=1:n
if temp(k)==j;
dt(i,k)=b(i,j);
end;
end;
end;
end;
disp('pesan aslinya dalam blok adalah:');
disp(setstr(dt));
%menyatukan blok
d=[];
for i=1:a
for j=1:z
d=[d dt(i,j)];
end;
169
170
Judul Buku
end;
dt=setstr(d);
171
end;
end;
end;
2]
m =
7
>> k = 'sugengraharjo'
k =
sugengraharjo
>> c='QCDSPSNSJTMLUCMSHJFBLQNNPLDPTLSHNQMXJJXFFL'
c =
QCDSPSNSJTMLUCMSHJFBLQNNPLDPTLSHNQMXJJXFFL
>> jawab=soal1b(m,k,c)
hasil dekripsi dengan monoalfabetik adalah :
TLMASAEAIURQBLRAHINKQTEESQMSUQAHETRXIIXNNQ
hasil bloknya menjadi :
172
Judul Buku
TLMASAE
AIURQBL
RAHINKQ
TEESQMS
UQAHETR
XIIXNNQ
pesan aslinya dalam blok adalah:
SELAMAT
QLIBURA
NQAKHIR
QSEMEST
ERQTAHU
NQINIXX
hasil dekripsi dengan transposisi adalah :
jawab =
SELAMATQLIBURANQAKHIRQSEMESTERQTAHUNQINIXX
2. Diket : nkunci = 3
kunci1= programmagister
kunci2 = ilmukomputer
kunci3 = fakultasmipa
kunci vigenere= kv = pilprescapres
plaintext = p = pilihlah presiden dan wakil
presiden
sesuai hati nurani anda
spasi antar kata = Q
ciphertext=c=TXQXGJPESVZBSZKWUTMPDLMSTVYCYM
173
IYTKDMZTKCYCDOBPZK
ukuran blok = 8
Buatlah program
a. enkripsi plaintext dengan polialfabetik kemudian
dengan vigenere
b. dekripsi ciphertext
dengan polialfabetik
dengan
vigenere
kemudian
174
Judul Buku
l=b(i,j)-'A'+1;
c=[c alfakunci(k,l)];
end;
end;
175
%encripsi
hasil=[];
for x=1:i;
hasil(x)=penampung(x)-65;
if hasil(x)>90;
hasil(x)=hasil(x)-26;
end;
end;
%merubah kembali kehuruf
v=setstr(hasil);
176
Judul Buku
nkunci =
3
>> p = 'pilihlah presiden dan wakil presiden sesuai hati
nurani anda'
p =
pilihlah presiden dan wakil presiden sesuai hati nurani
anda
>> vg='pilprescapres'
vg =
pilprescapres
>> blok=8
blok =
8
>> s2a=soal2a(blok,p,nkunci,vg)
masukkan huruf pengganti spasi : q
pesan barunya menjadi :
pilihlahQpresidenQdanQwakilQpresidenQsesuaiQhatiQnuraniQa
nda
masukkan abjad pengisi blok dibelakang : x
Masukin kunci :programmagister
Masukin kunci :ilmukomputer
Masukin kunci :fakultasmipa
hasil enkripsi polialfabetiknya adalah :
JTCTSCPSHGJKNEUKEJUFEJWFBTCKJLANEUKDHNKNRFIJMFQIKFULPFTKI
DUIXXXX
hasil enkripsi dengan vigenerenya adalah :
s2a =
177
YBNIJGHUHVAOFTCVTAYXGJLWFLRSUARRWWKSYRCCZQXAQ
XSIZWYDENEZZHMKXMOB
Program yang digunakan untuk dekripsi dengan
algoritma vegenere kemudian didekripsi lagi dengan
algoritma polialfabetik yang memanggil fungsi kuncibaru dan
fungsi blok seperti pada soal no 1b.
Fungsi devig digunakan untuk mendekripsi ciphertext
dengan
metode vegenere.
function dv=devig(pesan,kunci);
pesan=upper(pesan);%ini wajib dihurufbesarkan....
kunci=upper(kunci);
%membuat pesan&kunci menjadi numerik
abspesan=abs(pesan);
abskunci=abs(kunci);
i=length(abspesan);
j=length(abskunci);
%membuat panjang kunci=pj pesan
pjkunci=[];
for x=1:round(i/j);
pjkunci=[pjkunci abskunci];
end;
for x=1:rem(i,j);
pjkunci=[pjkunci abskunci(x)];
end;
%dekripsi
hasil=[];
for x=1:i;
hasil(x)=abspesan(x)+65-pjkunci(x);
178
Judul Buku
if hasil(x)<65;
hasil(x)=hasil(x)+26;
end;
end;
%merubah kembali kehuruf
dv=setstr(hasil);
179
end;
end;
%merubah kembali ke huruf
bp=setstr(c);
180
Judul Buku
8
>> c='TXQXGJPESVZBSZKWUTMPDLMSTVYCYMIYTKDMZTKCYCDOBPZK'
c =
TXQXGJPESVZBSZKWUTMPDLMSTVYCYMIYTKDMZTKCYCDOBPZK
>> s2b=soal2b(blok,c,nkunci,vg)
hasil dekripsi dengan vigenerenya adalah :
EPFIPFXCSGIXAKCLFCIXBLXBPDJUNXRUBIDXIPSNQROXXXXK
Masukin kunci :programmagister
Masukin kunci :ilmukomputer
Masukin kunci :fakultasmipa
hasil dekripsi polialfabetiknya adalah :
s2b
JANGANXLUPAXKEMBALIXKEXKAMPUSXBULANXAGUSTUSXXX
XC
Fungsi polibaru
function p=polibaru(kunci,baris,text)
alfabet1='A':'P';
alfabet2='R':'Z';
alfabet=[alfabet1 alfabet2];
text=upper(text);
kunci=kuncibaru(upper(kunci));
disp('kuncinya menjadi: ');
disp(kunci);
alfabet=[kunci setdiff(alfabet,kunci)];
mat_kunci=blok(alfabet,baris);
disp('matrik kuncinya adalah');
disp(mat_kunci);
n=size(text,2);
if mod(n,2)==1
text=[text 'X'];
n=size(text,2);
end;
p=[];
for i=1:n
if text(i)=='Q'
text(i)='X';
n=size(text,2);
end;
end;
for j=1:2:n
[baris1,kolom1]=find(mat_kunci==text(j));
[baris2,kolom2]=find(mat_kunci==text(j+1));
181
182
Judul Buku
if text(j)==text(j+1)
p=[p text(j) 'X' text(j+1)];
elseif baris1==baris2
kolom1=kolom1+2;
kolom2=kolom2+2;
if kolom1>5
kolom1=1;
end;
if kolom2>5
kolom2=1;
end;
,k
p=[pmat_kunci(baris1,kolom1)mat_kunci(baris2
olom2)];
elseif kolom1==kolom2
baris1=baris1+2;
baris2=baris2+2;
if baris1>5
baris1=1;
end;
if baris2>5
baris2=1;
end;
p=[pmat_kunci(baris1,kolom1)mat_ku
nci(baris2,kolom2)];
elseif (baris1~=baris2) & (kolom1~=kolom2)
p=[pmat_kunci(baris1,kolom2)mat_kunci
(baris2,kolom1)];
end;
end;
disp('Hasil CIPHER-nya :')
4. Diket : m =
7
1
4
183
184
Judul Buku
185
RBHZZPTLDBDSAIAIURVSHZGLIGKDECXOWGDXTLJZA
M
untuk mengdekripsikan ciphertext menggunakan algoritma
hill, diperlukan pemanggilan fungsi-fungsi sebagai berikut:
fungsi invers untuk mencari invers matri kunci dalam
modulo 26
function ki=invers(k)
j=invint1(k);
[r,c]=size(k);
for i=1:c
for s=1:c
kij=adj(k);
186
Judul Buku
end;
end;
ki=mod(j*kij,26);
187
end;
dekripsi
188
>> c='KCHZESKBOWNTSWBGRBCXPINASQKB'
c =
KCHZESKBOWNTSWBGRBCXPINASQKB
>> hsl = dhill(m,c)
hsl =
SILAKANXMEROKOKXDIXLAPANGANX
Judul Buku
189
BAB 10
10
190
Judul Buku
'plot(fdat,pdat);xlabel(X);ylabel(Y);');
linlogBtn = uicontrol('style','pushbutton',...
'string','lin-log',...
'position',[240,395,40,20],...
'callback',...
'semilogy(fdat,pdat);xlabel(X);ylabel(Y);');
loglinBtn = uicontrol('style','pushbutton',...
'string','log-lin',...
'position',[280,395,40,20],...
'callback',...
'semilogx(fdat,pdat);xlabel(X);ylabel(Y);');
loglogBtn = uicontrol('style','pushbutton',...
'string','log-log',...
'position',[320,395,40,20],...
'callback',...
'loglog(fdat,pdat);xlabel(X); ylabel(Y);');
% Create exit pushbutton with red text.
exitBtn = uicontrol('Style','pushbutton',...
'string','EXIT','position',[510,395,40,20],...
'foregroundcolor',[1 0 0],'callback','close;');
191
192
Judul Buku
% pressure vectors
pdat = data(2:2:length(data));
fdat = data(1:2:length(data));
% Plot pressure signal in a lin-lin diagram
plot(fdat,pdat);
% Define suitable axis labels
xlabel('Frequency, [Hz]');
ylabel('Pressure amplitude, [Pa]');
193
maka
194
Judul Buku
BAB 11
11
Pemrograman Linier
dengan MATLAB
11.1 Pendahuluian
Program linier merupakan salah satu cabang riset
operasi yang khusus yang terdiri dari fungsi objektif dan
kendalanya yang kedua-duanya linier. Bentuk umum dari
program linier ini adalah:
Maks
Z=p1x1 + p2x2 ++ pnxn
Kendala
a11x1 + a12x2 ++ a1nxn a1
a21x1 + a22x2 ++ a2nxn a2
.
.
.
am1x1 + am2x2 ++ amnxn am
x1 , x2,, xn 0
ada beberapa terminologi
diantaranya adalah :
daerah feasible
semua kendala
yaitu
dalam
daerah
program
yang
linier
memenuhi
195
Keterangan
Nilai mutlak
Benar jika semua unsur dari vektor adalah
tidak nol
Benar jika ada unsur dari vektor adalah
tidak nol
Kontrol penskalaan sumbu
Terminasi eksekusi untuk loop while
Pembersihan command window
Convex hull
Diferensiasi dan aproksimasi turunan
Tampilan array
Floating point untuk akurasi yang relatif
Identitas matriks
Dapatkan unsur /elemen nol atau tak nol
Ukuran font
Get handle tro current axis
Mendapatkan sifat-sifat objek
Grid lines
Hold current graph
Infiniti
196
Judul Buku
197
j = [];
for k =1:n
c = d(:,k);
for l=k+1:n
if norm(c - d(:,l),'inf') <= 100*eps
j = [j l];
end
end
end
if ~isempty(j)
j = sort(j);
d(:,j) = [ ];
end
198
Judul Buku
m = length(a);
c = 1:m;
a = a(:);
b = b(:);
l = c(b > 0);
[mi, row] = min(a(l)./b(l));
row = l(row);
function col = MRTD(a, b)
% The Maximum Ratio Test performed on vectors a and b.
% This function is called from within the function dsimplex.
% Output parameter:
% col - index of the pivot column.
m = length(a);
c = 1:m;
a = a(:);
b = b(:);
l = c(b < 0);
[mi, col] = max(a(l)./b(l));
col = l(col);
function [m, j] = Br(d)
% Implementation of the Bland's rule applied to the array d.
% This function is called from within the following functions:
% simplex2p, dsimplex, addconstr, simplex and cpa.
% Output parameters:
% m - first negative number in the array d
% j - index of the entry m.
ind = find(d < 0);
if ~isempty(ind)
j = ind(1);
m = d(j);
else
m = [];
j = [];
end
dasar
dari
permasalahan
program
linier
199
, untuk mendapatkan
200
Judul Buku
DAFTAR KEPUSTAKAAN
Carlson, B.C. 1977., Special Functions of Applied
Mathematics, Academic Press, New York, 1977.
Cheney W. and D. Kincaid, 1999., Numerical Mathematics
and Computing, Fourth edition, Brooks/Cole
Publishing Company, Pacific Grove.
Davis P.J. and P. Rabinowitz, 1975., Methods of Numerical
Integration, Academic Press, New York.
Fausett, L.V., 1999., Applied Numerical Analysis Using
MATLAB, Prentice Hall, Upper Saddle River, NJ.
Hanselman D.and B. Littlefield, 1998., Mastering MATLAB
5. A Comprehensive Tutorial and Reference,
Prentice Hall, Upper Saddle River, NJ.
Lindfield G. and J. Penny, 1995., Numerical Methods Using
MATLAB, Ellis Horwood, New York,.
Mathews J.H. and K.D. Fink , 1999, Numerical Methods
Using MATLAB, Third edition, Prentice Hall, Upper
Saddle River, NJ.
MATLAB, The Language of Technical Computing. Using
MATLAB, Version 5, The MathWorks, Inc., 1997.
Hanselman D.and B. Littlefield, 2000, MATLAB Bahasa
Komputansi Teknis, Penerbit ANDI Yogyakarta
Neuman, Edward,
Mathematics
Carbondale
201
http://hmgm.geoph.itb.ac.id/data/paper/Tutorial%20Matlab/Tutorial%20I.pdf.
202
Judul Buku
Pekerjaan
Alamat
Yokyakarta.
E-Mail
: abang291074@yahoo.com
Pendidikan:
1. Sekolah Dasar Negeri No.1 Teupin Raya lulus tahun
1986
2. Sekolah Menengah Pertama
Minyeuk lulus tahun 1989
Negeri
Glumpang
Komputer
UGM
Karya tulis/Ilmiah
1. Rancangan Pelayanan Informasi melalui Teknologi
Informasi Intranet di Politeknik Negeri Lhokseumawe.
2. Perbandingan Algoritma Metode Image Averaging
Berdasarkan Mean dan Median Filtering untuk
Meningkatkan Kualitas Visual Citra.
CURICULUM VITAE PENULIS II
Nama
203
Tempat/Tanggal Lahir
Pekerjaan
Alamat
11,
: adesiani@yahoo.com
Pendidikan Formal
Th 1984 - 1990
SD
Negeri 131
di Palembang
Th 1990 1993
SLTP Negeri 9
di Palembang.
Th 1993 1996
SLTA Negeri 06
di Palembang
Th 1996 2000
Th 2001- 2003
PEMROGRAMAN MATLAB
204
Judul Buku
OLEH:
MUHAMMAD ARHAMI
ANITA DESIANI