Modul Metnum Matlab
Modul Metnum Matlab
A. VARIABEL
Pada MATLAB variabel digunakan tanpa harus mendeklarasikan lebih dulu.
Apabila suatu variabel telah digunakan sebelumnya maka secara otomatis MATLAB
akan mereplace variabel lama. Nama variabel didahului dengan karakter, bisa diikuti
dengan karakter, angka atau underscore ( _ ). Penamaan variabel bersifat case
sensitive (variabel A berbeda dengan a).
B. TIPE DATA
MATLAB mengenal bilangan dan karakter. Penulisannya dapat dilakukan dengan :
________________________________ 1
Modul Praktikum
Metode Numerik dengan MATLAB
Bilangan
Bilangan real dituliskan seperti biasa. Misal : 3.29 -5.12 8 .358 (=0.358)
Bilangan imajiner ditulis seperti bilangan real ditambah huruf i atau j. Misal : -6i
4.92j
Penulisan 10n dengan notasi en. Misal : 5.31 x 105 ditulis dengan 5.31e5
Karakter
Penulisan karakter atau string diapit dengan tanda . Misal : A Jumlah Nilai
C. KONSTANTA
1. pi = 3.14
2. eps = presisi relatif dari floating point (252)
3. realmin = floating point terkecil (2-1022)
4. realmax = floating point terbesar ((2-eps)21023)
5. NaN = Not a Number, terjadi bila suatu komputasi menghasilkan tidak nol
dibagi nol atau inf - inf
6. inf = infinity, terjadi bila suatu komputasi menghasilkan 0 dibagi 0, atau
overflow, misalkan lebih dari realmax atau kurang dari realmin
D. FUNGSI-FUNGSI DASAR
Ada beberapa fungsi dasar pada MATLAB yang langsung dapat digunakan,
diantaranya:
1. Fungsi Trigonometri
No Fungsi Syntax Keterangan
1 Sinus sin(x) Untuk mencari nilai sinus x, dimana x sudut dalam radian
2 Cosinus cos(x) Untuk mencari nilai cosinus x, dimana x sudut dalam radian
3 Tangen tan(x) Untuk mencari nilai tangen x, dimana x sudut dalam radian
2. Fungsi Exponensial
No Fungsi Syntax Keterangan
1 Eksponensial exp(x) Untuk mencari nilai ex, dengan e bilangan natural
(=2.7182)
2 Logaritma log(x) Untuk mencari nilai logaritma berbasis bilangan e (=elog(x))
3 Log basis 10 log10(x) Untuk mencari nilai logaritma berbasis 10 dari x (=10log(x))
4 akar pangkat 2 sqrt(x) Untuk mencari nilai akar pangkat 2 dari x (= x )
E. M-File
M-file merupakan sederetan perintah matlab yang dituliskan secara berurutan sebagai
sebuah file. Untuk membuka jendela m-file pilih menu File kemudian pilih New | M-
File.
M-file dapat ditulis dalam dua tipe, yaitu:
a. Script
Script adalah m-file yang sederhana karena tidak memerlukan argumen input atau
output.
b. Fungsi
________________________________ 2
Modul Praktikum
Metode Numerik dengan MATLAB
Fungsi adalah m-file yang memerlukan argumen input dan menghasilkan output.
Bagian-bagian fungsi:
Argument input
Nama fungsi
Argumen output
keyword
F. MEMBENTUK MATRIKS
Ada beberapa cara membentuk matriks, antara lain :
1. Membentuk matriks dengan memasukkan elemen-elemennya secara
langsung
Antara satu elemen dengan elemen lainnya dalam satu kolom dipisahkan
dengan spasi atau koma (,).
Untuk memisahkan baris dengan tanda titik koma (;)
Penulisan elemen terletak dalam tanda kurung siku ([ ])
Contoh : A=[6 3 8; 7 1 6; 1 5 3; 6 9 2]
________________________________ 3
Modul Praktikum
Metode Numerik dengan MATLAB
Kita dapat memanggil file tersebut dengan mengetikkan nama filenya yaitu
BuatMatriks
MANIPULASI MATRIKS
Apabila telah dipunyai suatu matriks kita dapat memanipulasi matriks tersebut,
diantaranya disajikan pada tabel berikut :
No Syntax Fungsi
1 reshape(X,N,M) Mengubah ukuran matriks dari matriks X berukuran PxQ
menjadi matriks Y berukuran NxM dimana PxQ=NxM dengan
urutan per kolom.
2 diag(X) Mengambil diagonal matriks X yang berukuran NxN
3 tril(X) atau Membentuk matriks segitiga bawah dari matriks X yang
tril(X,k) berukuran NxN
4 triu(X) atau Membentuk matriks segitiga atas dari matriks X yang berukuran
triu(X,k) NxN
5 x(:,1:2:end) Membentuk matriks dengan elemen tertentu dari matriks X
________________________________ 4
Modul Praktikum
Metode Numerik dengan MATLAB
I. FLOW KONTROL
No STATEMENT KETERANGAN CONTOH
1 IF Untuk mengeksekusi sekumpulan x=125
instruksi apabila kondisi yang if rem(x,2) == 0
Bilangan = genap
disyaratkan bernilai benar. Statement
else
ini diakhiri dengan end. Jika ada
Bilangan = ganjil
kondisi berlawanan (false) dapat
end;
diikuti dengan else atau elseif
2 SWITCH Untuk mengeksekusi sekumpulan clear;
instruksi didasarkan pada nilai dari X = 120;
sisa = rem(X,8);
suatu ekspresi atau variabel. Untuk
switch sisa,
menunjukkan suatu grup, statement
case 6
switch diikuti dengan case dan
NilaiSisa = A
otherwhise. Statement ini juga case 7
diakhiri dengan end. NilaiSisa = B
otherwhise
NilaiSisa = int2str(sisa)
end;
3 Loop: FOR Digunakan untuk mengulang x = rand(50,1);
sekumpulan instruksi hingga n kali. Xmax = realmin;
for i=1:50,
Statement ini juga diakhiri dengan
if x(i) > Xmax,
end.
Xmax = x(i);
end;
end;
4 Loop: WHILE Digunakan untuk mengulang
sekumpulan instruksi apabila dipenuhi
suatu kondisi tertentu. Statement ini
juga diakhiri dengan end.
5 BREAK Digunakan untuk keluar lebih awal
dari suatu iterasi yang menggunakan
for atau while
J. STRUKTUR LAINNYA
No STRUKTUR KETERANGAN CONTOH
1 Array Array yang terdiri dari 3 subscript atau x=rand(3,4,5)
________________________________ 5
Modul Praktikum
Metode Numerik dengan MATLAB
K. MENGGAMBAR GRAFIK
Syntax :
plot(Y) : menggambar grafik Y terhadap indeksnya
plot(X,Y) : menggambar grafik Y terhadap X, panjang X dan Y harus sama
plot(X,Y,S) : menggambar grafik Y terhadap X, S merupakan string karakter
yang menunjukkan warna, tipe titik dan tipe garis.
Contoh : Y = [4 3 8 6 5 9 4 2 7 5];
Plot(Y)
Contoh :
clear;
t=0:pi/100:2*pi;
y1=sin(t)
y2=sin(t+0.5);
y3=sin(t-0.25);
plot(t,y1,b-,t,y2,r:,t,y3,m);
title(Grafik fungsi Sinus,fontsize,16,fontname,arial);
xlabel(Data ke-,fontsize,14,fontname,verdana);
ylabel(Besarnya sinus,fontsize,14,fontname,arial);
grid;
legend(t,t+0.5,t-0.25);
________________________________ 6
Modul Praktikum
Metode Numerik dengan MATLAB
MODUL 2
AKAR PERSAMAAN NON LINIER
Metode bagi dua (bisection) ini didasarkan pada teorema nilai antara fungsi kontinu,
yaitu bahwa suatu selang [a,b] harus mengandung f(x) = 0,bila f(a) dan f(b) berlawanan
tanda misalnya f(a)>0 dan f(b)<0. Proses dilakukan dengan pengulangan membagi selang
[a,b] menjadi dua dalam setiap langkah diambil setengah selang yang memenuhi
persyaratan tersebut. Proses ini didapatkan ketelitian yang sama dengan interval [a,b]
terakhir.
Dalam algoritma digunakan variabel :
a sebagai batas bawah selang
b sebagai batas atas selang
c sebagai titik tengah
Bila f(a)>0 dan f(b)<0 maka perkalian keduanya menghasilkan bilangan yang kecil dari 0
atau f(a)f(b)<0 ini berarti selang [a,b] terdapat paling sedikitnya satu akar. Metode ini
memerlukan dua nilai sebagai tebakan awal, sebut a dan b, a < b, yang harus memenuhi
f(a) f(b) < 0 ; selang (a,b) mengandung satu akar. Mula-mula ditentukan titik tengah
selang (a,b) atau selang (a,b) dibagi dua sama panjang, sebut titik tengahnya c. Dua
selang baru yang diperoleh yakni (a,c) dan (c,b), salah satu diantaranya pasti
mengandung akar. Proses diulangi dengan membagi dua selang tersebut dan
memeriksa setengah selang yang mana yang mengandung akar. Pembagi-duaan selang
ini dilanjutkan sampai lebar selang yang ditinjau cukup kecil.
Sintaks Matlab
a. File bisection.m sebagai fungsi utama untuk mencari akar persamaan
dengan metode bisection
function bisection(fname,xa,xb)
clc;
disp('=============================================================');
disp('= Mencari Akar Persamaan dengan Metode Bisection =');
disp('=============================================================');
fa=feval(fname,xa);
fb=feval(fname,xb);
if (fa*fb<0)
epsilon = 10e-6;
max_iter=input('Iterasi Maksimum=');
iter =0;
fprintf('iter xa xb xc fa fb
abs(fa-fb) \n');
while 1
iter = iter+1;
xc=(xa+xb)/2;
fc=feval(fname,xc);
fprintf('%3d %10.6f %10.6f',iter,xa,xb);
________________________________ 7
Modul Praktikum
Metode Numerik dengan MATLAB
fprintf('%10.6f %10.6f %10.6f',xc,fa,fb);
fprintf('%10.6f \n',abs(fa-fb));
if (abs(fa-fb)<=epsilon)
fprintf('toleransi error terpenuhi\n');break
end
if (iter>max_iter)
fprintf('Maksimum Iterasi\n');break
end
if (fc*fa<0)
xb=xc;
fb=fc;
else
xa=xc;
fa=fc;
end
end
fprintf('Akar Persamaan %10.6f\n',xc);
else
disp('Akar tidak diapit');
end
c. Running sintaks
Tuliskan sintaks berikut di Command Window, misalkan akan dicari nilai
akar dari persamaan f dengan pada interval (0,3) dengan iterasi maksimal
100
>> bisection('f',0,3)
=============================================================
= Mencari Akar Persamaan dengan Metode Bisection =
=============================================================
Iterasi Maksimum=100
d. Output
=============================================================
= Mencari Akar Persamaan dengan Metode Bisection =
=============================================================
Iterasi Maksimum=100
iter xa xb xc fa fb abs(fa-fb)
1 0.000000 3.000000 1.500000 -2.000000 16.000000 18.000000
2 0.000000 1.500000 0.750000 -2.000000 4.750000 6.750000
3 0.000000 0.750000 0.375000 -2.000000 0.812500 2.812500
4 0.375000 0.750000 0.562500 -0.734375 0.812500 1.546875
5 0.375000 0.562500 0.468750 -0.734375 0.003906 0.738281
6 0.468750 0.562500 0.515625 -0.374023 0.003906 0.377930
7 0.515625 0.562500 0.539063 -0.187256 0.003906 0.191162
8 0.539063 0.562500 0.550781 -0.092224 0.003906 0.096130
9 0.550781 0.562500 0.556641 -0.044296 0.003906 0.048203
10 0.556641 0.562500 0.559570 -0.020229 0.003906 0.024136
11 0.559570 0.562500 0.561035 -0.008170 0.003906 0.012076
12 0.561035 0.562500 0.561768 -0.002134 0.003906 0.006040
13 0.561035 0.561768 0.561401 -0.002134 0.000886 0.003020
14 0.561401 0.561768 0.561584 -0.000624 0.000886 0.001510
15 0.561401 0.561584 0.561493 -0.000624 0.000131 0.000755
16 0.561493 0.561584 0.561539 -0.000247 0.000131 0.000377
17 0.561539 0.561584 0.561562 -0.000058 0.000131 0.000189
18 0.561539 0.561562 0.561550 -0.000058 0.000036 0.000094
19 0.561550 0.561562 0.561556 -0.000011 0.000036 0.000047
20 0.561550 0.561556 0.561553 -0.000011 0.000013 0.000024
21 0.561550 0.561553 0.561552 -0.000011 0.000001 0.000012
22 0.561552 0.561553 0.561552 -0.000005 0.000001 0.000006
toleransi error terpenuhi
Akar Persamaan 0.561552
________________________________ 8
Modul Praktikum
Metode Numerik dengan MATLAB
MODUL 2
METODE NEWTON RAPHSON
Metode Newton Raphson didasarkan pada aproksimasi linear fungsi dan menggunakan
prinsip kemiringan (Tangen) kurvanya. Kalkulasi dengan metode Newton diawali dengan
x0 yang tidak terlalu jauh dari sebuah akar, bergerak sepanjang garis linear (kemiringan
atau tangen garis) ke perpotongannya di sumbu-x, dan mengambilnya sebagai titik
aproksimasi untuk yang berikutnya. Perlakuan ini diteruskan hingga nilai-nilai x dirasakan
sukses cukup dekat ke fungsi bernilai nol. Skema kalkulasinya mengikuti segitiga yang
dibangun dengan sudut
inklinasi dari kemiringan garis pada kurva di x = x0 yaitu
f ( x0 ) f ( x0 )
tan ( q ) = f ' ( x0 ) = atau x1 = x0 -
x0 - x1 f ' ( x0 )
Aproksimasi berikutnya diteruskan dengan menghitung x2 dengan skema yang sama
dimana nilai x0 digantikan oleh x1 . Secara umum metode Newton dirumuskan oleh
skema berikut ini:
f ( n)
xn +1 = xn -
f ' ( n)
Sintaks Matlab
a. File newton_raphson.m sebagai fungsi utama untuk mencari akar
persamaan dengan metode newton raphson
function newton_raphson(fname,dfname,xa)
clc;
disp('=============================================================');
disp('= Mencari Akar Persamaan dengan Metode Newton Raphson =');
disp('=============================================================');
eps=10e-6;
x(1)=xa;
max_iter=input('Iterasi Maksimum=');
iter = 1;
fprintf('iterasi x \n');
fprintf('%5d %10.6f\n',1,x(1));
while 1
iter = iter + 1;
x(iter) = x(iter-1) - (feval(fname,x(iter-1)))/(feval(dfname,x(iter-
1)));
fprintf('%5d %10.6f\n',iter,x(iter));
if (abs(x(iter)-x(iter-1))<=eps);
fprintf('Toleransi error terpenuhi.\n');break
end
if(iter>max_iter)
fprintf('Maksimum Iterasi\n');break
end
end
________________________________ 9
Modul Praktikum
Metode Numerik dengan MATLAB
fprintf('Akar Persamaannya adalah: %10.6f\n',x(iter));
disp('=============================================================');
c. File df.m sebagai turunan fungsi yang akan dicari akar persamaannya
function y=df(x)
y=2*x+3;
d. Running sintaks
Tuliskan sintaks berikut di Command Window, misalkan akan dicari nilai
akar dari persamaan f dengan turunan df, dengan nilai awal akar x=0 dan
iterasi maksimal 100
>> newton_raphson('f','df',0)
=============================================================
= Mencari Akar Persamaan dengan Metode Bisection =
=============================================================
Iterasi Maksimum=100
e. Output
=============================================================
= Mencari Akar Persamaan dengan Metode Newton Raphson =
=============================================================
Iterasi Maksimum=100
iterasi x
1 0.000000
2 0.666667
3 0.564103
4 0.561554
5 0.561553
Toleransi error terpenuhi.
Akar Persamaannya adalah: 0.561553
=============================================================
________________________________ 10
Modul Praktikum
Metode Numerik dengan MATLAB
MODUL IV
SISTEM PERSAMAAN LINIER
dimana x1, x2, ..., xn adalah variabel dan a11, a12, ..., amn adalah koefisien
persamaan sedangkan b1, b2, ... bm adalah konstanta persamaan. Sekumpulan
nilai dari variabel , misalkan x 1 = k1, x2 = k2, ..., xn = kn disebut solusi dari sistem
persamaan linier tersebut. Solusi ini dapat disajikan dalam bentuk vektor yang
disebut dengan vektor solusi.
Bagan solusi sistem persamaan linier:
Sintaks Matlab:
1. Metode Eliminasi Gauss (disimpan dengan nama Gauss_jordan.m)
clear;clc;
disp('=============================================================');
disp('= Mencari Solusi Sistem Persamaan Linier Metode Gauss Jordan=');
disp('=============================================================');
n=input('orde matriks=');
________________________________ 11
Modul Praktikum
Metode Numerik dengan MATLAB
disp('Masukkan komponen matriks koefisien');
for i=1:n
for j=1:n
a(i,j)=input(sprintf('A(%d,%d)=',i,j));
end
end
disp('Masukkan komponen vektor tujuan');
for k=1:n
b(k)=input(sprintf('B(%d)=',k));
end
clc;
disp('=============================================================');
disp('= Mencari Solusi Sistem Persamaan Linier Metode Gauss Jordan=');
disp('=============================================================');
disp('Matriks koefisien');
A = a
disp('Vektor tujuan');
B = b'
________________________________ 12
Modul Praktikum
Metode Numerik dengan MATLAB
2. Metode Iterasi Gauss Seidel (disimpan dengan nama gausseidel.m)
clear;clc;
disp('=============================================================');
disp('= Mencari Solusi Sistem Persamaan Linier Metode Gauss seidel=');
disp('=============================================================');
n=input('orde matriks=');
iter=input('Iterasi Maksimum=');
clc;
disp('=============================================================');
disp('= Mencari Solusi Sistem Persamaan Linier Metode Gauss seidel=');
disp('=============================================================');
disp('Matriks koefisien');
A = a
disp('Vektor tujuan');
B = b'
disp('Input Awal');
x
disp('=============== Iterasi Gauss Seidel =======================');
fprintf('\n')
fprintf('%10s','iterasi ke-');
fprintf('\n')
for k = 1:iter;
for i=1:n
jum1=0;
jum2=0;
for j=1:n
if j<i
jum1=jum1+a(i,j)*x(k+1,j);
end
if j>i
jum2=jum2+a(i,j)*x(k,j);
end
jum = jum1 +jum2;
end
x(k+1,i)=(b(i)-jum)/a(i,i);
end
z = x(k+1,:);
fprintf('%6d',k);
fprintf('%12.4f',z);
fprintf('\n')
end
disp('=============================================================');
________________________________ 13
Modul Praktikum
Metode Numerik dengan MATLAB
TURUNAN DAN INTEGRAL NUMERIK
Tujuan Instruksional Umum:
Mahasiswa mampu memahami dan menerapkan dasar-dasar teknik numerik untuk
menyelesaikan permasalahan matematis yang tidak analitis.
Tujuan Instruksional Umum:
a. Mahasiswa mampu melakukan diferensiasi secara numerik
b. Mahasiswa mampu melakukan integrasi secara numerik
A. TURUNAN NUMERIK
1. Rumus-rumus Turunan Pertama
________________________________ 14
Modul Praktikum
Metode Numerik dengan MATLAB
3. Rumus-rumus Turunan Ketiga
Tugas 5.1:
x 1,3 1,5 1,7 1,9 2,1 2,3 2,5
f(x) 3,669 4,482 5,474 6,686 8,166 9,974 12,182
1. Tentukan nilai turunan pertama dan kedua di titik 1,3 dengan
menggunakan rumus-rumus selisih maju!
2. Tentukan nilai turunan pertama dan kedua di titik 1,9 dengan
menggunakan rumus-rumus selisih pusat!
3. Fungsi tersebut adalah f ( x ) = e , buatlah analisis errornya!
x
B. INTEGRAL NUMERIK
1. Pendekatan kaidah Trapezoidal
n -1
b h
f ( x ) dx f 0 + 2 fi + f n
a 2 i =1
2. Pendekatan kaidah Simpson 1/3
b h
f ( x ) dx 3 (
a
f 0 + 4 f1 + 2 f 2 + 4 f 3 + 2 f 4 + L + 2 f n - 2 + 4 f n -1 + f n )
Sintaks Matlab:
________________________________ 15
Modul Praktikum
Metode Numerik dengan MATLAB
data
h=x(2)-x(1);
fprintf('h: %4.2f\n',h);
% Menghitung Nilai Integral
n= length(x);
int = (h/2)*(f(1)+f(n)+ sum(f(2:(n-1))));
fprintf('Nilai Integral Numerik:%10.6f\n',int);
disp('=============================================================');
h=x(2)-x(1);
fprintf('h: %4.2f\n',h);
% Menghitung Nilai Integral
n= length(x);
int = (h/3)*(f(1)+4*f(2)+2*f(3)+4*f(4)+2*f(5)+4*f(6)+f(7));
fprintf('Nilai Integral Numerik:%10.6f\n',int);
disp('=============================================================');
h=x(2)-x(1);
fprintf('h: %4.2f\n',h);
% Menghitung Nilai Integral
n= length(x);
int = (h/3)*(f(1)+3*f(2)+3*f(3)+2*f(4)+3*f(5)+3*f(6)+f(7));
fprintf('Nilai Integral Numerik:%10.6f\n',int);
disp('=============================================================');
________________________________ 16
Modul Praktikum
Metode Numerik dengan MATLAB