Anda di halaman 1dari 101

PETUNJUK PRAKTIKUM

PRAKTIKUM FISIKA KOMPUTASI


APLIKASI MENGGUNAKAN M-
M-FILE MATLAB

Oleh :

Drs. Akmam, M.Si

JURUSAN FISIKA
FAKULTAS MATEMATIKA DAN ILMUPENGETAHUAN ALAM
UNIVERSITAS NEGERI PADANG
2015
MODUL I PRAKTIKUM FISIKA KOMPUTASI
PENGENALAN MATLAB
A. Tujuan
Diharapkan setelah praktikum ini mahasiswa sebagai praktikan dapat :
1. Mengenal MATLAB dan tools yang disediakan
2. Mengetahui dan mampu memahami beberapa fungsi dasar MATLAB.
3. Mampu melakukan perhitungan matematis dalam bilangan riil maupun bilangan kompleks
dengan bantuan MATLAB.
4. Mengetahui beberapa array dan matriks dasar
5. Mengetahui lebih banyak tentang kegunaan matriks dan array
6. Mampu melakukan manipulasi matriks dengan cara yang lebih kompleks
7. Mengetahui cara penanganan masukan dan keluaran pada program
8. Mampu membuat program sederhana dengan MATLAB
9. Mengetahui kegunaan pencabangan bersyarat sebagai kendali aliran program.
10. Mampu membuat program dengan pencabangan bersyarat.

B. Dasar Teori
MATLAB adalah kependekan dari matrix laboratory, dimana MATLAB merupakan
perangkat lunak untuk komputasi teknis dan saintifik. MATLAB merupakan integrasi
komputasi, visualisasi, dan pemrograman yang mudah digunakan. Sehingga MATLAB dapat
bertindak sebagai :
• Kalkulator
Ketika bertindak sebagai kalkulator, MATLAB memberikan hasil seketika setelah perintah
operasi diberikan.
• Bahasa pemrograman
Perintah – perintah operasi dengan urutan dan logika tertentu, serta digunakan berulang –
berulang dapat dibuat sebagai suatu program yang akan dijelaskan pada unit selanjutnya.
Adapun macam – macam operasi yang dapat dilakukan oleh MATLAB adalah :
a. Skalar : berupa bilangan real atau kompleks.
b. Matriks dan vektor : dengan elemen bilangan real atau kompleks.
c. Teks : pengolahan kata.

1
1. Desktop Tools MATLAB
Ketika MATLAB dijalankan pertama kali, desktop MATLAB tampil yang berisikan tools
(graphical user interfaces) untuk mengatur file, variables, dan aplikasi MATLAB. Pertama kali
MATLAB dijalankan akan tampil desktop dengan ilustrasi sebagai berikut

Jendela-jendela yang ada di MATLAB adalah sebagai berikut :


a. Command window digunakan untuk menjalankan fungsi-fungsi MATLAB.
b. Command history digunakan untuk menyimpan baris-baris perintah yang telah diketikkan di
command window. Kita dapat melihat fungsi-fungsi yang digunakan sebelumnya, mengkopi
dan menjalankannya kembali dari command history.
c. Launch pad berguna menyediakan akses yang mudah ke tools, demo dan dokumentasi.
d. Help browser berguna untuk mencari dan menampilkan dokumentasi semua hasil atau produk
hasil kerja matematis yang pernah (MathWorks)
e. Current diectory browser merupakan operasi MATLAB file menggunakan current directory
dan search path sebagai referensi. File yang akan dijalankan harus berada di current directory
atau ada pada search path.
f. Workspace browser. Berisikan kumpulan variabel yang terbentuk sepanjang sesi MATLAB
dan di simpan di memory.
g. Array editor berfungsi untuk menampilkan isi array dalam format tabel dan dapat digunakan
untuk mengedit isi array.
h. Editor/Debugger, digunakan untuk membuat, mengedit, dan men-debug M-files, yakni
program yang dibuat untuk menjalankan fungsi-fungsi MATLAB.

2
i. Figure adalah jendela untuk menampilkan gambar grafik seperti perintah plot dan sejenisnya.
Gambar pada jendela figure ini dapat disimpan ke dalam sebuah file yang sewaktu-waktu
dapat dipanggil kembali.
j. Help digunakan untuk membantu pengguna melihat dan mempelajari semua perintah
MATLAB yang akan menemui dalam pemograman. Kita dapat menemukan perintah-
perintah itu karena MATLAB telah menyediakan bantuan dalam bentuk help online. Bantuan
yang tersedia juga meliputi perintah MATLAB untuk memperoleh keterangan cepat pada
command window atau pada help browser.

2. Operator komputasi.
Operator komputasi mempunyai prioritas dengan urutan tertentu. Untuk menentukan
prioritas, digunakan tanda kurung ‘( )’. Adapun beberapa operator komputasi dalam MATLAB
adalah :
Simbol Operasi dan contoh
+ Penambahan, a + b
- Pengurangan, a – b
* Perkalian, a x b
/ atau \ Pembagian, a : b
^ Pemangkatan, ab

3. Bilangan kompleks
Bilangan kompleks adalah bilangan yang terdiri dari bagian imaginer dan bagian riil.
Bagian imaginer ditandai dengan simbol imaginer “i“ atau ”j”. Operasi bilangan kompleks juga
menggunakan operator komputasi di atas. Bilangan kompleks selain dapat dinyatakan dalam
koordinat kartesian, juga dinyatakan dalam koordinat polar dan diagram fasor yang berupa
magnitude dan sudut fase. Beberapa fungsi dasar yang berhubungan dengan bilangan kompleks
adalah:
Perintah Keterangan
Real Bagian riil dalam koordinat kartesian.
Imag Bagian imaginer dalam koordinat kartesian.
Abs Nilai absolute atau magnitude dalam koordinat polar.
Angle Sudut fase dalam koordinat polar ( dalam satuan radian )

3
4. Fungsi matematis
Sebagai kalkulator, MATLAB mempunyai berbagai fungsi umum yang penting untuk
matematika, teknik, dan ilmu pengetahuan. Sebagai tambahan atas fungsi-fungsi tersebut,
MATLAB juga menyediakan ratusan fungsi yang berguna untuk menyelesaikan permasalahan
tertentu. Beberapa fungsi matematis yang tersedia antara lain fungsi trigonometri, fungsi
eksponensial dan fungsi pembulatan.
Fungsi Matematika Keterangan
abs(x) Nilai mutlak atau magnitudo bilangan kompleks
acos(x) Invers cosinus
acosh(x) Invers cosinus hiperbolik
asin(x) Invers sinus
atan(x) Invers tangen
ceil(x) Pembulatan ke arah plus tak hingga
cos(x) Cosinus
exp(x) Eksponensial : ex
fix(x) Pembulatan ke arah nol
floor(x) Pembulatan ke arah minus tak hingga
imag(x) Bagian imajiner bilangan kompleks
log(x) Logaritma natural
log10(x) Logaritma dengan basis 10
real(x) Bagian riil suatu bilangan kompleks
rem(x,y) Sisa pembagian x/y
round(x) Pembulatan ke bilangan bulat terdekat
sin(x) Sinus
qrt(x) Akar kuadrat
tan(x) Tangen

5. Variabel
Data dan variabel yang dibuat dalam command window tersimpan dalam workspace
MATLAB. Ada beberapa aturan dalam penamaan variabel :
- nama variabel harus terdiri atas satu kata tanpa spasi.
- nama variabel dibedakan antara huruf besar dan huruf kecil (case sensitive).
- panjang maksimum nama variabel adalah 31 karakter, karakter setelahnya akan diabaikan.
- nama variabel harus diawali dengan huruf, diikuti dengan sembarang bilangan, huruf atau
garis bawah (under line).
- karakter tanda baca tidak diperbolehkan karena banyak diantaranya mempunyai arti
tersendiri dalam MATLAB. MATLAB mempunyai beberapa variabel spesial yaitu :

4
Variabel Nilai khusus yang dihasilkan
ans Nama variabel standar untuk menampilkan hasil
pi Perbandingan antara keliling lingkaran dengan diameternya
inf Tak berhingga, misalnya 1/0
NaN Bukan sebuah bilangan, misalnya 0/0
i dan j i=j=√-1
nargin Banyaknya argument input yang digunakan pada suatu fungsi
nargout Banyaknya argument output yang digunakan pada suatu fungsi
realmin Bilangan real positif terkecil yang dapat digunakan
realmax Bilangan real positif terbesar yang dapat digunakan

6. Array dan Matriks


Array dapat berupa array kosong dengan dimensi 0x0, hingga array dengan n-dimensi., Kita
dengan array dapat membuat vektor, matrik, menggunakan subscript arrays, dan penggunaan
secara khusus untuk iterasi. Sebuah matriks adalah sebuah array dua dimensi dengan elemen
dapat berupa riil maupun komplek.
a. Pembentukan array
Untuk membentuk array pada Matlab, dimulai dengan kurung siku buka, masukan nilai
dipisahkan dengan koma atau spasi, dan diakhiri dengan kurung tutup siku. Misalnya perintah
: A = [1, 6 ;7 12] , merupakan perintah untuk membuat array dua dimensi
4 9 
B= 
2 6
MATLAB menyediakan fasilitas untuk membuat array sederhana dengan cara-cara berikut :
Pembentukan array Keterangan
x=[2 2*pi sqrt(2) 2-3j] Membentuk vektor baris x dengan elemen yang
x=first:last disebutkan
Membentuk vektor baris x dimulai dengan first, dinaikan
x=first:increment:last satu, berakhir sampai atau sebelum last.
Membentuk vektor baris x dimulai dengan first, dinaikan
x=linspace(first,last,n) sebesar increment, berakhir sampai atau sebelum last.
Membentuk vektor baris x dimulai dengan first, berakhir
x=logspace(first,last,n) pada last, dengan n elemen.
Membuat vektor baris x yang memiliki spasi logaritmik,
dimulai dengan 10first, berakhir di 10last, mempunyai n
elemen

b. Pengalamatan Elemen (Array) dan manipulasi array

5
MATLAB menyediakan cara yang baik menyisipkan, mengekstrak, dan mengatur kembali
bagian-bagiannya indeks data. Pengetahuan mengenai ini merupakan kunci memanfaatkan
MATLAB secara efisien. Teknik-teknik pengalamatan array disajikan dalam tabel berikut.
Pembentukan array Keterangan
A(r,c) Pengalamatan elemen array di A ditentukan dengan vektor indeks baris
di r dan vektor indeks kolom di c
A(r,:) Pengalamatan subarray di A ditentukan dengan vektor indeks baris r
dan semua kolom
A(:,c) Pengalamatan subarray di A ditentukan dengan semua baris dan vector
indeks kolom c
A(:) Pengalamatan semua elemen A sebagai vektor kolom diambil kolom per
kolom
A(i) Pengalamatan subarray di A ditentukan oleh vektor indeks tunggal dari
elemen tersebut di I, seolah A adalah vektor kolom A(:)
A(x) Pengalamatan subarray di A ditentukan oleh array logika x. x harus berisi
nilai 0 dan 1 dan harus berukuran sama dengan A

Untuk memanipulasi array dapat digunakan fungsi-fungsi sebagai berikut :


Fungsi Manipulasi Array
flipud(A) menggulung suatu matriks dengan arah dari atas ke bawah
fliplr(A) menggulung suatu matriks dengan arah dari kiri ke kanan
rot90(A) memutar suatu matriks 90 derajat berlawanan arah jarum jam
reshape(A,m,n) menghasilkan matriks ukuran mxn dengan elemen diambil searah
kolom dari A. A harus berisi mxn elemen
diag(A) mengeluarkan diagonal matriks A sebagai vektor kolom
diag(v) membentuk matriks diagonal dengan vektor v pada diagonalnya
tril(A) mengeluarkan bagian segitiga bawah matriks A
triu(A) mengeluarkan bagian segitiga atas matriks A

Fungsi dan perintah matematika lainnya dapat saudara dalam kembangkan dari bahan referensi
yang telah dianjurkan pada silabus perkuliahan.

7. Pemuatan Program dengan M-File


Program adalah suatu kumpulan pernyataan, fungsi atau perintah yang diatur sedemikian
sehingga mempunyai logika tertentu. Semua pernyataan, fungsi dan perintah dapat diberikan
langsung di MATLAB Command Window yang digunakan untuk menyusun sebuah program.
MATLAB menyediakan bahasa pemrograman yang lengkap yang memungkinkan Anda menulis
perintah-perintah MATLAB ke dalam sebuah file dan menjalankannya dengan sebuah perintah
saja. m-file dapat berupa script yang secara sederhana mengeksekusi barisan perintah-perintah

6
MATLAB, atau m-file dapat berupa fungsi yang menerima argumen input dan menghasilkan
output. M-file dibuat dengan menggunakan teks editor. Perbedaan antara script dan fungsi
disajikan dalam tabel berikut.
Script Fungsi
Tidak menerima argumen input maupun Menerima argumen input dan menghasilkan
menghasilkan argumen output argumen output
Beroperasi dengan data di workspace Variabel internal bersifat lokal untukfungsi itu
sendiri
Berguna untuk mengotomatisasi barisan perintah Berguna untuk memperluas bahasa matlab pada
yang perlu dijalankan beberapa Kali aplikasi anda
Pembuatan program pada MATLAB . Di editor inilah suatu program di tulis
dilakukan di editor tersendiri yaitu MATLAB kemudian di simpan sebagai file-m.
Editor/ Debugger

a. File-m
Program MATLAB dikenal dengan sebutan file-m, karena file ini berekstension m. File-m
yang dihasilkan oleh MATLAB adalah suatu program tak-terkompilasi, sehingga selalu
membutuhkan program interprenter, yaitu MATLAB itu sendiri. Artinya untuk dapat
menjalankan program yang telah dibuat dipanggil melalui MATLAB Command Window.
Pemanggilan file-m dilakukan dengan menuliskan nama file tersebut tanpa menyebutkan
ekstensionnya.
File-m tidak mempunyai struktur tertentu, berbeda dengan bahasa pemrograman C, Pascal
atau Basic. File-m tidak harus diawali atau diakhiri dengan kata kunci tertentu. File ini cukup
disusun dari pernyataan, fungsi atau perintah seperti halnya pada MATLAB Command Window,
untuk membangun logika tertentu.

b. Struktur dan Tipe Data


Tipe data yang digunakan pada pemrograman MATLAB defaultnya adalah double. Tetapi
tipe data dapat berubah menyesuaikan dengan nilai yang diberikan kepadanya. Beberapa tipe
data, yang juga merupakan fungsi pengubah tipe data, antara lain :
Jenis Tipe Data Keterangan
single bilangan pecahan presisi tunggal
double bilangan pecahan presisi ganda
int8, int16, int32 bilangan bulat 8, 16 atau 32 bit bertanda
char karakter atau string

7
Tidak bertanda maksudnya adalah tipe data yang tidak menerima bilangan negatif. Stuktur
data yang digunakan oleh MATLAB adalah:
 Multidimensional arrays
 Cell arrays
 Characters and text
 Structure

Pada MATLAB, multidimensional arrays adalah array dengan tiga atau lebih subscript. Dapat
dibentuk dengan memanggil zeros, ones, rand, atau randn dengan argument lebih dari dua. Cell
array merupakan multidimensional arrays yang elemen-elemennya dikopi (disalin) dari array
yang lain. Cell array kosong dapat dibentuk dengan fungsi cell. Tetapi biasanya cell array
dibentuk dengan melingkupi kumpulan suatu data dengan kurung kurawal ‘{ } ‘. Kurung kurawal
juga digunakan untuk mengakses isi dari berbagai sel. Karakter string adalah teks yang diawali
dan diakhiri dengan apostrof (‘). Setiap karakter dalam suatu string adalah satu elemen array,
dengan setiap elemennya sebesar 2 byte. String merupakan array numerik dengan atribut khusus,
oleh karena itu string dapat dimanipulasi dengan menggunakan semua metode manipulasi array
yang tersedia di MATLAB.

c. Struktur Fungsi
Deklarasi file-m sebagai fungsi adalah function yang terletak pada awal program dengan
sintaks.
function parameter_keluaran = nama_fungsi (parameter_masukan)

Parameter keluaran dapat lebih dari satu buah, cara penulisannya (sintaks) adalah:
[parameter_keluaran1, parameter_keluaran2,...]

Parameter masukan juga dapat lebih dari satu. Maka penulisannya (sintaks) adalah
(parameter_masukan1, parameter_masukan2,...)

Pada fungsi dengan beberapa parameter masukan, apabila cacah parameter saat pemanggilan
tidak sama dengan cacah parameter saat definisi, maka biasanya fungsi akan gagal dijalankan.
MATLAB mempunyai kemampuan untuk menghitung cacah parameter masukan dan cacah

8
parameter keluaran. Cacah parameter keluaran dinyatakan dengan fungsi nargin, sedangkan
cacah parameter keluaran dinyatakan dengan fungsi nargout.

d. Masukan dan Keluaran (Input dan Output)


Fungsi input digunakan untuk meminta masukan ketika program dijalankan. Fungsi ini
menerima parameter berupa string untuk memberikan keterangan tentang masukan yang harus
diberikan, pemasukan nilai yang ditampung disuatu variabel adalah
Variabel = input (‘keterangan masukan’);

Menampilkan hasil, nilai variabel atau keterangan pada saat program dijalankan dapat
menggunakan salah satu dari fungsi dibawah ini.
 disp menampilkan nilai variabel atau string secara sederhana
 fprintf menampilkan nilai variabel menggunakan string format

Beberapa simbol yang digunakan pada fungsi fprintf antara lain :

Format tampilan bilangan Karakter khusus


Simbol Arti Simbol Arti
%d Bilangan bulat /n Pindah ke baris baru
%f Bilangan pecahan /t Geser sebanyak 1 tab
%o Bilangan oktal
%x, %X Bilangan hexsadesimal
%e, %E Bilangan sebagai ax10b

Pada tampilan bilangan pecahan %f, %e dan %E, presisi dapat diatur dengan menyisipkan
format presisi bilangan. Format presisi adalah .p, dengan p berupa nilai yang menyatakan
banyaknya angka dibelakang koma.

e. Komentar Dan Tanda Baca


Suatu program yang baik biasanya mempunyai komentar terhadap operasi, pernyataan atau
perintah yang diberikan dalam program. Untuk memberikan komentar/keterangan pada perintah
MATLAB, harus didahului dengan tanda %. Beberapa perintah dapat diletakkan pada baris yang
sama dengan dipisahkan oleh tanda koma atau titik koma. Tanda koma memberitahu MATLAB
untuk menampilkan hasil sedangkan tanda titik koma mencegah penampilan hasil.

9
Suatu perintah MATLAB yang akan ditulis terpisah tidak dalam baris yang sama harus
ditandai dengan tiga titik berurutan. Posisi tanda tiga titik tersebut harus berada di antara nama
variabel dan operator. Jadi nama variabel tidak dapat dipecah.

8. Pencabangan Bersyarat
Program – program yang dihasilkan pada unit 3 merupakan program yang tidak mempunyai
kendali logika. Pada program tersebut, pernyataan demi pernyataan dieksekusi dari baris pertama
hingga baris terakhir. Pada program yang lebih kompleks, logika program tidak mengalir
sesederhana itu. Terdapat kasus – kasus yang mengharuskan logika program mengalir dengan
syarat tertentu. Secara umum, di semua bahasa pemrograman termasuk matlab, terdapat dua
macam kendali aliran, yaitu percabangan bersyarat dan perulangan.

a. Aliran Logika
Aliran logika pada kendali pencabangan bersyarat digambarkan dengan flowchart berikut :

Pelaksanaan eksekusi pada pernyataan X atau Y tergantung pada hasil pengujian syarat.
Jika syarat terpenuhi maka eksekusi berikutnya adalah pernyataan X, tetapi jika syarat tidak
terpenuhi maka eksekusi selanjutnya adalah pernyataan Y. Kadang – kadang pernyataan Y tidak
diperlukan, yang berarti pengujian syarat dilakukan untuk menentukan apakah pernyataan X
perlu dieksekusi atau tidak.

b. Operator Relasi dan Logika


Untuk menyatakan syarat pemilihan biasanya digunakan perbandingan antara dua buah
nilai. Perbandingan dilakukan dengan menggunakan operator relasi. Nilai benar pada MATLAB

10
dinyatakan dengan nilai 1 dan sebaliknya nilai salah dinyatakan dengan nilai 0. Hasil operasi 0
atau 1 dapat digunakan sebagai syarat pemilihan. Sebaliknya, hasil perbandingan dapat pula
digunakan dalam operasi matematis. Operator logika menyediakan cara untuk mengevaluasi
ekspresi logika. Untuk memastikan urutan operasi maka tiap syarat ditulis dengan menggunakan
tanda kurung “( ) “. Hal ini terutama apabila syarat tebentuk dari beberapa syarat yang dievaluasi
menggunakan operator logika.Berikut ini beberapa operator relasi dan operator adalah:
Operator relasi /Operator Keterangan
< Kurang dari
<= Kurang dari atau sama dengan
> Lebih dari
>= Lebih dari atau sama dengan
== Sama dengan
~= Tidak sama dengan
& AND
| OR
~ NOT

Contoh syarat yang tersusun dari beberapa syarat.


Syarat = syarat1 & ( syarat2 | syarat3 )
= (a = = b) & ((b ~ =c) | (b > d ))
c. Pernyataan If …..else….end
Apabila flowchart dinyatakan dengan pernyataan ini, maka :
Satu syarat Dua syarat Tiga syarat atau lebih

if syarat if syarat if syarat1


Pernyataan X; pernyataan X; pernyataan X;
end; else elseif syarat 2
pernyataan Y; pernyataan Y;
end; elseif syarat 3
elseif....
.......
else....
pernyataan Z;
end;

Pernyataan Z pada kasus ketiga berguna apabila tidak ada syarat pada pernyataan lain.
d. Pernyataan switch….case
Sering kali pengujian syarat bukan nilai benar ( yang berarti syarat tidak terpenuhi ) atau
salah ( yang berarti syarat tidak terpenuhi ). Jika syarat berupa operasi matematis, maka yang
dievaluasi sebagai syarat adalah kesamaan hasil dengan konstanta yang telah didefinisikan

11
sebelumnya. Pada kasus ini, penggunaan pernyataan if …else…end kurang efektif. Untuk
itu telah tersedia pernyataan switch…case…otherwise sebagai berikut :
switch syarat
case konstanta 1
pernyataan 1
case konstanta 2
pernyataan 2
...
otherwise
pernyataan N
end;

C. Langkah Percobaan
Ikutilah langkah – langkah berikut untuk memulai MATLAB :
1. Jalankan MATLAB dengan mengklik double pada ikon MATLAB

2. Amati jendela desktop MATLAB, menu-menu yang tersedia serta jendela-jendela yang
tergabung disana (desktop tools)

3. Ketikkan pernyataan/perintah dibawah ini pada command window. Pada masing-masing


pernyataan/perintah, akhiri dengan menekan tombol enter, kemudian amati hasilnya untuk
dianalisis.

4. Bilangan kompleks.
a = 4+3i
real(a)
imag(a)
abs(a)
angle(a)
conj(a)

5. Variabel.
Panjang = 10
lebar = 5
Luas_persegi_panjang = Panjang * lebar
6. Buat program berikut di MATLAB Editor/Debugger. Jangan akhiri masing – masing baris
dengan tanda titik-koma ( ; ) agar nilai variabel muncul di layar.
Y = 23/47
y_double = double (23/ 47)
y_single = single (23/ 47)
z_int = int8 (-93)
z_int8 = int8 (-130)

12
z_uint8 = uint8 (-93)

Kemudian simpan sebagai file-m dengan nama tipedata.m


Di MATLAB Command Window , jalankan program tersebut dengan memanggil nama file
tipedata kemudian tekan enter. Apakah variabel y, y_double dan y_single sama?
Adakah yang berbeda?. Berapakah nilai maksimum dan minimum dari tipe data int8 dan
uint8 ? Modifikasi program untuk mengetahui nilai dari int16, int32, uint16 dan
uint32. Lihat daftar variabel yang terbentuk dengan perintah whos . Dari semua tipe data
yang ada, urutkan berdasar ukuran byte yang digunakan mulai dari terkecil hingga besar.

7. Ketikan perintah berikut di Command Window, amati dan analisa hasilnya.


R = rand(3,4,5)
Cell array dibentuk dengan melingkupi kumpulan suatu data dengan kurung kurawal ‘{ }‘.
Kurung kurawal juga digunakan untuk mengakses isi dari berbagai sel. Ketikan perintah
berikut di Command Window, amati dan analisa hasilnya.
A = [ 1 2 3]
C = {A sum(A) prod(prod(A))}

8. Ketikan perintah berikut di Command Window, amati dan analisa hasilnya.


Teks_ku = ‘Hello saya lagi praktikum matlab’
Fungsi char menerima beberapa baris, menambahkan spasi pada setiap baris untuk
membuat sama panjang, dan membentuk karakter array. Pada Editor/ Debugger ketikan:
teks = char(‘A’,’rolling’,’stone’,’gathers’,’momentum.’)
karakter = {‘A’;’rolling’;’stone’;’gathers’;’momentum.’}
karakter_ke_string = cellstr(teks)
string_ke_karakter = char(karakter)

Setelah disimpan , panggil di Command Window, amati dan analisa hasilnya Structure adalah
multidimensional array dengan elemen-elemennya diakses dengan field designators. Pada
Editor/ Debugger ketikan :
S.nama = ‘Ed Plum’;
S.score = 83;
S.gradae = ‘B+’

Setelah disimpan , panggil di Command Window, amati dan analisa hasilnya.

13
9. Buat fungsi berikut. Simpan sebagai file xpolar.m
function x = xpolar (r, p);
p_rad = p* pi / 180;
x = r * cos (p_rad); % x adalah parameter keluaran

Kemudian pada Command Window, panggil fungsi tersebut dengan mengetikkan perintah
berikut :
xpolar (5, 60)
SumbuX = xpolar (5,30)

Fungsi berikut mempunyai parameter keluaran lebih dari satu


function [x, y] = xypolar (r, p);
p_rad = p * pi / 180
x = r * cos (p_rad); % x adalah parameter keluaran
y = r * sin (p_rad); % y adalah parameter keluaran

Panggil fungsi dengan cara – cara berikut. Bagaimana keluarannya?


[a, b] = xypolar (8, 30)
xypolar (8,30)
c = xypolar (8, 30)

Fungsi dipanggil dengan cacah parameter masukan kurang dari cacah parameter masukan saat
definisi, apa yang terjadi?

10. Ketiklah Program Masukan dan Keluaran (Input dan Output) berikut untuk menguji masukan
dan keluaran. Setiap baris diakhiri dengan tanda titik koma ( ; ).
bilangan = input(‘Masukan Bilangan = ‘);
disp (‘Bilangan Tersebut = ‘);
disp (bilangan)
matriks = input (‘Masukan matriks = ‘);
disp (‘Matriks tersebut = ‘);
disp (matriks)

Simpan dan jalankan program. Apa yang muncul dilayar? Uji untuk masukan berupa bilangan
bulat dan bilangan pecahan.

11. Program berikut untuk menguji format keluaran bilangan pecahan.


a = input (‘Pembilang = ‘);
b = input (‘Penyebut = ‘);
c = a / b;
fprintf (‘%f dibagi %f sama dengan %f \n’, a, b, c);
fprintf (‘%.3f dibagi %.3f sama dengan %.3f \n’, a, b, c);
fprintf (‘%e dibagi %e sama dengan %e \n’, a, b, c);

14
fprintf (‘%.3e dibagi %.3e sama dengan %.3e \n’, a, b, c);

Simpan dan jalankan program tersebut. Apa yang muncul di layar?, Jalankan program sebanyak
3 kali dengan masukan yang berbeda-beda. Apa fungsi penyisipan .3 pada format tampilan
bilangan?

12. Program berikut akan menguji format keluaran bilangan bulat.


w = input (‘Bilangan bulat = ‘);
fprintf (‘desimal: %d\t oktal: %o\t hexadesimal: %x\n’,w,w,w);

Simpan dan jalankan program. Apa yang muncul dilayar? Jalankan program sebanyak 3 kali
dengan masukan yang berbeda.
13. Buat program – program berikut dan amati hasilnya.
% program membuat sinyal sinus masukan / input
amp_sinyal = input (' Masukan amplitudo sinyal = ');
frek = input (' Masukan Frekuensi sinyal = ');
t_max = input (' Masukan maksimal waktu pengukuran (detik) = ');
t_int = input (' Masukan interval waktu pengukuran (detik) = ');
% pembuatan vektor waktu
t = (0 : t_int : t_max);
% Pembuatan Sinyal
frek_x = 2 ;
frek_rad = frek * frek_x * pi;
frekuensi = cos(frek_rad * t);
Sinyal = amp_sinyal * frekuensi ;
% keluaran
fprintf ('\t %f dikali %f dikali %f sama dengan %.3d \n', frek,
frek_x , pi, frek_rad);
fprintf ('\t %f dikali %f sama dengan %.3d \n', amp_sinyal,
frekuensi, Sinyal);
plot (t, Sinyal);

Selanjutnya buat program berikut, lalu jalankan di command window dan amati hasilnya !
14. Buat program – program berikut, simpan sebagai m-file,kemudian jalankan. Catat dan amati
hasilnya. Program berikut hanya mempunyai satu pilihan, vektor x akan ditampilkan bila
masukan, yaitu variablel
jawab = 1
x = round(rand(1,10)*20)-10;
jawab = input('apakah x akan ditampilkan [0=tidak,1=ya]?');
if(jawab==1)
disp(x);
end;

15
15. Pada beberapa kasus diperlukan masukan berupa jawaban ya atau tidak. MATLAB mampu
menerima karakter y atau t, tetapi harus dimasukkan sebagai ‘y’ atau ‘t’ ( dalam tanda petik
tunggal ). Hal ini kurang efektif, sehingga lebih mudah Jika dipakai 0 untuk tidak dan 1 untuk
ya. Program berikut untuk menguji nilai positif atau negatif dari masukan. Program mempunyai
dua pilihan.
a=input('masukan=');
if(abs(a)==a)
disp('bilangan positif');
else
disp('bilangan negatif');
end;

Uji untuk bilangan positif dan negatif. Bagaimana dengan bilangan 0, positif atau negatif ?

16. Program berikut untuk menguji nilai tegangan dalam suatu system digital.
Program terdiri dari tiga pilihan.
bb0 = 0; ba0 = 0.8; %batas bawah dan atas untuk logika 0
bb1 = 4.2;ba1= 5; %batas bawah dan atas untuk logika 1
s=input('tegangan = ');
if (s > bb1) & (s <= ba1)
disp('logika 1');
elseif (s>=bb0) & (s<ba0)
disp('logika 0');
else
disp('tak terdefinisi');
fprintf('tegangan harus antara %.1f - %.1f',bb0,ba0);
fprintf('atau %.1f - %.1f\n',bb1,ba1);
end;

Ujilah untuk beberapa bilangan yang saudara suka.

17. Apakah if dengan else if dapat diterapkan tanpa menggunakan else? Buat program untuk
mengujinya! Program berikut menampilkan sisa bagi.
m = input('m=');
n = mod(m,5);
if(n==0)%konstanta 0
disp('tak bersisa');
elseif (n==1)%konstanta 1
disp('sisa satu');
elseif (n==2)%konstanta 2
disp('sisa dua');
elseif (n==3)%konstanta 3
disp('sisa tiga');
elseif (n==4)%konstanta 4

16
disp('sisa empat');
else
fprintf('m bilangan pecahan,sisa %f\n',n);
end;

18. Bandingkan program diatas dengan program berikut. Manakah yang dirasa lebih efektif, dari sisi
pembacaan dan penulisan program.
m=input('m=');
n=mod(m,5);
switch n
case 0
disp('tak bersisa');
case 1
disp('sisa satu');
case 2
disp('sisa dua');
case 3
disp('sisa tiga');
case 4
disp('sisa empat');
otherwise
fprintf('m bilangan pecahan,sisa %f\n',n);
end;

Apakah konstanta case dapat berupa bilangan pecahan ? Buat program untuk mengujinya.

17
MODUL II PRAKTIKUM FISIKA KOMPUTASI
PEMOGRAMAN DENGAN FILE-M
A. Tujuan
Setelah mengikuti unit praktikum ini maka praktikan diharapkan dapat :
1. Mengetahui beberapa array dan matriks dasar
2. Mengetahui lebih banyak tentang kegunaan matriks dan array
3. Mampu melakukan manipulasi matriks dengan cara yang lebih kompleks
4. Mengetahui kegunaan perulangan sebagai kendali aliran program.
5. Mampu membuat program dengan perulangan.
6. Mampu menampilkan data dalam bentuk grafik,
7. Mengetahui berbagai macam cara menampilkan grafik

B. Teori

1. Matematika Array
Operasi matematis antara skalar dan array, meliputi penjumlahan, pengurangan,
perkalian dan pembagian, beroperasi pada semua elemen array. Sedangkan operasi
matematis antara array dengan array tidak sesederhana itu. Akan tetapi untuk array yang
berukuran sama, operasi penjumlahan, pengurangan, perkalian, dan pembagian dengan
MATLAB, berlaku elemen per elemen. Operasi matematis pada array dirangkum dalam
tabel berikut.

2. Matriks
Awalnya MATLAB digunakan untuk menyederhanakan perhitungan matriks dan
aljabar linier yang muncul pada berbagai aplikasi. Permasalahan yang paling umum pada
aljabar linier adalah mencari solusi persamaan linier, yang dapat diselesaikan dengan
menggunakan persamaan matriks. Fungsi-fungsi matriks yang disediakan oleh MATLAB
ditunjukkan dalam tabel berikut.

18
Fungsi Matriks Keterangan
balance(A) Penyekalaan untuk memperbaiki akurasi nilai
eigen
cdf2rdf(A) Bentuk diagonal kompleks ke bentuk diagonal
blok real
chol(A) faktorisasi Cholesky
cond(A) matriks bilangan kondisi
condest(A) estimasi matriks bilangan kondisi l-norm
d=eig(A) dan [V,D]=eig(A) nilai eigen dan vektor eigen
det(A) determinan
expm(A) matriks eksponensial
expm1(A) implementasi M-file dari expm
expm2(A) Matriks eksponensial menggunakan deret
Taylor
expm3(A) Matriks eksponensial menggunakan nilai eigen
dan eigen
funm(A,’fun’) menghitung fungsi matriks umum
hess(A) bentuk hessenberg
inv(A) invers matriks
logm(A) logaritma matriks
lscov(A,b,V) kuadrat terkecil dengan kovarians yang
diketahui
lu(A) faktor dari eliminasi gaussian
nnls(A,b) kuadrat terkecil nonnegative

3. Pengendalian Perulangan
Perulangan atau iterasi adalah bentuk kendali aliran untuk melakukan pekerjaan
berulang kali menggunakan suatu nilai yang berfungsi sebagai pencacah atau counter. Nilai
pencacah dinaikkan atau diturunkan setiap kali satu pekerjaan dilakukan. Pada operasi yang
melibatkan vektor atau matriks, pencacah biasanya juga berfungsi sebagai indeks, yang
menunjukkan posisi elemen vektor atau matriks yang dioperasikan. Terdapat dua macam
perulangan yaitu perulangan berbatas (for) dan perulangan bersyarat (while).

a. Perulangan Berbatas ( for )


Perulangan berbatas menggunakan pernyataan for sebagai berikut :

for pencacah = awal : perubahan : akhir


Pernyataan operasi
end;

Perulangan akan dilakukan mulai dari pencacah sama dengan nilai awal. Setelah
satu operasi selesai dilakukan, nilai pencacah diubah sebesar nilai perubahan. Jika nilai
pencacah hasil pengubahan telah melebihi nilai akhir, maka perulangan dihentikan.
Nilai perubahan dapat positif (naik) aau negatif (turun). Pada perubahan positif, akhir
harus lebih besar dari awal, sedangkan pada perubahan negatif, nilai akhir harus lebih

19
kecil dari nilai awal. Nilai perubahan bisa tidak dinyatakan, yang berarti perulangan
adalah perulangan positif dengan kenaikan 1, sehingga pernyataan menjadi :

for pencacah = awal : akhir


pernyataan operasi;
end;

Loop for memungkinkan sekelompok perintah diulang sebanyak suatu jumlah


yang tetap. Pencacah merupakan nama variabel yang diberikan, sedangkan awal : akhir
biasanya memiliki bentuk n:m atau n:i:m. Perintah-perintah di antara baris for dan end
dikerjakan berulang-ulang dari nilai awal n sampai nilai akhir m, dengan increment
(langkah) sebesar i.

Contoh 3.1: Perhitungan bilangan kuadrat dari himpunan bilangan bulat dari 1 sampai
5
>> for n = 1:5
x(n) = n^2
end

Bagaimana hasil keluaran yang terbentuk bila tanda ditambahkan tanda (;) pada
perintah di antara for-end. Bandingkan bila penulisan perintah perhitungan x(n) = n^2
ditulis x = n^2.

Contoh : Operasi perkalian 2 buah vektor

>> x = [1 2 3];
>> y = [4 5 6];
>> sum = 0;
>> for i = 1:3
sum = sum + x(i)*y(i)
end

b. Perulangan Bersyarat ( while )


Kadangkala, syarat nilai akhir perulangan tidak bisa ditentukan dengan pasti.
Untuk itu, digunakan perulangan bersyarat. Jika nilai pencacah memenuhi syarat
perulangan, maka perulangan dilanjutkan. Jika nilai pencacah tidak memenuhi syarat
perulangan, maka perulangan dihentikan. Perulangan bersyarat menggunakan while
sebagai berikut :

Inisialisasi
While syarat_perulangan
Pernyataan operasi;
End;

Inisialisasi biasanya merupakan penetapan nilai awal dari pencacah. Nilai


tersebut akan diuji pada syarat perulangan. Syarat perulangan sama sebagaimana pada

20
pencabangan bersyarat ( unit 4 ). Padanya berlaku pula operator relasi dan logika. Aliran
logika prulangan sebagai berikut :

Pada pernyataan for nilai pencacah diubah secara otomatis. Berbeda dari hal
tersebut pada pernyataan while, nilai pengubahan pencacah harus ditangani sendiri
dalam pernyataan operasi. Syarat pengulangan merupakan bentuk hubungan e1.e2
dimana e1 dan e2 merupakan ekspresi aritmatika biasa dan . merupakan operator relasi
yang didefinisikan sebagai berikut:

> lebih besar >= lebih besar atau sama dengan


< lebih kecil <= lebih kecil atau sama dengan
== sama -= tidak sama

Perintah-perintah di antara baris while dan end dikerjakan berulang kali selama
hubungan e1.e2 dalam ekspresi terpenuhi. Contoh :

>> n = 1;
>> x = 0;
>> while x < 20
x(n) = n^2;
n = n+1;
end

4. Tampilan Grafik
Suatu runtun data yang banyak, sulit untuk diperiksa hanya dengan mengamati angka
- angka yang ditampilkan. Penampilan data dalam bentuk grafik dapat memudahkan analisis.
Pada MATLAB grafik dibedakan menjadi dua macam , yaitu :
• Grafik kontinyu, baik linier ataupun logaritmis,
• Grafik diskrit.

21
a. Grafik Kontinyu Linier
Untuk menggambar grafik dua dimensi dapat menggunakan perintah plot.
Terdapat tiga bentuk penulisan fungsi ini, yaitu :
 plot(x,y), menampilkan vektor y (sumbu vertikal) terhAdap vektor x (sumbu
horizontal).
 plot(y) menampilkan vektor y terhAdap indeksnya.
 plot(x,y,s), menampilkan vektor y terhadap vektor x, dengan format menurut string
s.

String s menyatakan warna, bentuk penanda dan bentuk garis antarnilai. Berikut
adalah beberapa nilai yang dapat digunakan pada string s . Simbol Warna Simbol
Penandaan Simbol Style garis (Baca pada beberapa referensi Matlab yang lain)
Jika anda tidak memilih warna dan anda menggunakan skema standar,
MATLAB akan memulainya dengan warna biru dan berputar berurutan ke tujuh warna
pertama dalam tabel untuk setiap penambahan garis. Standar style garis adalah garis
lurus kecuali jika anda memberikan style garis yang lain.

b. Menggambar Grid, Kotak Keterangan, Label dan Legenda


Beberapa fungsi untuk memberikan keterangan pada grafik, yaitu :

Fungsi Keterangan
box off Menghilangkan kotak pada grafik
box on Menampilkan kotak pada grafik
box Men-toggle kotak pada grafik
xlabel(string) Menambahkan teks di samping sumbu x pada grafik
yang aktif
ylabel(string) Menambahkan teks di samping sumbu y pada grafik
yang aktif
title(string) Menambahkan teks pada bagian atas grafik yang aktif
grid on Menambahkan grid pada grafik
grid off Menghilangkan grid pada grafik
grid Men-toggle kotak pada grafik
text(x,y,string) Menambahkan teks pada lokasi (x,y) di grafik yang aktif
gtext(string) Menempatkan teks dengan mouse
legend(string,string,…) Menambahkan keterangan pada grafik dengan string
sebagai label
legend off Menghilangkan keterangan dari grafik yang aktif
Legend(...,pos) Memberikan keterangan dan meletakannya pada posisi
tetentu sesuai pos :
0 : diletakan pada posisi terbaik
1 : kanan atas (default)
2 : kiri atas
3 : kiri bawah
4 : kanan bawah
1 : kanan atas di luar grafik

22
c. Figure dan Subplot
Figure adalah jendela untuk menampilkan gambar grafik yang anda buat seperti
perintah plot dan sejenisnya. Gambar pada jendela figure ini dapat disimpan ke dalam
sebuah file yang sewaktu-waktu dapat dipanggil kembali. Suatu figure dapat terdiri
lebih dari satu grafik. Penempatan grafik dinyatakan dengan subplot(m, n, nomor)
diikuti fungsi penggambaran grafik, dengan
 m cacah grafik dalam satu baris
 n cacah grafik dalam satu kolom
 nomor nomor grafik, mulai dari baris pertama kolom pertama.

Misal, dalam figure terdapat 6 grafik, yang tersusun sebagai 2 baris dan 3 kolom.
sublot (2, 3, 1) sublot (2, 3, 2) sublot (2, 3, 3)
sublot (2, 3, 4) sublot (2, 3, 5) sublot (2, 3, 6)

C. KEGIATAN PRAKTIKUM

Ketikkan pernyataan-pernyataan di bawah ini. Pada masing-masing pernyataan, akhiri dengan


menekan tombol enter. Catat dan amati hasilnya. Jalankan Matlab sehingga muncul
MATLAB Command Window!

1. Pembentukan array
Cobalah perintah-perintah dibawah ini pada command window!!! Lalu amati hasilnya!
Simpanlah dengan nama : praktikum 2a.m

X=(0:0.1:1)*pi
X=linspace(0,pi,11)
M=logspace(0,2,11)
x=[2 2*pi sqrt(2) 2-3j]

2. Pengalamatan Elemen (Array)


Cobalah perintah-perintah dibawah ini pada command window!!! Lalu amati hasilnya!
Simpanlah dengan nama : praktikum 2b.m

X = [0 2 4 6 8 10 12 14 16 18 20];
Y = [1 3 5 7 9 11 13 15 17 19 21];
X(7)
Y(4)
Y(10:-1:2)
X(2:6)
Y(1:2:8)
X(1:3:10)

3. Matematika array
Cobalah perintah-perintah dibawah ini pada command window!!! Lalu amati hasilnya!
Simpanlah dengan nama : praktikum 2c.m

23
a = [2 4 3 5 7]
b = [1 2 3 4 5]'
c = a+5
d = a+b
e = b-2
f = b*3
g = b/2
h = a./b
k = a.\b
x = a*b
y = b*a
z = a.*b

4. Buatlah program – program berikut, simpan sebagai m-file dengan nama : praktikum
2d.m, kemudian jalankan. Catat dan amati hasilnya.
Contoh :
Penentuan kelulusan seorang siswa berdasarkan dua buah ujian yang diikutinya.
Ditetapkan bahwa siswa yang lulus harus memiliki nilai rata-rata minimal 60.

clc
nama = input('Nama Siswa = ', 's');
N1 = input('Nilai Ujian 1 = ');
N2 = input('Nilai Ujian 2 = ');
NR = (N1+N2)/2;
if NR > 60
ket = 'lulus';
else
ket = 'gagal';
end

disp(' ')
disp(['Nama = ', nama])
disp(['Nilai rata-rata = ', num2str(NR)])
disp(['Hasil akhir = ', ket])

5. Program berikut menunjukkan perulangan naik, tanpa menyebutkan nilai perubahan

for i=1:10
fprintf('%d\n',i);
end;

6. Program berikut menunjukkan perulangan turun dengan penurunan sebesar 2.

for i = 20 : -2 : 0
fprintf ('%d \n', i);
end;

24
Apa yang terjadi jika nilai akhir lebih besar dari nilai awal, tetapi perubahan negatif
(perulangan turun )?

7. Program berikut menampilkan perilaku rangkaian penyearah setengah gelombang dengan


beban R. Rangkaian akan meneruskan masukan jika masukan lebih besar dari 0 Volt.
Masukan rangkaian berupa tegangan sinusoidal, akan dilihat besar arus pada beban.

% beban
r_beban = input ('beban (ohm) = '); % gelombang sinusoidal
amplitude = input ('amplitude(volt) = ');
frek = input ( 'frekuansi (hz) = ');
frek_radian = 2 * pi * frek;
t = (0 : 0.01 : 1);
v = amplitude * cos(frek_radian * t); %rangkaian penyearah setengah
gelombang
for i = 1 : length (v)
if (v(i) > 0)
ir(i) = v(i) / r_beban;
else
ir(i) = 0;
end;
end;
plot (t, [v; ir]); % grafik
legend ('tegangan', 'arus');

Simpanlah dengan nama : praktikum 2e.m. Uji program dengan masukan beban ,
amplitude, frekuensi adalah 10 Ohm, 12 Volt dan 4 Hz. Cobalah untuk variasi nilai
masukan yang lain.

8. Program berikut melakukan operasi perulangan pada matriks. Pada program


menampilkan elemen – elemen matriks beserta posisinya dalam matriks.

% buat matriks
p = input('cacah baris = ');
q = input('cacah kolom = ');
a = 10 * rand (p, q); %tampilan elemen matriks
for i = 1 : p
for j = 1 : q
fprintf ('[%d,%d] = %.3f \n', i, j, a(i, j));
end;
end;

Simpanlah dengan nama : praktikum 2f.m. Buat program untuk melakukan operasi
transpose matrik. Lakukan seperti program diatas, bukan menggunakan operator!
Kemudian Simpanlah dengan nama : praktikum 2g.m

25
9. Program perulangan bersyarat untuk menampilkan bilangan 1 hingga 10.

i = 1 % inisialisasi
while ( i <= 10) % syarat perulangan
fprintf ('%d \n', i);
i = i+1; %pertambahan positif
end;

Pada program di atas, syarat terhadap pencacah berlaku sebagaimana batas akhir pada
pernyataan for.

10. Program berikut hendak meniru watak rangkaian komparator tersebut, dengan masukan
berupa tegangan sinusoidal.

% tegangan referensi keluaran


vr = input ('referensi keluaran (volt) = '); % gelombang sinusoidal
frek = input ('frekuensi (hz) = ');
frek_radian = 2 * pi * frek;
t = (0 : 0.01 : 1);
vin = cos(frek_radian * t); % watak komparator zero-crossing
n = 1;
while (n <= length (vin))
if (vin(n) < 0)
vout (n) = -1 * vr;
elseif (vin(n) < 0)
vout (n) = vr;
else
vout (n) = 0;
end;
n = n + 1;
end;
plot ( t, [vin; vout]);
legend (‘vin’, ‘vout’);

Simpanlah dengan nama : praktikum 2h.m

11. Interpolasi, Pendekatan yang dilakukan pada interpolasi adalah mencocokkan sebuah
atau sederetan kurva secara langsung melalui masing-masing titik data. Interpolasi Linier
merupakan bentuk yang paling sederhana untuk menaksir nilai di antara nilai-nilai yang
diketahui dengan baik. Interpolasi linier menghubungkan 2 titik data [(x1, f(x1)) dan x2,
f(x2))] dengan garis lurus, lalu dengan penghampiran menentukan nilai fungsi f(x) dari
suatu titik (x) yang terletak diantaranya. Persamaan umum interpolasi linier:

26
Contoh :
Diketahui data: x ln(x)
10
4 1,3863
6 1,7917
Taksirlah harga logaritma natural dari 2 atau ln(2).
Penyelesaian dalam bahasa Matlab:

% data x
x = [1 4 6]; % data ln x
lnX = [0 1.3863 1.7917];
cari = 2;
ln2 = lnX(1) + (lnX(2) - lnX(1)) / (x(2)-x(1)) * (cari - x(1))

Simpanlah dengan nama : praktikum 2i.m

12. Interpolasi dapat dilakukan dengan beberapa metoda diantaranya linier, kubik, dan spline.
Bila metoda yang akan digunakan tidak dispesifikasi, maka Matlab akan menggunakan
metoda linier sebagai default. Perintah yang digunakan menjadi: YI =
interp1(X,Y,XI,’method’). Contoh :

clc
% data x
x = [1 4 6]; % data ln x
lnX = [0 1.3863 1.7917];
hasil = interp1(x, lnX, 2)
hasil1 = interp1(x, lnX, 2, 'linear')
hasil2 = interp1(x, lnX, 2, 'cubic')
hasil3 = interp1(x, lnX, 2, 'spline')
hasil4 = interp1(x, lnX, 2, 'nearest')
hasil5 = interp1(x, lnX, [2, 5])

Simpanlah dengan nama : praktikum 2j.m

13. Berikut adalah penampilan sinyal acak y bernilai antara 0 hingga 10. Diasumsikan bahwa
sinyal mulai dari t = 0 detik hingga t = 1 detik, dengan 20 cuplikan pengukuran.

t = linspace (0, 1, 20);


y = 10 * rand(1, 20);
plot (t, y)

Simpanlah dengan nama : praktikum 2k.m

14. Ketikan contoh hasil frekuensi pengukuran minimal adalah 2 x 10 Hz dan 20 Hz. Berarti
periode pengukuran minimal adalah 1/ 20 = 0.05 detik.

27
amplitudo = 5;
frek_radian = 2 * pi * 10;
y = amplitudo * cos( frek_radian * t);
plot (t, y)

Simpanlah dengan nama : praktikum 2l.m


Kemudian ketikan perintah fungsi berikut dan amati grafik. Apa saja perubahan –
perubahan yang terjadi pada grafik ?

plot (t, y, ’ro-’)


plot (t, y, ‘b^-‘)
plot (t, y, ‘b:’)

Lakukan fungsi berikut dan amati sumbu x (horizontal).

plot (t, y)
plot (y)

15. Ketikan program berikut, amati perubahan yang terjadi pada grafik. Simpanlah dengan
nama : praktikum 2m.m

x = linspace(0,2*pi,30);
z = cos(x)
y = sin(x);
plot(x,y,x,z)
box off
xlabel(‘Variabel bebas x’)
ylabel(‘Variabel tak bebas y dan z’)
title(‘Kurva sinus dan cosinus’)
grid on, box on
text(2.5,0.7,’Sin(x)’)
gtext(‘Cos(x)’)
legend(‘Sin(x)’,’Cos(x)’)
legend off

16. Berikut menampilkan tiga grafik yang berbeda dalam satu figure.

t_deg = (0 : 10 : 360);
t_rad = t_deg * pi / 180;
subplot (3, 1, 1); plot (t_deg, sin (t_rad));
subplot (3, 1, 2); plot (t_deg, cos (t_rad));
subplot (3, 1, 3); plot (t_deg, cos (t_rad).* sin (t_rad));
subplot (3, 1, 1); title (‘sin’);

Simpanlah dengan nama : praktikum 2n.m

28
MODUL PRAKTIKUM III
FISIKA KOMPUTASI
A. Topik : Deret Taylor dan Kesalahan Komputasi

B. Tujuan : 1. Menghitung harga suatu fungsi dengan deret Taylor


2. Menghitung harga suatu fungsi dengan deret Maclaurin
3. Menghitung kesalahan kumputasi

C. Teori

Deret Taylor merupakan suatu perangkat matematika yang sangat penting dalam
permasalahan numerik, karena dengan deret nilai suatu fungsi f(x) dapat dicari bila harga x
pada titik asal (xo) yang berdekatan diketahui. Bila nilai fungsi f(x) dititik xo adalah f(xo),
maka dengan deret Taylor dari nilai fungsi di titik x adalah :
( n)
f ( xo )
f ( x) = ∑ ( x − x o ) n dimana (1)
n!

dnf
f ( n)
( xo ) = n
dan f ( o)
( xo ) = f ( xo )
dx x = xo

Pada kasus khusus bila xo = 0, persamaan (1) dapat ditulis menjadi:


( n)
f ( 0) dnf
f ( x) = ∑ ( x ) n dimana f ( n)
( 0) = n
dan f ( o)
( 0 ) = f ( 0 ) deret ini
n! dx x= 0

disebut juga dengan deret Maclaurin.


Persamaan (1) dapat juga dituliskan dengan mensubstitusikan x untuk (x - x0),
sehingga diperoleh:
( n)
f ( x0 )
f ( x − x0 ) = ∑ ( x )n
n!
Sebagai contoh tinjaulah deret cos(x) yang dapat di tulis sebagai berikut:

x2 x4 x6
cos( x ) = 1 − + − + ......
2 ! 4 ! 6!
Diagram alir untuk menghitung deret cos(x) dapat dilihat pada lampiran di bawah.

29
D. TUGAS

a. Dirumah (sebelum praktikum)


1. Pelajari kembali modul mengedit program menggunakan M-file pada Matlab.
2. Pelajari kembali secara meng-edit dengan cepat menggunakan Matlab.
3. Buat program untuk menghitung deret di atas berdasarkan diagram alir yang
diberikan di bawah.
4. Modifikasikan diagram alir di bawah dan program menghitung cos x di atas untuk
menghitung fungsi :
f(x) = (1 - x )p
5. Modifikasi program No.3 untuk menghitung nilai e-x, sin (x).
6. Kumpulkan tugas dirumah no. 3 dan No. 4 di atas sebelum praktikum dimulai, tanpa
tugas ini anda tidak diizinkan untuk melakukan praktikum pada jadwal tersebut.
(Sebaiknya tugas ini dibuat rangkap dua : 1 untuk anda dan satu lagi untuk
dikumpulkan).
7. Praktikum baru dapat dilakukan apabila tugas di rumah diserahkan kepada dosen atau
asisten yang bertugas pada waktu jadwal praktikum anda

b. Sewaktu Praktikum berjalan


1. Jalankan editor Matlab.
2. Editlah program No. 3 di atas, bila selesai RUN-lah proram tersebut, dengan tampilan
sebagai berikut:
Sudut x (dalam derajat) : 60
cos (x) : 5.0000000000E-01

Iterasi ke: Hasil Perhitungan Selisih harga Iterasi


1.
2.
3.
dst

30
3. Cek hasil program anda dengan referensi yang ada dan perlihatkan hasilnya kepada
dosen pembimbing atau asisten anda
4. Bila selesai simpanlah program ini dengan nama Praktikum 3a.m
5. Modifikasi program di atas untuk menghitung tugas No.4
6. Bila telah selesai gantilah harga p dan harga x-nya.
7. Simpan program ini dengan nama Praktikum 3b.m
8. Simpan program soal nomor 5 dengan ini dengan nama Praktikum 3c.m dan
Praktikum 3d.m

BAGAN ALIR PROGRAM UNTUK MENGHITUNG NILAI COS(X);

Referensi:
Sesuai dengan silabus matakuliah:

31
MODUL PRATIKUM IV
FISIKA KOMPUTASI

I. Topik : Mencari nilai suatu fungsi dari sejumlah data (titik pengamatan) yang dapat mem-
bentuk fungsi dengan metoda interpolasi dan ekstrapolasi .

II. Tujuan :
Setelah praktikum dilaksanakan mahasiswa mampu :
1. Membuat tabel beda newton untuk interpolasi linear.
2. Menentukan harga suatu titik dengan bantuan titik sebelumnya dengan menggunakan teknik
interpolasi linear.
3. Menentukan harga suatu titik dengan bantuan titik sebelumnya dengan menggunakan teknik
interpolasi kuadrat.
4. Menentukan harga suatu titik dengan bantuan titik sebelumnya dengan menggunakan teknik
interpolasi beda terbagi Newton.
5. Menentukan harga suatu titik dengan bantuan titik sebelumnya dengan menggunakan teknik
interpolasi Lagrange

III. Teori
Dalam suatu survei atau penelitian, pengukuran tidak mungkin dilakukan dengan jarak
(spasi) yang sangat rapat, karena membutuhkan waktu yang lama dan mahal. Terutama untuk
mengukuran ekplorasi pada daerah yang luas, berbahaya, ataupun mengukuran dengan
menggunakan peralatan yang mahal biaya operasionalnya seperti seimik, geolistrik, gaya berar
pada geofisika, pendektesian sebaran radiasi pada fisika inti dan sebagainya. Biasanya
pengukuran dilakukan dengan spasi tertentu, untuk meramalkan kondisi secara umum daerah
survei dan mengambil keputusan setelah pengukuran dilakukan. Untuk mengatasi hal ini
biasanya digunakan teknik interpolasi atau ekstrapolasi.

32
Bila kita mempunyai n + 1 buah titik data yang berupa pasangan bilangan ( (X o ,f 0 ), ,

(X f ) , (X f ) …….. (X
1, 1 2, 2 n , f n ) dengan x0, x1, x2 ……….xn semuanya berbeda, kemudian kita ingin

mencari suatu harga pada Pn (x ) pada setiap xj yang mempunyai nilai fj dengan fungsi

p o (x o ) = f o , p n (x1 ) = f1 , ………… p n (x n ) = f n

dimana Pn disebut dengan polinom penginterpolasi yang dapat digunakan untuk mendapatkan
nilai-nilai untuk semua harga x yang tidak dilakukan pengukurannya.
Harga pada daerah yang tidak dilakukan pengukuran tersebut dapat diperoleh dengan
interpolasi. Teknik interpolasi yang dapat digunakan antara lain interpolasi linear, kuadrad,
beda terbagi Newton, dan interpolasi Lagrange, bahkan juga dapat dengan teknik eksrapolasi
ataupun interpolasi invers.

1. Interpolasi Linear dan Kuadrat


Interpolasi linear merupakan interpolasi yang memakai sarana garis lurus yang
melalui titik (x o , f o ) , (x1, f1 ) fungsi polinom berderajat satu, dimana

P1 (x ) = f o + (x + x o )f (x o , x 1 ) Untuk mudahnya perhatikan gambar berikut :

Y=f(x)

f(x1)
f(xo) f1(x)

xo x x1

Dengan menggunakan sifat segitiga sebangun didapatkan :

33
f1 (x ) − f (x o ) f (x1 ) − f (x o )
=
x − xo x1 − x o

atau dalam bentuk lain dapat ditulis dengan :

f1 (x ) − f (x o )
(x − x o )
f1 (x ) = f (x o ) + x1 − x o ..............................(1)

Persamaan (1) merupakan persamaan interpolasi linear.


Dari persamaan interpolasi linear di atas terlihat bahwa kita dapat mendekati
suatu fungsi dengan garis lurus. Konsekuansinya adalah untuk mendapatkan harga taksiran
pada titik tertentu dibutuhkan banyak titik bantu. Untuk mengatasi hal ini digunakanlah
interpolasi kuadrat. Interpolasi ini dapat didekati dengan persamaan polinom sebagai
berikut :

f (x ) = b o + b1 (x − x o )b 2 (x − x o )(x − x1 ) …………………….. (2)

Harga bo didapatkan dengan mengambil harga x = xo, maka diperoleh : bo = f (x o )


Harga b1 didapatkan dengan mengambil harga x = x1 maka diperoleh :

f (x1 ) − f (x o )
b1 =
x − xo ........………………..(3)

Harga b2 didapatkan dengan mengambil harga x = x2 maka diperoleh :

f ( x2 ) − f ( x1 ) f ( x1 ) − f ( xo1 )

x2 − x1 x2 − x0
b2 = ………………………..(4)
x2 − x0

dan seterusnya.

34
2. Interpolasi Newton
Umpamakan kita mempunyai polinomial :

f (x ) = bo + b1 (x − x o ) + … b n (x − x o )(x − x1 ) ……. (x − x n −1 ) ……(5)

Dengan menggunakan sejumlah titik data, koefisien polinomial di atas dapat dihitung
dengan :
b o = f (x o )
b1 = f [x1 , x o ]
…………….(6)
b1 = f [x 2 , x1 , x o ]
b n = f [x n , x 2 , x , x o1 ]
dimana

[ ] f (xx −−xx )
f x1 , x j =
1 j

1 j

Persamaan ini disebut persamaan beda terbagi hingga pertama, sedangkan beda terbagi
beda kedua dapat ditulis dengan :

[
f x1 , x j , x k = ] f [x i ] [
− x j − f x j − xk
xi − x k
] …………….(7)

dan seterusnya.
Kesalahan dalam perhitungan interpolasi Newton adalah :

f (n +1) (ξ )
Rn = (x1+1 − x i )n +1 ……………(8)
(n + 1)!

Algoritma untuk menghitung interpolasi polinom dengan menggunakan beda terbagi


Newton sebagai berikut :

35
Masukan harga:
n, x i , f (x i ), i = 0,1,2,..........., n , Z dan eps (toleransi).
Keluaran : pbagi
Langkah-langkah :
bo = f ( xo )
pbagi = bo
faktor = 1
untuk i=1,2,……..,n lakukan
bi = f ( xi )
untuk j = i − 1, i − 2,........0, dilakukan

b j+1 − b j
bj =
xi − x j

faktor=faktor*(z-xj-1)
suku=bo*faktor
pbagi=pbagi+suku
jika ABS(suku) <=eps, selesai
Kemudian:
Masukan nilai yang harganya akan dicari (yc)
Algoritma ini akan menghasilkan tabel beda terbagi Newton untuk fungsi polinomial dan
harga titik yang akan dicari.

3. Formula Interpolasi Langrange


Diberikan (x0 , f 0 ), (x1 , f1 ),....., (xn , f n ) dengan xj berjarak sembarang, Langrange

mempunyai pemikiran memperkalian masing-masing fj dengan suatu polinom yang


bernilai 1 pada xI dan 0 pada n titik simpul lainnya, dan kemudian menjumlahkan n+1
polinom ini untuk memperoleh polinom interpolasi tunggal berordo n atau lebih kecil.
Rumus yang dihasilkan, disebut rumus interpolasi Langrange, adalah

n
1k ( x )
f ( x ) ≈ Lny ( x ) = ∑ fk
k = 0 1k ( xk )

36
dengan
10 ( x ) = ( x − x1 )( x − x2 )......(x − xn )

untuk k=1,2,…., n − 1
1k ( x ) = (x − x0 ).....( x − xk −1 )( x − xk +1 ).....( x − xn )

1n ( x ) = ( x − x0 )( x − x1 ).....( x − xn −1 )
sehingga :

y (x ) =
(x − x1 )(x − x2 )(x − x3 ).....(x − x4 ) y
(x0 − x1 )(x0 − x2 )(x0 − x3 ).....(x0 − xn ) 0

+
(x − x0 )(x − x2 )(x − x3 )......(x − xn ) y
(x − x1 )(x1 − x2 )(x1 − x3 )......(x1 − xn ) 1
+ …………………………….

+
(x − x0 )(x − x1 )(x − x2 ).....(x − xn −1 ) y
(xn − x0 )(xn − x1 )(xn − x2 ).....(xn − xn −1 ) n
y(x ) = nilai yang akan diinterpolasi

x = nilai variabel yang berkorespondensi dengan y(x)


x0 , x1 , x2 ......xn → nilai-nilai x

y0 , y1 , y 2 .... y n → nilai-nilai
y

4. Formula Interpolasi Beda Terbagi Newton


Misalkan ( x0 , y0 ), ( x1 , y1 ), ( x2 , y2 )......( xn , yn ) adalah titik-titik sebanyak (n + 1) buah,

maka interpolasi dari y( x ) adalah :


f1 − f 0
y (x ) = = f [x 0 − x 1 ]
x1 − x 0

f 2 − f 0 − (x2 − x0 ) f [x0 − x1 ]
=
(x2 − x0 )(x2 − x1 )
= f
(x1 , x2 ) − f (x0 , x1 )
(x2 − x0 )

37
IV. TUGAS
A. TUGAS RUMAH
(Buat rangkap 2, satu rangkap dikumpulkan sebelum pratikum dimulai, 1 rangkap untuk sdr.
gunakan sewaktu pratikum)
a. Rancanglah program untuk membuat tabel Interpolasi Beda sama Newton
b. Rancanglah program untuk mencari Interpolasi suatu fungsi dengan menggunakan Beda
sama Newton seperti tabel berikut :
X f(x)
0 2
2 12
4 20
6 36
8 45
10 60

Jika x = 2,5 fx = .......?


c. Rancanglah program untuk mencari nilai Interpolasi selisih tidak sama dengan
menggunakan Beda Newton dan interpolasi Lagrange dengan menggunakan flowchart di
bawah.
d. Hitunglah nilai x = 12 jika diketahui nilai tabel seperti berikut :
x f(x)
0 1
1 2
3 28
6 217
7 344
10 1001

B. TUGAS SEWAKTU PRAKTIKUM


a. Editlah dengan baik program yang telah sdr. siapkan sebelum praktikum, dengan masing-
masing program dengan nama Fiskom4a, Fiskom4b, fiskom4c dan Fiskom4d
b. Gunakanlah catatan kuliah sdr. untuk menguji kebenaran program yang sdr. buat.
c. Cek kebenaran hasil yang anda peroleh pada tugas rumah dengan program yang anda buat

38
39
Interpolasi Lagrange

Mulai

Baca
N

i = 1 ...N

Baca
x[i], fx[i]

Baca
xc

yjw = 0

i = 1 ...N

z=1

j = 1 ...N

i <>j

z= z*(xc-x[j])/(x[i]-x[j])

yjw = yjw + z*f[i]

Tulis
xc, yjw

END

40
MODUL PRAKTIKUM V
FISIKA KOMPUTASI

I. Topik : Menentukan Akar Persamaan Suatu Fungsi Polinom Metoda Tertutup

II. Tujuan : Setelah melaksanakan praktikum, praktikan dapat


1. Memahami konsep dasar pencarian akar dari suatu polynomial
2. Menentukan akar persamaan suatu fungsi dengan metoda bagi dua
3. Praktikan dapat membuat program pencari akar dengan menggunakan
metoda akolade
4. Memberi komentar dan kesimpulan tentang hasil pengoperasian program
dan unjuk kerja metode akolade
5. Menentukan akar persamaan suatu fungsi dengan metoda Newton-Raphson
III. Teori:
Dalam permasalahan fisika sering ditemukan bentuk persamaan seperti berikut
f(x) = 0
yaitu persamaan bilangan xo sedemikian rupa, sehingga menghasilkan f(xo) = 0, dalam
hal f(x) merupakan suatu fungsi linier yang diketahui. Nilai x yang memenuhi kondisi
atah syarat batas di atas disebut akar persamaan atau titik nol persamaan/fungsi tersebut.
F(x) dalam bentuk polinomial atau suku banyak secara umum dinyatakan
sebagai berikut :

a o + a1 x + a 2 x 2 + a3 x 3 + ... + a N x N = 0.
dengan ai adalah kontanta. Akar dari sebuah fungsi f(x) adalah harga x yang
membuat atau menjadikan nilai f(x) = 0.

Contoh kasus :

Y F(x)

X
0 X1 X2 Akar II
Akar I

Pada x1 nilai f(x) =y1 = 0. Pada x2 nilai f(x) =y2 = 0


** Kesimpulan : x1 dan x2 adalah akar - akar dari persamaan f(x)

41
Catatan :
• Khusus untuk polinomial berderajat dua, sebagai alternatif pencarian akar polinomial
dapat dilakukan dengan rumus kuadratik
• Jumlah akar dari suatu polinomial adalah sama dengan derajat dari polinomial.

Ide dasar pencarian akar:


1) jika f(x1) dan f(x2) berlawanan tanda, tentu f(x1) x f(x2) < 0, berarti pada interval antara
x1 dengan x2 terdapat akar dengan jumlah ganjil.

f(x1)
f(x2)
x1
x2
x2 x1

f(x1)
f(x2)

(a) (b)

Sebagai contoh (a) dan (b) di atas memenuhi f(x1) x f(x2) < 0, berarti
• Pada fungsi pertama (Gambar (a)) terdapat satu akar antara interval x1 dan x2
• Pada fungsi pertama (Gambar (b)) terdapat tiga akar antara interval x1 dan x2
2) Jika f(x1) dan f(x2) sama tanda, tentu f(x1) x f(x2) > 0 berarti pada interval antara x1 dan
x2 terdapat akar dengan jumlah genap atau tidak ada akar.

f(x1)
f(x1) f(x2)

f(x2)

x1 x2 x1 x2

(c) (d)

Contoh (c) dan (d) memenuhi f(x1) x f(x2) > 0


• Pada fungsi pertama (Gambar (c)) tidak terdapat akar antara interval x1 dan x2
• Pada fungsi pertama (Gambar (d)) terdapat empat akar antara interval x1 dan x2

3) Jika f(x1) x f(x2) = 0 berarti x1 atau x2 merupakan akar dari tersebut

42
Konsep di atas menjadi ide bagi metode numerik akolade untuk memeriksa apakah dalam
interval yang akan diperiksa terdapat akar atau tidak.

A. Metoda Bagi Dua (Bisection)


Metoda bagi dua adalah metoda untuk menentukan akar persamaan bila f(x)
kontinu. Metoda ini sangat sederhana, sehingga konvergennya lambat. Berdasarkan
kepada kenyataan bahwa nilai antara suatu fungsi, yaitu suatu selang [a,b] harus
mengandung titik nol, dengan arti kata bahwa f(a) dan f(b) harus berlawanan tanda,
misalnya f(a) < 0 dan f(b) > 0, atau sebaliknya. Hal ini berarti bahwa metoda
pengulangan pembagian selang menjadi dua, dimana pada setiap langkah diambil
setengah selang yang juga memenuhi persyaratan tersebut.
Metoda ini memerlukan dua niliai sebagai tebakan awal (a dan b) yang harus
memenuhi f(a)f(b) < 0, dan selang a dan b harus mengandung satu akar. Sebagai ilustasi
dapat diperhatikan Gambar (1) berikut:

(a,f(a))
y = f(x)

akar (T,f(T)) (b,f(b))

a T b

Gambar 1: Penenentuan Titik Tengah dan akar polinom dengan metoda Bagidua
 < 0, berarti akar pada (a, T)

f (a ) * f (T)= 0, berarti akar pada T = T
> 0, berarti akar pada (T, b)

Penentuan setengah selang yang mengandung akar dilakukan dengan pengujian tanda
hasil kali dari f(a)f(T) atau f(b)f(T). Apabila dimana a sebagai ujung kiri selang, b
sebagai ujung kanan selang, T titik tengah selang dapat diperoleh dengan persamaan
a+b
T= .
2
Metode Bisection (metode bagi dua) membagi interval (antara x1 = a dan x2 = b)
dimana diperkirakan terdapat sebuah akar, menjadi 2 subinterval yang sama besar. Akar
tersebut dicari dalam salah satu subinterval. Interval tidak boleh terlalu lebar. Mengapa ?.
Jawablah pertanyaan ini dalam laporan praktikum !

43
Algoritma metode Bisection adalah sebagai berikut:

Langkah 1 : Pilih taksiran nilai xl=a sebagai batas bawah interval dan taksiran nilai x2 = b
sebagai batas atas interval. Jika terpenuhi kondisi (syarat batas) berikut
dipenuhi
1. f(a) x f(b) < 0 maka ada akar dalam interval, selanjutnya ke langkah 2.
2. f(a) x f(b) > 0 maka tidak ada akar dalam interval, geser posisi interval.
3. f(a) x f(b) = 0 maka x= a atau x = b , salah satu merupakan akar.

Langkah 2 :Taksiran akar yang pertama x’ dimana

a+b
T=
2

Langkah 3: Evaluasi keberadaan akar, apakah dalam subinterval pertama (antara a dan T)
atau dalam subinterval kedua (antara T dan b).

Jika diperoleh
a) f(a) × f(T) < 0, maka akar berada dalam subinterval pertama maka b = T.
Selanjutnya ke langkah 4.
b) f(a) × f(T) > 0 , maka akar berada dalam subinterval kedua maka xl = T.
Selanjutnya ke langkah 4.
c) f(a) × f(T) = 0, maka T adalah akar fungsi yang diberikan

Langkah 4 : Kembali ke langkah 2 dan proses hingga langkah 3.

Agoritma dalam diagram alir adalah seperti terlihat pada lampiran.

B. Metoda Posisi Salah


Metode posisi salah merupakan suatu alternatif perbaikan berdasarkan suatu
pengertian grafik. Kelemahan metode bagi dua ialah dalam membagi interval dari x1
hingga x2 ke dalam bagian yang sama, tidak ada perhitungan harga f(x1) dan f(x2). Dengan
penjelasan grafik dapat diturunkan suatu formula yang diberi nama metode interpolasi
linier atau dengan nama lain metode posisi salah.
Dengan memakai segitiga yang serupa, perpotongan garis lurus dengan sumbu x
dapat ditaksir sebagai:
f ( x1 ) f ( x 2 )
=
x'− x1 x'− x 2

44
yang dapat diselesaikan
f ( x 2 )( x1 − x 2 )
x' = x 2 −
f ( x1 ) − f ( x 2 )
Metoda posisi salah merupakan pengembangan dari metoda bagi dua. Pada metoda
ini digunakan untuk menghitung hampiran akar. Perbandingan antara f(a) dan f(b) yang
lebih dekat ke nol ikut menentukan posisi akar, apakah lebih dekat ke ujung kiri (a) atau
ujung kanan (b).
Metoda posisi salah memanfaatkan wawasan grafis dengan cara menetapkan
hampiran akar sebagai perpotongan antara garis yang melalui titik-titik (a,f(a)) dan (b.f(b))
dengan sumbu-x. Andaikata titik potong tersebut adalah titik c, maka akar terletak pada
selang [a,c] atau [c,b]. Selanjutnya menentukan selang mana yang mengandung akar
digunakan metoda bagi dua. Lebih jelasnya perhatikan Gambar (2) berikut:

y =f(x)

a akar b b1 bo b
ao

Gambar 2: Penenentuan Titik Tengah dan akar polinom dengan metoda Posisi salah
Secara geometri metoda ini adalah sebagai berikut. Persamaan garis melalui
(a,f(a)) dan (b,f(b)) adalah:

Persamaan ini digunakan untuk menggantikan persamaan pada langkah 2 algoritma


metode bisection
1. Masukkan a, b dan epsilon serta f(a)
2. Hitung ca = 2b - a

45
b−a
3. c = b − f (b)
f (b) − f (a)

c − ca
4. Jika ≤ eps , maka akar = c dan selesai
c
5. Jika f(a)f(c) < 0, maka b = c, jika tidak a = c.
6. ca = c, dan kembali ke langkah ke-3
C.Ketentuan program komputasi
• Kriteria terminasi dalam metode terbuka menggunakan pendekatan kesalahan
aproksimasi, yang ditentukan dengan memakai penaksiran kesalahan:
xi +1 − xi
εa = × 100 %
xi +1

• Pada akhir komputasi, akar yang diperoleh sebaiknya dimasukkan kembali dalam fungsi
untuk menghitung apakah hasilnya mendekati nol. Pengecekan ini penting untuk
mengantisipasi kejadian konvergensi berosilasi atau kejadian yang menyebabkan harga
ε a kecil padahal penyelesaian masih jauh dari akar.
• Program harus mempunyai input batasan jumlah iterasi sehingga pada kejadian osilasi,
konvergensi perlahan atau penyelesaian divergensi program tetap dapat berhenti

D. Metoda Newton_Raphson
Metoda Newton-Raphson adalah metoda iterasi untuk memecahkan persamaan
f(x) = 0 dengan asumsi f(x) mempunyai turunan kontinu. Metoda ini sangat umum
dipakai kerena sederhana dan konvergensinya cepat. Untuk memudahkan pembahasan
perhatikan Gambar (3) berikut:
f(x)

f(xi) f’(xi) = kemiringan

xi+1 xi x

Gambar 3: Penenentuan Titik Tengah dan akar polinom dengan Newton Raphson

46
Gambar (3) memperlihatkan bahwa jika tebakan awal adalah xi, merupakan sebuah
garis singgung yang dapat diperluas dari titik [xi, f(xi)]. Titik dimana garis singgung ini
memotong sumbu-x yang biasanya menunjukkan sebuah taksiran perbaikan akar. Metoda
Newton-Raphson dapat diturunkan berdasarkan interprestasi geometri. Seperti pada
Gambar (3) turunan pertama pada xi ekivalen terhadap kemiringan fungsi yang diketahui.
f (x i ) − 0 f (x i )
Jadi f ' ( x ) = yang dapat di atur kembali menjadi x i +1 = x i − .. (3)
x i − x i +1 f ' (x i )
Kelemahan metoda Newton-Raphson adalah untuk menyelesaikan fungsi yang
turunannya sulit dihitung terutama fungsi polinom. Untuk kasus-kasus seperti ini turunan
tersebut dapat didekati dengan diferensial bagi hingga yang rumusnya adalah sebagai
beriktut:
f ( x i −1 ) − f ( x i )
f ' (x i ) ≈
x i −1 − x i
dengan demikian persamaan (3) dapat ditulis menjadi:
f ( x i )(x i −1 − x i )
x i +1 = x i − (4)
f ' ( x i −1 ) − f ( x i )
Perhitungan dengan menggunakan persamaan iterasi (4) disebut dengan metoda
SECANT.
Flowchart untuk metoda Newton-Raphson seperti terlampir

E. Algoritma Metode Akolade

Algoritma metode akolade yang disajikan dibawah ini menggunakan kriteria terminasi
dari iterasi perhitungan x’ yang menggunakan estimasi kesalahan.

ALGORITMA Metode_Akolade;

DEKLARASI
x1,x2,xr,xn,akar: real;
AA: real;
ES,EA:real;
i,IM,iterasi : integer;
function FngsPers(x:real): real;
function MtdAkolade(xl,xu:real): real;

DESKRIPSI
read(x1); read(x2); {nilai awal yg mengurung
akar}
read(ES); {estimasi kesalahan}
read(IM); {iterasi maks}

47
if FngsPers(x1)*FngsPers(x2)>0 then
write('Tebakan X1 dan X2 tidak mengurung akar')
else
xr:= MtdAkolade(x1,x2);
for i:=2 to IM do
AA:=FngsPers(x1)*FngsPers(xr);
if AA=0 then
akar:=xr; EA:=0;
iterasi:=i; i:=IM;
if AA<0 then x2:=xr;
if AA>0 then x1:=xr;
xn:= MtdAkolade(x1,x2);
if xn=0 then xr:=xn
else
EA:=abs((xn-xr)/xn)*100;
if EA<ES then
iterasi:=i; i:=IM;
xr:=xn;
akar:=xr;
endfor
write(akar:5:6); {cetak hasil akar}
if iterasi<>IM then
write(iterasi); {cetak jumlah iterasi}
write(EA:5:6); {cetak error aproksimasi}

IV. TUGAS
A. Dirumah (sebelum praktikum)
1. Cari akar persamaan f ( x) = −0,874 x 2 + 1,75 x + 2,627 dengan xl=2,9 dan xu=3,1,
dengan metoda bagi dua dan Newton-Rapson
2. Modifikasi program anda untuk metode posisi salah
3. Cari akar f ( x) = ε − x − x dengan xl=0 dan xu=1, ES=7,1, IM=5 → iterasi 2,
x=0,57219, EA=7,08%, metoda posisi salah dan Secant
4. Buat program untuk menghitung akar persamaan dengan menggunakan metoda bagi
dua berdasarkan diagram alir yang diberikan pada lampiran
5. Modifikasi diagram alir bagi dua tersebut untuk menghitung akar persamaan dengan
menggunakan metoda posisi salah dan buat pula programnya.
6. Buat program untuk menghitung akar persamaan dengan menggunakan metoda
Newton-Raphson berdasarkan diagram alir yang diberikan pada lampiran
7. Modifikasi diagram alir Newton-Raphson tersebut untuk menghitung akar persamaan
dengan menggunakan metoda Secant dan buat programnya.

48
8. Kumpulkan tugas dirumah no. 1 s.d No. 7 di atas sebelum praktikum dimulai, tanpa
tugas ini sdr. tidak diizinkan untuk melakukan praktikum pada jadwal tersebut.
(Sebaiknya tugas ini dibuat rangkap dua 1untuk sdr. dan satu lagi untuk dikumpulkan).
9. Praktikum baru dapat dilakukan apabila tugas di rumah diserahkan kepada dosen atau
asisten yang bertugas pada waktu jadwal praktikum sdr.
B. Sewaktu Praktikum berjalan
1. Edit program No. 4 Tugas Rumah di atas, bila selesai RUN-lah proram tersebut.
3. Chek hasil program sdr. dengan referensi yang ada dan perlihatkan hasilnya kepada
dosen pembimbing atau asisten sdr.
4. Bila selesai simpan program ini dengan nama FISKOM5A
5. Modifikasi program di atas untuk menghitung No.5. Tugas Rumah di atas, Simpan
nama FISKOM5B
6. Edit progran soal no. 6, Tugas Rumah, bila telah simpan dengan nama FISKOM5C
7. Modifikasi program ini untuk soal no. 6 untuk menyelesaikan soal No. 7 Tugas Rumah
di atas dan simpan program ini dengan nama FISKOM5D
8. Chek kebenaran Tugas Rumah yang dibuat secara manual di atas dengan yang sdr.
Hitung menggunakan program computer.
Perhatikan : Untuk setiap program yang telah selesai di edit, ganti fungsi yang akan
dihitung akarnya (ganti fungsi f(x)).
Contoh Soal no.1 menghitung fungsi f(x) = x2-2x-1, ganti fungsi dengan f(x) = x3- 2x -
1 atau f(x) = x2 - ex dan sebagainya. Hitung fungsi yang sama dengan keempat
metoda yang diberikan.

49
METODA BAGI DUA Metode Newton
Raphson
BEGIN

BEGIN

Baca
a, b, del
Baca
y(o)

Tulis
fx= sqr(x) +2x - n=1.15
1

T=(a+b)/2
x=y(n-1)

fa=sgr(a)+2a-1
Fungsi yang dapat fx=fungsi x
fb=sqr(b)+2b-1
ft=sqr(t)+2t-1 diubah
fx=f(x) f'x=fungsi
dx=f'(x)
turunan I

y(n)=x-fx/dx
fa*ft<0 No

Yes a=t TULIS


n,y(n)

b=t

akar=t

Tulis
akar,del END

ja-bj<del

END

50
MODUL PRAKTIKUM VI
FISIKA KOMPUTASI

I. Topik : Menentukan akar persamaan suatu fungsi polinom


II. Tujuan : 1. Membuat program user friendly
2. Membuat program yang mudah ditelusuri
3. Menentukan akar persamaan suatu fungsi polinom
4. Menentukan akar ganda suatu fungsi polinom
5.Menyelesaikan permasalahan fisika dengan salah satu metoda akar persamaan
III. Teori:
Dalam bidang fisika sering penyelesaian suatu persamaan yang berbentuk :
f(x) = 0
yaitu persamaan bilangan-bilangan xo sedemikian rupa yang menghasilkan f(xo) = 0.
Dalam hal ini f(x) merupakan suatu fungsi/persamaan non linier yang diberikan. Nilai x
yang memenuhi kondisi di atas disebut akar atau titik nol persamaan/fungsi tersebut.
Untuk menentukan akar persamaan suatu persamaan non linear atau polinom dapat
diselesaikan dengan meggunakan beberapa metoda antara lain : metoda Newton-
Raphson, Newton-Raphson yang dimodifikasi, metoda Secant termodifikasi, metoda
Bairstow dan sebagainya. Sedangkan untuk menyelesaikan permasalahan akar ganda
dapat digunakan metoda Ralston dan Rabinowitz yang merupakan modifikasi dari
metoda Secant.
A. Akar-akar suatu Polinom.
Bentuk umum persamaan polinom dapat ditulis dengan
f ( x ) = a n x n + a n −1 x n −1 + a n − 2 x n − 2 + ...........+ a1 x + a O
Untuk menyelesaikan akar persamaan polinom ini dapat dilakukan dengan
memodifikasi metoda Newton-Raphson. Untuk menghindari pencarian turunan suatu
fungsi polinom ditanggulangi dengan metoda pembagian sintetik.
Umpamakan fungsi yang dicari:
f ( x) = x 3 − 11x 2 + 39 x − 45 ------> f(2) = (2)2 – 11(2)2 + 39(2) – 45 = -3

f ' ( x ) = 3 x 2 − 22 x + 39 ---- f ’(2) = 3(2)2 – 22(2) + 39 =7


Untuk mendapatkan f(2) = -3 di atas dapat dilakukan dengan metoda pembagian
sintetik sebagai berikut:

51
[2] 1 − 11 39 − 45
2 − 18 42
1 −9 21 [−3]
Operasi di atas dapat dilakukan dengan langkah-langkah sebagai berikut:
1. Tuliskan koefisien-koefisien polinom dengan urutan an, an-1 … a0. Bila ada suku
yang tidak ada maka tulis 0 untuk koefesien yang bersangkutan.
2. Nilai x yang dipakai untuk mencari nilai fungsi ditempatkan pada deretan koefisien
yang paling kiri.
3. Selang satu baris di bawah deretan koefisien-koefisien tariklah sebuah garis lurus,
yaitu garis penjumlahan.
4. Turunkan an hingga kebawah garis penjumlahan , sebut sekarang an sebagai bn
5. Kalikan x dengan bn dan hasilnya letakkan di atas garis penjumlahan tepat di bawah
an-1. Jumlahkan an-1 dengan bn dan hasilnya letakkan di atas garis penjumlahan satu
kolom dengan an-2. Sebut hasil ini dengan bn-1.
6. Lakukan proses ini sampai diperoleh b0, dimana b0 adalah nilai dari f(x) yang dicari.
Diagram alir untuk pembagian secara sintentik ini dapat dilihat pada lampiran
dengan judul flowchart SINTETIK. Karena pembagian secara sintetik ini banyak
dipakai, maka buatlah program pembantu (FUNGSI).
Sekarang pembagian sintetik ini digunakan untuk menghitung akar suatu
polinom. Pembagian sintetik ini digunakan untuk menentukan nilai fungsi dan turunan
dari suatu polinom. Diagram alir untuk menentukan akar suatu polinom dengan metoda
Newton-Raphson dengan pembagian sintetik dapat dilihat pada diagram alir pada
lampiran.
Sebagai contoh: Sebuah peluru ditembakkan dengan kecepatan awal 100 ms-1
dengan sudut elevasi 450. Tentukan berapa jauh peluru akan melayang di udara.. Untuk
menyelesaikan permasalahan ini, terlebih dahulu ditentukan persamaan lintasannya.
Persamaan lintasannya adalah:
X = v0t cos(teta); Y = v0t sin (teta) – 0.5 gt2.
Dalam persamaan ini arah keatas diambil bertanda positif. Dengan
mensubsitusikan harga t, maka persamaan di atas dapat modifikasi menjadi:

52
g
y=− 2
x 2 + tan(teta) x yang merupakan polinom orde –2 dengan :
2(v 0 cos(teta))

g
a2 = − dan a1 = tan(teta ) = 1 serta a0 = 0.
2(v 0 cos(teta)) 2

Setelah didapatkan persamaan lintasan, maka jauhnya peluru melayang dapat


ditentukan.
B. PERSOALAN AKAR GANDA
Semua yang telah dipelajari di atas adalah untuk menentukan sebuah akar dari
persamaan. Bila persamaan mempunyai beberapa akar, maka untuk mencari akar
lainnya, harus dipanggil program Newton-Raphson atau metoda Secant beberapa kali
dengan mengambil titik awal yang berbeda-beda. Tetapi bila persamaan mempunyai
akar ganda, hasilnya tidak akan tampak.. Sekarang tinjau persamaan
f ( x) = x 3 − 11x 2 + 39 x − 45 atau (x-3)(x-3)(x-5) yang berarti mempunyai akar ganda
pada x =3.
Untuk memecahkan permasalahan ini dapat diselesaikan dengan memodifikasi
metoda Newton-Raphson dengan langkah-langkah sebagai berikut:
1. Dengan menggunakan metoda Newton-Raphson, tentukan akarnya yang paling
kanan, misalnya x = x1.
2. Bagi fn(x) dengan (x-x1); hasilnya adalah polinom yang ordenya lebih rendah dari 2
terhadap polinom semula yaitu fn-2(x). Begitulah seterusnya hingga akhirnya didapat
polinom orde 1, yaitu f1(x).
3. Tinjau sistem pembagian sintetik, baik nilai fungsi maupun nilai turunannya. Untuk
mendapatkan akar tersebut dapat ditempuh langkah-langkah sebagai berikut
 Tulis koefisien-koefisien polinom asli an, an-1, ….. a1,a0
 Lakukan pembagian sintetik untuk polinom asli tadi
 Ubah bn mejadi an-1.
 Lakukan pembagian sintetik terhadap sisa bagi dari polinom tadi. Untuk
mendapatkan akar persamaan pertama.
 Lakukan proses ini berulang-ulang sampai di dapatkan polinom orde-2.
Diagram alir untuk proses dapat dilihaat pada diagram alir terlampir.

53
IV. TUGAS
A. Dirumah (Tugas Pendahluan)
1. Buatlah algoritma dan program untuk menghitung akar polinom (sebagai contoh akar dari
f(x) = x2-2x-3), dengan metoda iterasi
2. Buat program untuk menentukan akar polinom dengan metoda pembagian sitentik
dengan bantuan diagram alir akar polinom terlampir.
3. Buat program untuk menentukan akar polinom dengan metoda Newton –Raphson orde-n.
dengan bantuan diagram alir akar ganda terlampir.
4. Modifikasi salah satu algoritma dan program di atas, untuk menentukan lama peluru
melayang di udara apabila ditembakkan dengan kecepatan awal vo ms-1 dengan sudut
elevasi α0.
f ( x) =untuk
5. Modifikasi salah satu metoda mencari akar persamaan e x − 5 xmenyelesaikan
2

permasalahan berikut: Persamaan keadaan dari gas real dapat dinyatakan dengan

persamaan Van Der Waals ( p + av )( v − b) = RT , dimana p adalah tekanan mutlak, v =


−2

V/n adalah volume molar yaitu volume (V) dibagi dengan jumlah mol zat (n), R adalah
konstanta gas universal, T adalah suhu a dan b masing-masing adalah konstanta yang
tergantung kepada jenis gas. Aplikasikan konsep ini untuk merancang volume tabung
agar dapat diisi gas sebanyak 1 mole pada tekanan 1 atm dan 300 oK. Bandingkah
hasilnya bila dipakai persamaan gas ideal. PV = nRT. Diketahui R = 0,082054 liter.atm
/(mole.K), a = 1,360 dan b = 0,03183. Keluran yang dikehendaki adalah sebagai tabel
berikut:
Persamaan Van der Waals
Tekanan (atm) Volume tabung (liter)
1 ........
10 ........
100 .........
Persamaan Gas Ideal
Tekanan (atm) Volume tabung
(liter)
1 ..........

54
10 ..........
100 ...........
6. Praktikum baru dapat dilakukan apabila tugas di rumah diserahkan kepada dosen atau
asisten yang bertugas pada waktu jadwal praktikum sdr.

B. Sewaktu Praktikum berjalan


1. Editlah Pendahuluan No. 1 di atas, bila selesai RUN-lah proram tersebut.
2. Cheklah hasil program sdr. dengan referensi yang ada dan perlihatkan hasilnya kepada
dosen pembimbing atau asisten sdr.
3. Bila selesai simpanlah pragram ini dengan nama PRFKOM6a
4. Editlah Pendahuluan No. 2 di atas, Simpan nama PR-GKOM6b
5. Buat program dalam M-file Matlab untuk menyelesaikan tugas pendahuluan No. 3,.
Simpan nama PR-GKOM6c
6. Buat program dalam M-file Matlab untuk menyelesaikan tugas pendahuluan No. 4,
dengan cara memodifikasi program PR-GKOM6c., Simpan nama PR-GKOM6d
7. Buat program dalam M-file Matlab untuk menyelesaikan tugas pendahuluan No. 5,
dengan cara memodifikasi program PR-GKOM6c., Simpan nama PR-GKOM6e

Catatan:
1. (Khusus untuk praktikum No.1, 2 dan 3), untuk setiap program yang telah
selesai di edit ganti-gantilah fungsi yang akan dihitung akarnya (ganti fungsi
f(x)). Contoh Soal no.1 menghitung fungsi f(x) = x4 -2x-1, gantilah fungsi dengan
f(x) = x3- 2x-1 atau f(x) = x2 - ex dan
sebagainya. Hitung fungsi yang sama dengan kedua metoda yang diberikan.
2. Untuksemua praktkum, Uji kebenaran hasil keluaran progam yang sdr. buat
secara manual atau membandingkan hasil yang diperoleh dengan luaran
program yang telah teruji kebenarannya.

55
Draf Diagram alir untuk menghitung Akar polinom dengan Metoda Newton Raphson

Draf Diagram menghitung akar ganda dengan Metoda Newton Raphson

56
57
MODUL PRAKTIKUM VII
FISIKA KOMPUTASI

I. Topik : Mencari Turunan Suatu Fungsi


II. Tujuan :
Setelah praktikum dilaksanakan, mahasiswa mampu:
1. Menghitung diferensial suatu fungsi dengan metoda beda depan, beda belakang dan beda
titik tengah.
2. Menghitung diferensial parsial dari suatu fungsi.
III. Teori
Turunan

Perhitungan diferensiasi secara numerik atau pendekatan beda digunakan untuk menghitung
turunan dari fungsi dengan menggunakan nilai dari suatu titik. Pendekatan ini sangat penting
dalam penyelesaian persamaan diferensial biasa dan persamaan diferensial parsial. Untuk
menghitung difrensial digunakan pendekatan beda depan, beda belakang dan beda tengah.
Bentuk grafik dari beda depan, beda belakang, dan beda tengah dapat dilihat seperti berikut :

Beda Depan Beda Belakang Beda Tengah


f(x) f(x) f(x)
f(xo) f(xo) f(xo)

xo xo+h xo-h xo xo-h xo+h


Dari grafik diperoleh :
f ( x 0 + h) − f ( x o )
a. Beda depan dengan persamaan: f ' ( x o ) ≅ (1)
h
f ( x 0 ) − f ( x o − h)
b. Beda Belakang dengan persamaan: f ' ( x o ) ≅ (2)
h
f ( xo + h ) − f ( xo − h )
c. Beda tengah dengan persamaan: f ' ( xo ) ≅ (3)
2h

Dengan menggunakan deret Taylor serta memberi nama untuk setiap grid (titik) dengan
notasi sebagai berikut f i ` = f ' ( xi ) , f i = f ( x i ) dan f i +1 = f ( xi +1 ) , maka deret Taylor dapat
ditulis dalam bentuk:

58
h 2 // h 3 /// h 4 iv
f i +1 = f i + hf i '+ fi + fi + f i + ...... (4)
2 6 24
Berdasarkan persamaan (4), maka persamaan (1), (2) dan (3) dapat ditulis menjadi:
f i +1 − f i 1
a. Beda depan dengan persamaan: f i / ≅ ; sisa = O(h) = − hf i //
h 2
− f i + 2 + 4 f i +1 − 3 f i 1
dan orde ke-2 : fi/ ≅ ; sisa = O (h 2 ) = h 2 f i /// (5)
2h 3
f i − f i −1 1
b. Beda belakang dengan persamaan: f i / ≅ ; sisa = O(h) = hf i //
h 2
f i − 2 − 4 f i −1 + 3 f i 1
dan orde ke-2 : fi/ ≅ ; sisa = O(h 2 ) = h 2 f i /// (6)
2h 3
f i +1 − f i −1 1
c. Beda tengah dengan persamaan: f i / ≅ ; sisa = O(h 2 ) = − hf i //
2h 6
− f i + 2 + 8 f i +1 − 8 f i −1 + f i − 2 1
dan orde ke-2: f i / ≅ ; sisa = O(h 4 ) = h 4 f i ( v ) (7)
12h 30
Selanjutnya untuk turunan kedua orde ke-1 dapat dirumuskan dengan:
f i + 2 − 2 f i +1 + f i
a. Beda depan dengan persamaan: f i // ≅ 2
; sisa = O(h) = −hf i ///
h
− f i +3 + 4 f i + 2 − 5 f i +1 − 2 f i 11 2 ////
dan orde ke-2: f i // ≅ 2
; sisa = O(h 2 ) = h f i (8)
h 13
dengan membuat analogi yang dapat dirumuskan sendiri.
3. Rumus-Rumus turunan kedua :
f i + 2 − 2 f i +1 + f i
a. Beda depan orde-1 f i // ≅ 2
; sisa = O(h) = −hf i ///
h
− f i + 3 + 4 f i + 2 − 5 f i +1 − 2 f i 11 2 ////
b. Beda depan orde -2 f i // ≅ 2
; sisa = O(h 2 ) = h fi
h 13
c. Beda belakang orde-1

d. Beda belakang orde-2 − 2 i −3 + 5 f i −2 − 4 f i −1 − 1 f i 11


f i // ≅ 2
; sisa = O(h 2 ) = h 2 f i ////
h 13
e. Beda tengah orde-1

59
f. Beda pusat orde-2

Untuk lebih silahkan saudara kembangan pendekatan perhitungan turunan orde-4 dan dan orde-n,
dengan cara membaca referensi yang sesuai

Metode Stirling
Rumusan umum interpolasi stirling dalam interval:
[ xi − k ,..., xi − 2 , x0 , xi +1 , xi + 2 ,..., xi + k ]
∆y i −1 + ∆y i u 2 2 u (u 2 − 1) ∆3 y i − 2 ∆3 y i −1 u 2 (u 2 − 1) 4
y = y0 = u + ∆ y i −1 + + ∆ yi−2 +
2 2 3! 2! 4!
u (u − 1)(u − 2 2 ∆5 y i −3 + ∆5 y i − 2 u 2 (u 2 − 12 )(u 2 − 2 2 6
+ ∆ y i −3 + ...
5! 2 6!
x − xi dy dy du
dimana u= , maka turunan fungsi = , bila diuraikan lebih lanjut menjadi
h dx du dx
dy 1 dy
= ,
dx h du
dy 1  ∆yi −1 + ∆yi 3u 2  ∆3 yi − 2 + ∆3 yi −1  4u 3 − 2u 3 
=  + u∆ yi −1
2
 + ∆ yi − 2 + hapus  +
: dx h 2 3!  2  4!  turunan kedua
5u 4 − 15u 2 + 4  ∆5 yi − 3 + ∆5 yi − 2  6u 5 − 20u 3 + 8u 6
 + ∆ yi − 3 + ...
5!  2  6!

60
d 2 y d  dy  d  dy du  d  i du  i 1  d 2u 
=   =   =   =  
dx 2 dx  dx  dx  du dx  dx  h dx  h h 2  dx 2 

ALGORITMA PROGRAM
• Menentukan data x[i] dan y[i] untuk jumlah n data
• Menghitung tabel perbedaan sesuai dengan metode yang digunakan
• Menghitung turunan pertama dan kedua untuk rumusan differensial
• Menuliskan hasil
!V. Tugas
A. Tugas Dirumuh
(Buat rangkap 2, 1 rangkap dikumpulkan sebelum praktikum dimulai, 1 rangkap sebagai
pedoman sdr. sewaktu praktikum)
1. Diagram alir yang diberikan pada lampiran adalah diagram alir untuk menghitung turunan
pertama dengan metoda beda tengah dua titik, rancanglah program untuk menghitung
turunan pertama dari suatu fungsi sembarang berdasarkan flowchart tersebut.
2. Modifikasi diagram alir soal No. 1 untuk menghitung turunan pertama dengan metoda
beda tengah menggunakan 3 dan 4 titik, rancanglah program untuk menghitung turunan
pertama dari suatu fungsi sembarang berdasarkan flowchart hasil modifikasi saudara.
3. Modifikasi diagram alir soal No. 1 untuk menghitung turunan pertama dengan metoda
beda depan 2 titik, rancanglah program untuk menghitung turunan pertama dari suatu
fungsi sembarang berdasarkan flowchart hasil modifikasi saudara.
4. Modifikasi diagram alir soal No. 3 untuk menghitung turunan pertama dengan metoda
beda depan dengan 3 dan 4 titik rancanglah program untuk menghitung turunan pertama
dari suatu fungsi sembarang berdasarkan flowchart hasil modifikasi saudara.
5. Modifikasi diagram alir soal No. 3 untuk menghitung turunan pertama dengan metoda
beda belakang 2 titik, rancanglah program untuk menghitung turunan pertama dari suatu
fungsi sembarang berdasarkan flowchart hasil modifikasi saudara.
6. Modifikasi diagram alir soal No. 5 untuk menghitung turunan pertama dengan metoda
beda belakang dengan 3 dan 4 titik rancanglah program untuk menghitung turunan
pertama dari suatu fungsi sembarang berdasarkan flowchart hasil modifikasi saudara.

61
7. Rancanglah program untuk menghitung turunan Kedua dari suatu fungsi sembarang
berdasarkan flowchart di bawah.
8. Berdasarkan algoritma metoda Stirling di atas buatlah diagram alir dan program untuk
menentukan turunan suatu fungsi.
B. Tugas Sewaktu Praktikum
1. Berdasarkan tugas pendahuluan No. 1, buat program untuk menghitung turunan pertama
dari suatu fungsi sembarang , simpan dengan nama Praki7a.
2. Berdasarkan tugas pendahuluan No. 2, buat program untuk menghitung turunan pertama
dari suatu fungsi sembarang , simpan dengan nama Praki7b.
3. Berdasarkan tugas pendahuluan No. 3, buat program untuk menghitung turunan pertama
dari suatu fungsi sembarang , simpan dengan nama Praki7c.
4. Berdasarkan tugas pendahuluan No. 4, buat program untuk menghitung turunan pertama
dari suatu fungsi sembarang , simpan dengan nama Praki7d
5. Berdasarkan tugas pendahuluan No.5, buat program untuk menghitung turunan pertama
dari suatu fungsi sembarang , simpan dengan nama Praki7e
6. Berdasarkan tugas pendahuluan No. 6, buat program untuk menghitung turunan pertama
dari suatu fungsi sembarang , simpan dengan nama Praki7f
7. Berdasarkan tugas pendahuluan No. 7, buat program untuk menghitung turunan pertama
dari suatu fungsi sembarang , simpan dengan nama Praki7g
8. Berdasarkan tugas pendahuluan No.8, buat program untuk menghitung turunan pertama
dari suatu fungsi sembarang , simpan dengan nama Praki7h
9. Coba program yang telah saudara buat untuk menghitung turnanan fungsi, berdasarkan
data seperti pada Tabel berikut:

62
63
BEGIN
FLOW CHART UNTUK MENCARI
TURUNAN I SUATU FUNGSI 1 2

BACA
dx =(z(1)-z(2))/(h)
y

h =1
n=0
zz=0
d=10
d = zz - dx

n=n+1
TULIS
h, dx, d

i = 1..2

zz = dx
h = h/10

B
i=1

S
B
abs(d) <= e

x=y-h x=y+h
S

TULIS
dx

Fungsi yang dapat


'fx' dirubah

end

z(i) = 'fx'

1 2

64
FLOW CHART UNTUK MENGHITUNG
BEGIN
TURUNAN KEDUA β

BACA
Y

dx=3*z(i)-
4*z(2)+z(3)

h=1; n=0
zz=0
d=10

dx =dx/(2*h)

n=n+1

d=zz-dx

Tulis
h, dx, d
i=1, 3

zz=dx
h=h/10

x=y+(i-1)*h

yes
abs(d)<= e
Buatlah fungsi sesuai
fx dengan bahan
perkuliahan di kelas No

Tulis
dx
z(i)=fx

end

α
β

65
MODUL PRATIKUM VIII
FISIKA KOMPUTASI

I. Topik : Menghitung Harga Integral Suatu Fungsi dengan Metoda Simpson dan
Metoda Trapesium
II. Tujuan :
1. Menghitung harga-harga integral suatu fungsi
2. Menghitung kesalahan komputasi dengan metode pendekatan
III.Teori
Integral berarti menyatukan keseluruhan atau menunjukkan jumlah total suatu
fungsi dari batas tertentu, secara matematis dapat rumuskan dengan persamaan
b
I = ∫ f ( x)dx yang berarti sebagai integrasi fungsi f(x) terhadap x yang dihitung
a

diantara batas bawah x=a hingga batas atas x=b. Untuk fungsi kontiniu sederhana,
seperti polinomial, eksponensial, ataupun fungsi trigonometri hasil integral dapat
dihitung secara eksak dengan menggunakan teknik analitik, seperti dalam kalkulus.
Fungsi kontiniu yang rumit dan harga fungsi f(x) yang diberikan yang diberikan dalam
bentuk tabulasi (titik diskrit) dapat diselesaikan melalui pendekatan (numerik).
Tiga pendekatan dalam merumuskan integrasi numerik. Pendekatan pertama
adalah berdasarkan tafsiran geometri integral Tentu. Daerah integrasi dibagi atas
sejumlah pias (strip) yang berbentuk segiempat. Luas daerah integrasi dihampiri
dengan luas seluruh pias. Rumus, dalam bab ini disebut kaidah, integrasi numerik
yang diturunkan dengan pendekatan ini digolongkan ke dalam metode pias.
Pendekatan kedua adalah berdasarkan polinom interpolasi. Di sini
fungsi integrand f(x) dihampiri dengan polinom interpolasi pn(x). Selanjutnya,
integrasi dilakukan terhadap pn(x) karena polinom lebih mudah diintegralkan
ketimbang mengintegralkan f(x). Rumus integrasi numerik yang diturunkan
dengan pendekatan ini digolongkan ke dalam metode Newton-Cotes, yaitu metode
yang umum untuk menurunkan rumus integarsi numerik. Pendekatan ketiga sama

66
sekali tidak menggunakan titik -titik diskrit sebagaimana pada kedua pendekatan di
atas. Nilai integral diperoleh dengan mengevaluasi nilai fungsi pada sejumlah
titik tertentu di dalam selang [-1,1], mengalikannya dengan suatu konstanta,
kemudian menjumlahkan keseluruhan perhitungan.
Pada umumnya, metode perhitungan integral secara numerik bekerja
dengan sejumlah titik diskrit , karena data yang ditabulasikan sudah berbentuk
demikian, maka secara alami sesuai dengan kebanyakan metode integrasi numerik.
Untuk fungsi menerus, titik-titik diskrit itu diperoleh dengan menggunakan
persamaan fungsi yang diberikan untuk menghasilkan tabel nilai. Dihubungkan
dengan tafsiran geometri inttegral tentu, titik-titik pada tabel sama dengan membagi
selang integrasi [a, b] menjadi n buah pias (strip) atau segmen (Gambar 1). Lebar
b−a
tiap pias adalah h = . Titik absis pias dinyatakan sebagai xr = a + rh, r = 0,
n
1, 2, ..., n dan nilai fungsi pada titik absis pias adalah fr = f(xr). Luas daerah
integrasi [a, b] dihampiri sebagai luas n buah pias. Metode integrasi numerik yang
berbasis pias ini disebut metode pias. Ada juga buku yang enyebutnya
metode kuadratur.

r xr fr
0 x0 f0 y fn-1 fn
1 x1 f1 f2 y =f(x)
2 x2 f2 f1
3 x3 f3
f0
4 x4 f4
... ... ...
n-2 xn-2 fn-2
h h h
n-1 xn-1 fn-1
n xn fn x
a = x0 x1 x2 n-1 xn=b

Gambar 1 Metode pias

67
Kaidah integrasi numerik yang dapat diturunkan dengan metode ias adalah:
1. Kaidah segiempat (rectangle rule)
2. Kaidah trapesium (trapezoidal rule)
3. Kaidah titik tengah (midpoint rule)

A. Kaidah Segiempat
Pandang sebuah pias berbentuk empat persegi panjang dari x = x0 sampai x = x1
berikut (Gambar 2).
y

y = f(x)

x0 x1 x

Gambar 2 Kaidah segiempat

x1
Luas satu pihas adalah (tinggi pias = f(x0) ), maka ∫ f ( x)dx ≈ hf ( x )
xo
0

x1
atau (tinggi pias = f(x1)), maka ∫ f ( x)dx ≈ hf ( x )
xo
1

x1 x2 x1
Jadi ∫ f ( x)dx ≈ hf ( xo ) + ∫ f ( x)dx ≈ hf ( x1 ) = 2 ∫ f ( x)dx ≈ h[ f ( x0 ) + ( f ( x1 )]
x0 x1 x0

Bagi setiap ruas persamaan hasil penjumlahan di atas dengan 2, untuk menghasilkan
x1
h
∫xo f ( x)dx ≈ 2 [ f ( x0 ) + f ( x1 )] (1)

Persamaan (1) disebut kaidah segiempat. Kaidah segiempat untuk satu pias dapat kita perluas
b
untuk menghitung I = ∫ f ( x)dx yang dalam hal ini, I sama dengan luas daerah integrasi dalam
a

selang [a, b]. Luas daerah tersebut diperoleh dengan membagi selang [a, b] menjadi n buah
pias segiempat dengan lebar h, yaitu pias dengan absis [x0 , x1], [x1 , x2], [x2 , x3], ... , dan
pias [xn-1 , xn]. Jumlah luas seluruh pias segiempat itu adalah hampiran luas I (Gambar 3) dan
diperoleh adalah kaidah segiempat gabungan (composite rectangle's rule):

68
y

y = f(x)

...

a = x0 x 1 x 2 x3 ...................... xn -2 xn -1xn = b x

dengan membagi 2 setiap hasil penjumlahan diperoleh persamaan:


b
h h
∫ f ( x)dx ≈ 2 f ( x ) + hf ( x ) + hf ( x ) + ........................hf ( x
a
0 1 2 n −1 )+
2
f ( xn )

Dengan demikian kaidah segiempat gabungan adalah

( f 0 + 2 f1 + 2 f 2 ............... + 2 f n−1 + f n ) = h  f 0 + 2∑ f i + f n 
b n −1
h

a
f ( x)dx ≈
2 2 i =1 

B. Metoda Trapesium
b
Integrasi fungsi I = ∫ f ( x)dx diekspansi (diuraikan) menjadi fungsi polinomial
a
b
I = ∫ f n ( x)dx , dimana f n ( x ) = a0 + a1 x + ................ + an −1 x n −1 + an x n
a
b
untuk orde pertamanya adalah: I = ∫ f i ( x)dx
a

Berdasarkan metoda interpolasi linier, sebuah garis lurus dapat dinyatakan dengan
f (b) − f (a)
f ( x) = f (a ) + ( x − a)
b−a
Luas daerah dibawah garis lurus merupakan taksiran integral dari f(x) antara batas a dan b,
sehingga diperoleh:
f (b) − f (a)
b
 
I ≈ ∫  f (a) + ( x − a)dx,
a b−a 

69
f (b) − f (a )
dengan hasil integrasi adalah: I ≈ f (a ) + ( x − a ) , bentuk ini disebut sebagai aturan
b−a
Trapesium.
Kesalahan perhitungan integral dengan metoda trapesium adalah:

Err = −
1 ''
12
f x,()
dimana x =a+b/2. Untuk memperbaiki akurasi dari perhitungan integral dengan metoda
trapesium dapat dilakukan dengan membagi interval (grid) menjadi segmen-segmen kecil.
Kemudian segmen ini dijumlahkan untuk memperoleh integrasi keseluruhan interval. Bila
interval a dan b dibagi dengan n segmen, maka antara a dan b terdapat n+1 titik basis yang
berspasi sama (x0, (x0,x1,x2……………xn), dengan lebar segmen adalah
b−a
h=
n
Jadi persamaan umum untuk menghitung integral dengan aturan trapesium adalah :
n −1
f ( x0 ) + 2∑ f ( xi + f ( xn )
I ≈ (b − a ) i =1
,
2n
b−a
dengan mengambil h = , maka persamaan ini dapat dirubah menjadi :
n
h
I= ( f 0 + 2 f1 + 2 f 2 .................. + 2 f N −1 + f N ) + Err
2
dengan f0=f(a), f1=f(a+h), fi=f(a+ih). Kesalahan perhitungan adalah :

Err ≅ −
1 (b − a)3 N ''
12 N 3 i =1
∑f x ()
C. Metoda Simpson
Jika terdapat sebuah titik di antara f(a) dan f(b), titik tengahnya adalah titik ketiga kataklah
c, f(a), f(c) dan f(c) dapat dihubungkan dengan sebuah parabola. Jika terdapat dua titik antara
f(a) dan f(b), maka keempat titik ini dapat dihubungkan dengan sebuah polinom orde ketiga.
Rumusan yang akan dihasilkan dari pemakaian integral dengan polinomial ini disebut aturan
Simpson (metoda Simpson). Pemakaian metoda simpson terdapat dua aturan, yaitu aturan
simpson 1/3 dan aturan simpson 3/8.

70
1. Aturan Simpson 1/3
Aturan Simpson 1/3 dihasilkan dari pendekatan polinomial orde-2, sehingga diperoleh :
b b
I= ∫
a
f ( x)dx ≅ ∫ f ( x)dx
a
2

Dengan hasil integralnya adalah:


h
I≅ [ f ( x0 ) + 4 f ( x1 ) + f ( x2 )]
3
dimana h=(b-a)/2. Pendekatan ini menghasilkan kesalahan perhitungan sebesar :

Err ≅ −
h5 iv
90
()
f x

Kemudian bila antara titik f(a) dan f(b) dibagi menjadi N segmen, maka rumusan Simpson 1/3
ini dapat ditulis menjadi:
b
I= ∫ f ( x)dx
a

h
= [ f0 + 4 f1 + 2 f 2 + 4 f3 + 2 f 4 + .............. + 2 f n − 2 + 4 f N −1 + f N ] + Err
3
N h5 w iv
()
N
dengan kesalahan : Err ≅ − f , dimana &f&iv = ∑ &f&iv xi / N
2 90 i =1

2. Aturan Simpson 3/8


Aturan Simpson 3/8 dihasilkan dari pendekatan polinomial orde-3, sehingga diperoleh :
b
I= ∫ f ( x)dx
a

3
= h[ f 0 + 3 f1 + 3 fx2 + 4 f 3 ] + Err
8

dimana h=(b-a)/3 dan fI=(a+ih) dengan kesalahan Err ≅ −


3 5 &&iv
80
() s
h f x , dimana x = (a + b) / 2

Metoda simpson 3/8 ini lebih teliti dibandingkan dengan metoda simpson 1/3. Metoda
Simpson 1/3 dan 3/8 di atas digunakan untuk menghitung integral dengan mengambil jarak yang
sama. Sedangkan untuk menghitung integral yang fungsinya beraturan bentuk kurvanya (ada
bagian yang landai dan ada bagian yang curam). Untuk kasus ini sebaiknya digunakan
pembagian daerah dengan jarak yang tidak sama. Untuk daerah yang landai digunakan segmen
yang besar dan untuk daerah curam sebaiknya digunakan segmen kecil.

71
Untuk menyelesaikan permasalahan ini biasanya digunakan kombinasi metoda simpson
1/3 dengan simpson 3/8 (Algoritma dapat dilihat pada Stevan C. Capra dan Rayman P. Canale),
Metoda Numerik untuk Teknik Hal.509).

IV. TUGAS
A. SEBELUM PRAKTIKUM
1. Pelajari flowchart untuk menyelesaiakan integral dengan menggunakan metoda Trapesium
dan Metoda Simson 1/3 di lampiran.
2. Hitung volume benda putar yang dihasilkan dari pemutaran kurva :
2
 x
y = 1+  
2
dimana 0 ≤ x ≤ 2. Gunakan metoda trapezium dengan jumlah segmen N = 2, 4, 8, dan 16
serta hitung kesalahan untuk setiap pemilihan segmen tersebut. Fungsi benda putar dari
persamaan di atas adalah :
2
x
f ( x) = ( 1 +   )2
2
3. Sebuah balok bermassa 100 gram, mula-mula berada dalam keadaan diam di atas bidang
datar yang licin. Pada balok tersebut bekerja gaya mendatar sebesar F = 104+3.103t,
dimana F = m(dv/dt). Tentukan laju balok pada saat 5 detik bergerak.
4. Laju seorang penerjun payung selama melayang di udara setelah payungnya dikembangkan
gm
dapat dinyatakan dengan persamaan v (t ) = [1 − e − ct / m ] (Soegeng ;1993:121),dimana g
c
= 9,8 m/dt2 adalah percepatan gravitasi, m = 70 kg adalah massa penerjun, c = 12,5 kg/dt
adalah hambatan udara. Dengan menggunakan pendekatan metoda Romberg hitunglah
jarak yang ditempuh penerjun 15 detik setelah payung terkembang.
5. Contoh fungsi dalam bentuk tabel adalah pengukuran fluks panas matahari yang
diberikan oleh tabel berikut:
B.

72
Waktu, jam Fluks panas q, kalori/cm/jam

0 0.1
1 1.62
2 5.32
3 6.29
4 7.8
5 8.81
6 8.00
7 8.57
8 8.03
9 7.04
10 6.27
11 5.56
12 3.54
13 1.0

Data yang ditabulasikan pada tabel ini memberikan pengukuran fluks panas q setiap jam
pada permukaan sebuah kolektor sinar matahari. Berapa panas total yang diserap
oleh panel kolektor seluas 150.000 cm2 selama waktu 13 jam. Apabila panel
mempunyai kemangkusan penyerapan (absorption), eab sebesar 45%. Panas total yang
t
diserap diberikan oleh persamaan H = eab ∫ qAdt
0

C. SEWAKTU PRAKTIKUM
1. Buatlah program untuk menghitung permasalahan 2, 3 dan 4 di atas, luaran ditampilkan dalam
table (misalnya seperti berikut):
Jumlah Pita (N) Lebar Pita (h) Luas Daerah Kesalahan
2
4
8
16
32
64
128
2. Simpan program metoda trapezium dengan nama PRKom8a
3. Simpan program metoda Simpson dengan nama PR_Kom8b
4. Simpan program soal no. 4 dengan PR_Kom8c
5. Ganti fungsi soal No.4 dengan dengan fungsi soal No. 2 dan 3 bandingkan hasilnya, banyak
iterasi yang dilakukan
6. Simpan program soal no. 5 dengan PR_Kom8d

73
Diagram alir menghitung Integral dengan Metoda Trapesium

74
75
MODUL PRAKTIKUM IX
FISIKA KOMPUTASI

I. Topik : Menentukan Nilai Integral Ganda Suatu Fungsi

II. Tujuan : 1. Membuat program user friendly


2. Membuat program yang mudah ditelusuri
3. Menentukan Nilai Integral Bidang
III. Teori:
Umpamakan suatu bidang dibatasi: y = d(x) dan y = c(x)

y = d(x) j=4
j=3

j=2

j =1

y = c(x) j =0

x= a x= b

Volume benda yang ditutupi oleh bidang di atas dapat dihitung dengan mengunakan
integral bidang (integral lipat dua) atau dapat ditulis dengan
b
d ( x ) 
I = ∫  ∫ f ( x, y )dy dx
a  c( x) 
Untuk menyelesaikan integral di atas secara numerik dapat digunakan metoda trapesiun
yaitu:
d ( x) d(x )

Misal G ( x) = ∫ f ( xy)dy
c( x)
, G ( xi ) = ∫ f ( x , y)dy
c ( xi )
i

b
I = ∫ G ( x ) dx
a

Dengan menggunakan formulasi trapesium

76
h
I= [ y0 + 2( y1 + y2 ............................. + yn −1 ) + yn ]
2
h
= [ f 0 + 2( f1 + f 2 ............................. + f n −1 ) + f n ]
2

hx d ( x ) d ( x1 ) d ( x2 ) d ( xn )

=  ∫ f ( x0 , y ) dy + 2 ∫ f ( x1 , y ) dy + 2 ∫ f ( x2 , y ) dy + ............................. + ∫ f ( xn , y )dy 
2  c ( x0 ) c ( x1) c ( x2 ) c ( xn ) 

Persamaan dapat ditulis lebih mudah :


h
I = x [G ( x0 ) + 2(G ( x1 ) + G ( x2 ) ) + ................................. + G ( xn −1 ) + G ( xn )]
2
i
hy = (d ( xi ) − c( xi ) )
N

Nilai untuk titik celah y dilambangkan dengan Yi,0, Yi,1, …………………………Yi,N.


Metoda integral trapesoida menjadi
d (x )

G( x i ) = ∫ f ( x , y)dy
i
c( x i )

hy
= [ f (x , y
i i ,0 ) + 2[ f (xi , yi ,1 ) + f (xi , yi , 2 )....................... f (xi , yi , N −1 )] + f (xi , yi , N )]
2

hx
I ≅ [G ( x o ) + 2 G ( x 1 ) + 2 G ( x 2 ) + ........ G ( x N ) ]
2
d ( xi )
dimana : G ( xi ) = ∫ f ( xi , y )dy
c ( xi )

1 (b − a )
dengan hy = [d ( xi ) − c( xi )] dan hx = .
N N
IV. TUGAS
A. Dirumah (sebelum praktikum)

1. Pelajari kembali secara meng-edit dengan cepat menggunakan Matlab


3. Pelajari diagram alir untuk mendapatkan solusi integral lipat dua terlampir.
4. Modifikasi diagram alir di atas agar dapat untuk menghitung integral berikut dengan 10
interval.

π sin( x )
I =∫ ∫ exp(− x − y )dydx
2 2

0 0

77
5. Modifikasi diagram alir yang agar dapat digunakan untuk menentukan luas daerah
setengah bola x2 + y2 + z2 = 1 yang di atasnya dipotong oleh selinder bola x2 + y2 – y =
0 . (Baca dan pelajari Mary L. Boas Hal 230, gambar 5.2).

6. Modifikasi diagram alir yang diberikan pada lampiran ( Simpson 1/3) menjadi digram alir
untuk menghitung integral dengan menggunakan Simpson 3/8
7. Tugas ini diserah sebelum praktikum dimulai.

B. Sewaktu Praktikum berjalan


1. Jalanlah program Mathlab
5 3+ exp( x / 5 )
2. Diagram alir terlampir adalah diagram alir menghitung integral ∫ ∫ sin( x + y)dxdy
1 ln( x )

dengan metoda Simpson 1/3. Berdasarkan diagram tersebut buatlah program dengan
Matlab untuk mendapatkan solusinya.

3. Cheklah hasil program sdr. dengan referensi yang ada dan perlihatkan hasilnya kepada
dosen pembimbing atau asisten sdr.

4. Hitunglah kedua nilai integral no. 4 dan 5 (tugas pendahuluan) atas dengan menggunakan
metoda Simpson 1/3. Diharapkan keluaran dari kedua program di atas adalah:

Jumlah Pita Lebar Pita Volume Benda Kesalahan


2
4
8
16
32
64
128
256
5. Hitunglah kedua nilai soal di atas dengan menggunakan metoda Simpson 3/8, berdasarkan
diagram alir yang telah sdr. kerjakan pada tugas pendahuluan no. 6 (Gunakan untuk
mencari solusi tugas rumah no. 4 dan 5. Diharapkan keluaran dari kedua program di atas
adalah:

Jumlah Pita Lebar Pita Volume Benda Kesalahan


2
4
8
16
32
64
128
256

78
79
MODUL PRAKTIKUM X
FISIKA KOMPUTASI
1. Penyelesaian Persamaan Diferensial Biasa
Untuk menyelesaikan persamaan diferensial biasa dapat dilakukan dengan metoda
Euler, metoda Runge-Kutta dan metoda Prediksi-Koreksi.
a. Metoda Euler.
Metoda ini merupakan metoda perhitungan persamaan diferensial biasa yang yang
sederhana. Metoda ini terdiri dari metoda Euler kedepan, belakang.
Umpamakan suatu persamaan diferensial biasa y’ = f(y,t) dapat diselesaikan dengan metoda
Euler ke depan dengan pendekatan.
y n+1 = y n + hf ( y n , t n ) dimana f ( y n , t n ) = y n/ (9).

atau y n = y n −1 + hf ( y n −1 , t n −1 ) dimana f ( y n , t n ) = y n/ , sedang metoda Euler


kebelakang dapat ditulis dengan
y n+1 = y n + hf ( y n+1 , t n+1 ) dimana f ( y n , t n ) = y n/
dengan demikian persamaan secara rekursi dapat dihitung sebagai berikut:
Metoda Euler ke depan ini sangat sesuai digunakan untuk menyelesaikan set persamaan
deferensial biasa seperti berikut:
y’ = f(y,z,t) ; y(0) = 0
z’ = f(y,z,t) ; z(0) = zo (10)
Metoda Euler untuk persamaan di atas adalah :
y n +1 = y n + hy n/ = y n + hf ( y n , z n , t n )
(11)
z n +1 = z n + hz n/ = z n + hf ( y n , z n , t n )
METODA RUNGE-KUTTA
Pada metoda ini ketelitian perhitungan bertambah dengan menggunakan titik awal untuk
setiap interval. Umpamakan persamaan diferensial
y’ = f(y,t), y(0) = yo (12)
untuk menghitung yn+1 pada tn+1 = t n + h dengan mengatahui nilai yn dapat dilakukan dengan
mengintegral persamaan (12) pada interval [tn, tn+1]. Untuk mengintegral persamaan (12)
dapat digunakan metoda trapsium. sebagai berikut:
tn +1
y n +1 = y n + ∫ f ( y, t )dt , dimana
tn

t n +1
1
∫ f ( y, t )dt ≅ 2 h[ f ( y
tn
n , t n ) + f ( y n +1 , t n +1 )] (13)

80
dalam ini yn+1 tidak diketahui, dengan demikian suku kedua didekati dengan f ( y n +1 , t n +1 )
dimana y n+1 merupakan perkiraan untuk yn+1.
Dengan demikian skema untuk penyelesaian persamaan diferensial dengan metoda Runge-
Kutta untuk orde ke-2 adalah sebagai berikut:
y n+1 = y n + hf ( y n , t n )
h
y n +1 = y n + [ f ( y n , t n ) + f ( y n+1 , t n +1 )]
2
dalam bentuk yang lebih umum biasanya digunakan :
1
y n +1 = y n + [k1 + k 2 ] dengan k1 = hf ( y n , t n ) dan k 2 = hf ( y n + k1 , t n+1 )
2
Pemakaian metoda metoda Runge-Kutta untuk persamaan diferensial orde yang lebih
tinggi dapat dilakukan dengan mudah. Upamakan persamaan diferensial :
y’’(t) + ay’(t) + by(t) = q(t), y(0) = 1; y’(0) = 0 (14)
dimana a dan b adalah koefesien dan q(t) fungsi yang diketahui dengan syarat awal yang
diberikan. Bila didefenisikan z(t) = y’(t)
maka persamaan (14) dapat direduksi menjadi sepasang persamaan diferensial:
y’ = f(y,z,t) ≡ z ; y(0) = 1
z’ = g(y,,z,t) ≡ -az-by+q, z(0) = 0. (15)
dengan demikian persamaan diferensial orde-2 dengan metoda Runge-Kutta dapat ditulis
menjadi.
k1 = hf ( y n , z n , t n ) = hz n
l1 = hg ( y n , z n , t n ) = h(−az n − by n + q n )
k 2 = hf ( y n + k1 , z n + l1 , t n +1 ) = h( z n + l1 )
l 2 = hg ( y n + k1 , z n + l1 , t n +1 ) = h(−a ( z n + l1 ) − b( y n + k1 ) + q n +1 )
1
dengan: y n +1 = y n + [k1 + k 2 ] dan z n +1 = z n + 1 [l1 + l 2 ]
2 2
Selanjutnya untuk metoda Runge-Kutta orde-4 dapat dihitung dengan menggunakan teknik
integrasi metoda Simpson 1/3. yang dapat ditulis sebagai berikut:
1
y n +1 = y n + [k1 + 2k 2 + 2k 3 + k 4 ] , dimana
6
k1 h
k1 = hf ( y n , t n ); k 2 = hf ( y n + , tn + )
3 3
 k h
k 3 = hf  y n + 2 , t n + ; k 4 = hf ( y n + k1 − k 2 + k 3 , t1 + h)
 2 2

81
1. TUGAS DIRUMAH
(Buat rangkap 2 dan 1 kumpulkan sebelum praktikum dimulai, 1 rangkap untuk sdr. gunakan
sewaktu praktikum)
a. Rancanglah diagram alir dan program untuk menentukan penyelesaian diferensial biasa
suatu fungsi berdasarkan algoritma metoda Euler.
b. Rancanglah diagram alir dan program untuk menentukan penyelesaian diferensial biasa
suatu fungsi berdasarkan algoritma metoda Runge-Kutta Orde-2
c. Rancanglah diagram alir dan program untuk menentukan penyelesaian diferensial biasa
suatu fungsi berdasarkan algoritma metoda Runge-Kutta Orde-3 dengan metoda simpson
1/3

2. Tugas Sewaktu Praktikum


a. Editlah dengan baik program telah sdr. siapkan sebelum praktikum
b. Gunakan catatan kuliah sdr. untuk menguji kebanaran program yang sdr. buat

5. Bahan Pustaka Sesuai dengan silabus mata kuliah

82
FLOW CHART UNTUK MENGHITUNG PDB DENGAN
METODA EULER
BEGIN
β
α

BACA
x1,x2, y1
n =1 benar

Tidak

n=0
d=10 d = y -y2 Tulis
p,y

Tulis
n = n+1 p,y, d
p = 2^n
dx = (x2-x1)/p Benar
x = x1
y = y1
y2 = y

Buatlah fungsi sesuai


fx dengan bahan
perkuliahan di kelas
abs(d)>= eps

y = y + fx *dx
x = x + dx
Tulis
x2, y

x < x2

end
α
β

83
FLOW CHART METODA RUNGE-KUTTA ORDE 2 FLOW CHART METODA RUNGE-KUTTA ORDE-4

Mulai
MULAI

Syarat Batas Syarat Batas


z =0 y[1]= 1, y[2] = 0
y =1 jp=2
n = 20
Baca
Baca
int, js, tlm FUNGSI (t,h,y,k)
b, k, m, h, z,
h = int/js; tb=0
hh = h/2
k[1] = y[2]*h
bm = b/m k[2] = -y[1]*h
km = k/m
Tulis h,tb
i = 1..js

Tulis y[i] END


i = i..n

n = 1..jp

kount = 1..50 TL = TB

TB = TB + H

step = step + 1
Tt = TL + HH

t = h * step i = 1..jp
ya[i] = y[i]

k1 = h * z f(tl ,h,ya,k1)
l1 = -h* (bm*z + km * y
k2 = h * (z + l1) i = 1..jp
l2 = -h*(bm*(z+l1) + km*(y+k1)
ya[i] = y[i]+k1[i]/2

f(tt,h,ya,k2)
y = y + (k1 + k2)/2
z = z + (l1 + l2)/2
i = 1..jp

ya[i] = y[i]+k2[i]/2
Cetak
f(tt,h,ya,k3)
y, t
i = 1..jp

ya[i] = y[i]+k3[i]
End
f(tt,h,ya,k4)

i = 1..jp

y[i]=y[i]+(k1[i]+2*k2[i]+2*k3[i]+k4[i])/6

i = 1 ..jp

Cetak
y[i]

tb > tlm
End

84
MODUL PRAKTIKUM XI
FISIKA KOMPUTASI

A. TEORI
1. Baca teori pada hand out yang telah diberikan
2. Metoda Numerik oleh Abdul Munif dan Aries Prastyoko, hal 267 – 307)

B. Beberapa persamaan iterasi yang dipakai


1. Metoda Adam:

‫ݕ‬௡ାଵ = ‫ݕ‬௡ + (55݂௡ − 59݂௡ିଵ + 37݂௡ିଶ − 9݂௡ିଷ )
24

2. Metoda Heun (metoda prediktor-korektor) merupakan metoda multi step dengan persamaan
iterasi adalah:

a. Prediktor :
଴ ௠
‫ݕ‬௜ାଵ = ‫ݕ‬௜ିଵ + ݂(‫ݔ‬௜ , ‫ݕ‬௜௠ )2ℎ
b. Korektor :
௝ିଵ
௝ ݂(‫ݔ‬௜ , ‫ݕ‬௜௠ ) + ݂൫‫ݔ‬௜ାଵ , ‫ݕ‬௜ାଵ ൯
‫ݕ‬௜ାଵ = ‫ݕ‬௜௠ + ℎ
2
Untuk j = 1, 2 ..., m

3. Metoda Milne (termasuk metoda multi step) dengan persamaan iterasi:


a. Prediktor :
4ℎ
‫ݕ‬௡ାଵ = ‫ݕ‬௡ିଷ + (2݂௡ିଶ − ݂௡ିଵ − 2݂௡ )
3
b. Korektor :

‫ݕ‬௡ାଵ = ‫ݕ‬௡ିଵ + (݂௡ିଵ + 4݂௡ − ݂௡ାଵ )
3
4. Metoda Adam-Moulton (termasuk metoda multi step) dengan persamaan iterasi:
a. Prediktor :

‫ݕ‬௡ାଵ = ‫ݕ‬௡ + (55݂௡ − 59݂௡ିଵ + 37݂௡ିଶ − 9݂௡ିଷ )
24
c. Korektor :

‫ݕ‬௡ାଵ = ‫ݕ‬௡ + (9݂௡ାଵ + 19݂௡ − 5݂௡ିଵ + ݂௡ିଶ )
24

C. TUGAS DIRUMAH
(Buat rangkap 2 dan 1 kumpulkan sebelum praktikum dimulai, 1 rangkap untuk sdr. gunakan
sewaktu praktikum)

a. Rancanglah diagram alir dan program untuk menentukan penyelesaian diferensial biasa
suatu fungsi berdasarkan algoritma metoda Runge-Kutta Orde-4 dengan metoda simpson
3/8

85
b. Rancanglah diagram alir dan program untuk menentukan penyelesaian diferensial biasa
suatu fungsi menggunakan metoda Korektor-prediktor (Stevan C. Chapra dan Raymond
P. Canale Terjemahan S. Sardy halaman 643 – 657)
c. Rancanglah diagram alir dan program untuk menentukan penyelesaian diferensial biasa
suatu fungsi menggunakan metoda Adam
d. Rancanglah diagram alir dan program untuk menentukan penyelesaian diferensial biasa
suatu fungsi menggunakan metoda Milne
e. Rancanglah diagram alir dan program untuk menentukan penyelesaian diferensial biasa
suatu fungsi menggunakan metoda Adam- Moulton

D. Tugas Sewaktu Praktikum


a. Editlah dengan baik program telah sdr. siapkan sebelum praktikum
b. Gunakan catatan kuliah sdr. untuk menguji kebanaran program yang sdr. Buat
c. Bandingkan hasil perhitungan dari kelima metoda yang sdr. gunakan untuk menghitung
fungsi tersebut

86
MODUL PRAKTIKUM XII
FISIKA KOMPUTASI

I. Topik : Penyelesaian Sistem Persamaan Linier dan Matriks

II. Tujuan : 1. Membuat program user friendly


2. Membuat program yang mudah ditelusuri
3. Membuat Sistem Persamaan Linier Permasalahan Fisika
4. Menentukan Harga Variabel dari sistem Persamaan Linier
5. Mengunakan Metoda Matriks Invers atau metoda eliminasi Gauss untuk
Menyelesaikan sistem Persamaan Linier
III. Teori:
A. METODA ELIMINASI DAN INVERS MATRIKS
Penyelesaian sistem persamaan linier secara eleminasi merupakan teknik terbatas (finite)
dalam kemampuan dan paling terdahulu didapatkan, tetapi paling banyak digunakan untuk
keperluan praktis. Teknik ini digunakan berdasarkan proses pergantian secara bertahap terhadap
variabel yang dicari pada set persamaan simultan sampai diperoleh bentuk persamaan dengan
satu variabel. Metoda ini pertama sekali digunakan untuk menyelesaikan sekumpulan
persamaan yang dikembangkan berdasarkan kepada mendapatkan sebuah variabel yang tidak
diketahui diantara sepasang persamaan linier simultan. Berdasarkan sifat penyelesaiannya
metoda ini diklasifikasikan sebagai metoda langsung.
Terdapat banyak metoda eliminasi, tetapi dalam bab ini nantinya hanya akan dibahas
tentang eliminasi Gauss dan eliminasi Gauss-Jordan, serta pada bagian akhir bab akan
diaplikasikan metoda ini untuk mendapatkan invers dari sebuah matriks.
Ambil sebuah sistem persamaan linier simultan sebagai berikut:
a11 x1 + a12 x2 + a13 x3 + ... + a1n xn = b1
a21 x1 + a22 x2 + a23 x3 + ... + a2n xn = b2
a31 x1 + a32 x2 + a33 x3 + ... + a3n xn = b3 (2-1)
.....................................................................
an1 x1 + an2 x2 + an3 x3 + ... + ann xn = bn
atau dalam bentuk notasi matrik dapat ditulis menjadi:

87
 a11 a 12 a 13 .. a1n   x1   b1 
a a 22 a 23 .. a 2 n  x 2  b2 
 21     
 a 31 a 32 a 33 .. a 3n   x 3  = b3  (2-2)
 
 .. .. .. .. ..   ...  ...
   
 a n1 a n 2 a n 3 .. a nn  x n  bn 
Dalam notasi vektor persamaan (2-2) dapat ditulis menjadi:
[A]{x} = {b) (2-3)
dimana [A] adalah matriks kuadrat (n x n) dengan elemen aij (i = 1... n, j = 1,...n) dan x adalah
vektor variabel yang akan dicari nilainya, b adalah vektor harga konstan sistem persamaan linier.
Dengan mengetahui data tentang nilai aij (harga konstanta setiap variabel) dan nilai bi pada
bentuk persamaan linier simultan, maka harga xi dapat ditentukan dengan beberapa prosedur
eliminasi antara lain eliminasi Gauss dan eleminasi Gauss-Jordan yang akan dijelaskan pada
bagian berikut ini.

1. ELIMINASI GAUSS
Untuk memudahkan dalam menjelaskan metoda eleminasi Gauss ini terlebih dahulu
perhatikanlah tiga persamaan dengan tiga variabel berikut ini:
a11 x1 + a12 x2 + a13 x3 = b1 (2-4a)
a21 x1 + a22 x2 + a23 x3 = b2 (2-4b)
a31 x1 + a32 x2 + a33 x3 = b3 (2-4c)
Dalam hal ini |aii| ≥ | aii + ... + aii-1 + aii+1 + ... + ain |
Untuk mendapatkan menyelesaian sistem persamaan di atas, paling sedikit salah satu dari a11,
a21 dan a31 harus tidak sama dengan nol, bila tidak, hanya ada dua variabel yang muncul pada
ketiga persamaan. Bila a11 adalah nol, maka dapat diatur kembali sistem persamaan tersebut
sehingga x1 dalam persamaan tidak sama dengan nol. Dengan saling memindahkan dua baris
dalam sistem persamaan ini, dimana hal ini tidak akan merubah penyelesaian sistem
persamaan tersebut.
Seterusnya didefenisikan sebuah faktor pengali katakanlah dengan m2 = a21 /a11.
Kemudian dikalikan persamaan (2-4a) dengan m2 dan selanjutnya dikurangkan dengan
persamaan (2-4b), sehingga diperoleh:
(a21 - m2 a11)x1 + (a22 - m2 a12)x2 + (a23 - m2 a13)x3 = b2 - m2b1 (2-5)
a
tetapi dalam hal ini: a 21 − m2 a 11 = a 21 − 21 a 11 = 0 , dimana harga x1 telah dieliminasikan ke
a 11
persamaan kedua. Hasil inilah yang menjadi alasan mengapa dipilih m2. Sekarang bila
didefenisikan:
a’22 = a22 - m2 a12
a’22 = a23 - m2 a13
b’2 = b2 - m2 b1
akibatnya persamaan (2-5) menjadi:
a’22 x2 + a’22 x3 = b’2 (2-6)

88
Kemudian dengan menganti persamaan (2-4b) dengan persamaan (2-6), maka diperoleh solusi
persamaan baru yang terdiri (2-4a), (2-6) dan (2-4c), dimana solusi ini identik dengan solusi
sistem persamaan yang asli.
Selanjutnya dengan cara yang sama, didefenisikan faktor pengali untuk persaman ketiga
dengan m3 = a31 /a11. Kalikan persamaan (2-4a) dengan m3 dan dikurangkan dengan
persamaan (2-4c), sehingga kembali variabel x1 hilang, sehingga diperoleh:
a’32 x2 + a’33 x3 = b’3 (2-7)
dimana:
a’32 = a32 - m3 a12
a’33 = a33 - m3 a13
b’3 = b3 - m3 b1
Dengan subsitusikan persamaan (2-7) untuk mengganti persamaan (2-4c), sehingga diperoleh
persamaan:
a11 x1 + a12 x2 + a13 x3 = b1 (2-8a)
’ ’ ’
a 22 x2 + a 23 x3 = b 2 (2-8b)
a’32 x2 + a’33 x3 = b’3 (2-8c)
Persamaan ini tepat sama dengan persamaan aslinya, dengan tambahan keuntungan
dimana x1 hanya muncul pada persamaan pertama, dimana dua persamaan berikutnya adalah
dua persamaan dengan variabel (x2 dan x3) yang mana hasilnya dapat disubsitusikan ke dalam
persamaan pertama dan didapatkan x1. Kemudian dilanjutkan dengan eliminir x2 ke salah satu
dari kedua persamaan terakhir. Bila a’22 = 0, kita saling menggantikan kedua persamaan
terakhir. Selanjutnya didefenisikan faktor mengali baru m’3 dengan: m’3 = a’32 /a’22. Kalikan
persamaan (2-8b) dengan m’3 dan dikurangkan dengan (2-8c), sehingga diperoleh hasil:
( '
)
a '32 − m'3 a 22 (
x 2 + a 33
'
)
− m3' a 23
'
x 3 = b3' − m'3 b2' dan a '32 − m'3 a 22
'

dan bila: a ''33 = a '33 − m'3 a '23 dan b3'' = b3' − m3' b2' , maka didapatkan pula harga a ''33 x 3 = b3'' .
Dengan mensubsitusikan persamaan ini ke persamaan (2-8), maka diperoleh persamaan baru
yaitu:
a11 x1 + a12 x2 + a13 x3 = b1 (2-9a)
a’22 x2 + a’23 x3 = b’2 (2-9b)
’’ ’
a 33 x3 = b 3 (2-9c)
Persamaan (2-9) disebut dengan persamaan segitiga.
Dengan didapatkannya persamaan segitiga di atas, maka sistem persamaan ini dapat
diselesaikan secara langsung yang bertitik tolak dari persamaan (2-9c) untuk mendapatkan
harga x3, kemudian mensubsitusikan hasilnya kedalam persamaan (2-9b) maka didapatkan
harga x2, seterusnya dengan mensubsitusikan harga x2 dan x3 ke persamaan (2-9a), maka
diperoleh harga variabel x1. Proses ini disebut subsitusi balik, yang dirumuskan dengan:
b3''
x 3 = '' , x 2 =
(b2' − a 23)
'
x3
dan x1 =
(b1 − a12 x 2 − a13 x 3 )
'
a3 a 22 a11
Dari ilustrasi di atas terlihat bahwa Gauss menyelesaikan sistem persamaan linier
simultan melalui proses mengganti secara beruntun terhadap beberapa variabel yang akan
dicari sampai sistem persamaan menjadi satu persamaan dengan satu variabel yang tidak
diketahui. Persamaan yang menyatakan satu variabel yang tidak diketahui dengan lainnya
disebut persamaan pivotal atau persamaan poros (persamaan, 2-4a, 2-8b, 2-9c). Jika telah
diketahui harga satu variabel, maka variabel yang lainnya dapat diperoleh melalui proses
subsitusi balik dengan menggunakan persamaan pivotal tadi.

89
Didalam penyelesaian sistem persamaan linier secara numerik dengan metoda eliminasi
Gauss, selalu ditentukan terlebih dahulu persamaan pivotal; yaitu persamaan yang
mempunyai koefesien terbesar dari persamaan yang akan dieliminasi. Apabila persamaan
yang akan dieliminasi secara berturut-turut dengan harga x1, x2, maka persamaan pivotal yang
pertama diperoleh berdasarkan kepada harga koefesien x1 mutlak terbesar dari sistem
persamaan tersebut. Persamaan ini dipindahkan posisinya pada susunan baris pertama,
sehingga koefesien yang terbesar berada pada lokasi diagonal a11. Persamaan pivotal kedua
x2 dari hasil susunan persamaan pivotal pertama dipilih dari koefesien x2 mutlak terbesar
pula. Demikianlah seterusnya, sehingga tersusunlah sistem persamaan linier simultan segitiga
Seterusnya kita kembangkan, sistem persamaan linier simultan tiga variabel yang tidak
diketahui dengan persamaan di atas, menjadi n variabel tidak diketahui dengan n persamaan
berikut:
a11 x1 + a12 x2 + ... + a1j xj + ... + a1n xn = b1
a21 x1 + a22 x2 + ... + a2j xj + ... + a2n xn = b2
...................................................................
ai1 x1 + ai2 x2 + ... + aij xj + ... + ain xn = bi (2-10)
..................................................................
an1 x1 + an2 x2 + ... + anj xj + ... + ann xn = bn
Dengan menanggap bahwa persamaan sudah tersusun kembali sehingga a11 ≠ 0, maka
a
didefenisikan n-1 buah faktor pengali mi = i 1 , i = 2 ,3,... n dan kurangkan mi kali persamaan
a 11
pertama dengan persamaan ke-i, maka didapatkan:
a’ij = aij - mi a1j ; i = 2,...,n
b’i = bi - mi b1 ; j = 1,..,n
disini terlihat dengan mudah bahwa a’i1 = 0, jika i = 2,...n, dengan demikian persamaan
transformasinya dapat ditulis menjadi:
a11 x1 + a12 x2 + ... + a1j xj + ... + a1n xn = b1
0 + a`22 x2 + ... + a`2j xj + ... + a`2n xn = b`2
..... ..............................................................
0 + a`i2 x2 + ... + a`ij xj + ... + a`in xn = b`i (2-11)
0 + a`n2 x2 + ... + a`nj xj + ... + a`nn xn = b`n
Kemudian untuk penghematan pemakaian memori komputer beri nama kembali a’ij dan b’i
dengan aij dan bi, pada proses iterasi berikutnya. Perlu ditegaskan disini bahwa sistem
persamaan (2-11) mempunyai solusi yang sama dengan solusi (2-10).
Kemudian prosedur di atas dilanjutkan sampai ke tingkat ke-k, dengan dieliminir xk
a
setelah mendefenisikan faktor pengali: mi = ik , i = k + 1,..., n , dalam hal ini
a kk
aij = aij - mi akj ; i = 2,...,n ; i = k+1,...n.
bi = bi - mi bk ; j = 1,..,n ; j = k,..., n.
indeks k (k= 1.... n-1) merupakan bilangan bulat (integer). Pada titik ke k = n-1, dieliminir xn-
1 ke persamaan terakhir, sehingga diperoleh persamaan segitiga berikut:
a11 x1 + a12 x2 + ... + a1,n-1 xn-1 + ... + a1n xn = b1
a22 x2 + ... + a2,n-1 xn-1 + ... + a2n xn = b2
.........................................................................
an-1,n-1 xn-1 + ... + an-1,nxn = bn-1 (2-12)
ann xn = bn

90
Pada persamaan (2-12) ini terlihat bahwa persamaan terakhir hanya mengandung xn, bila ann ≠
b
0, maka diperoleh: x n = n . Kemudian berdasarkan persamaan (2-12) yang kedua terakhir,
a nn
dimana variabel yang tidak diketahuinya xn-1, dimana jika an-1,n -1 ≠ 0, diperoleh subsitusi
balik yaitu:
b − a n −1,n x n
x n −1 = n − 1 . Secara umum, bila xk+1, xk+2, ...,x1, telah dihitung, maka persamaan
a n −1,n −1
ke-k, dapat secara unik diselesaikan untuk setiap nilai xk, dimana bila akk ≠ 0 dengan
persamaan diperoleh nilai:
n
bk − ∑ a kj x j
j = k +1
xk = . Proses menyelesaikan sistem persamaan (2-12) di atas disebut dengan
a kk
subsitusi balik.
Secara umum algoritma untuk subsitusi balik di atas adalah sebagai berikut:
1. Masukan harga atau buat terlebih dahulu matrik A segitiga atas berukuran n x n. Dengan
ketentuan tidak ada elemen diagonal yang nol.
2. Masukan elemen vektor b.
n
bk − ∑ a kj x j
j = k +1
3. Cari variabel yang tidak dikatehui dengan persamaan: x k =
a kk
4. Ulangi perhitungan di atas mulai dari k = n, n-1, ...1.
Dari proses subsitusi balik di atas terlihat bahwa, sesungguhnya yang ditinjau hanya
nilai-nilai pada j = k+1, k+2,..,n, karena terdapat elemen nol di bawah diagonal, maka tidak
diperlukan perhitungan lebih lanjut. Elemen akk yang digunakan untuk menghitung mik
disebut dengan elemen pivot. Pada tahap akhir menghitung determinan dinyatakan sebagai
n
A = ∏ a ii , sehingga jika ada pivot berharga nol, berarti determinan |A| = 0. Hal ini
i −1
menunjukan bahwa invers [A]-1 tidak ada. Hal ini mengindikasikan bahwa tidak ada solusi
yang unik dari sistem persamaan linier yang dicari. Jika pada proses eleminasi nilai akk
bernilai nol, akan tetapi elemen di bawahnya tidak nol, maka perlu dilakukan modifikasi
susunan baris, dengan pertukaran baris dalam matriks untuk mendapatkan pivot yang bukan
bernilai nol. Proses ini disebut dengan proses pivoting.
Bila suatu pivot bernilai kecil sekali, maka sistem persamaan mempunyai nilai
determinan yang kecil, sistem persamaan persamaan linier simultan ini disebut pada keadaan
"rusak" (ill) (ill conditioned) yang berarti solusi yang akan diperoleh tidak memberikan hasil
yang besar.
Berdasarkan uraian di atas, maka dapat dibuat algoritma penyelesaian sistem persamaan
linier simultan dengan metoda Guauss sebagai berikut:
1. Masukan nilai-nilai elemen matriks [A] dan vektor {b} yang membentuk sistem
persamaan linier simultan.
2. Bentuk matriks [G] yang merupakan gabungan matriks [A] dan vektor {b}.
3. Pertukarkan baris, jika diperlukan untuk membuat nilai a11 mempunyai nilai terbesar dari
seluruh koeffesien pada kolom pertama.

91
4. Bentuk harga nol pada baris kedua dari ujung baris ke-n pada kolom pertama dengan
membagi ai1/a11 dan kalikan dengan kolom pertama dari baris ke-i.
5. Ulangi langkah (3) dan (4) untuk bagian ujung baris ke-(n-1), ambil koefesien terbesar
pada diagonal dengan mempertukarkan baris (yang menjadi perhatian hanya baris ke-j
sampai dengan ke-n) dan kemudian bagi aij/ajj kalikan dengan baris ke-j dari baris ke-i,
sehingga membentuk nol pada semua posisi dari kolom ke-j dibawah diagonal. Pada
akhirnya langkah ini, sistem berada dalam bentuk segitiga bagian atas.
6. Selesaikan untuk xn untuk persamaan ke-n dengan: xn = an,n+1 / ann
7. Terakhir hitung harga variabel xn-1, xn-1, ...,x1 dari ujung persamaan pertama dengan
n
bk − ∑ a kj x j
j = k +1
menggunakan subsitusi balik melalui persamaan: x k = .
a kk

2. METODA ELIMINASI GAUSS-JORDAN


Eleminasi Gauss-Jordan merupakan lanjutan dari penyelesaian sistem persamaan linier
dengan metoda Gauss, dimana pada eliminasi Gauss persamaan dasar diubah menjadi matriks
segitiga kanan atau segitiga kiri dengan men-nol-kan elemen matriks sebelah atas atau
sebelah bawah. Sedangkan eleminasi Gauss-Jordan dilakukan dengan men-nol-kan elemen
disebelah atas dan sebelah bawah diagonal, sehingga terbentuk matriks diagonal. Dengan
demikian bentuk akhir dari matriks gabungan setelah elemininasi adalah:
 A11 0 0 ... 0  x1   B1 
 0 A 0 ... 0 x2  B2 
 22    
 0 0 A33 ... 0 x3  = B3  (2-13)
    
 .. .. .. ... ..  ..
   
..
 0 0 0 ... Ann xn  Bn 
Secara umum teknik men-nol-kan elemen pada posisi atas dan bawah diagonal
a
dilakukan dengan mengalikan mik = ik ,i = k + 1,..., n , kemudian dibagi dengan elemen di
a kk
a
bawah pivotal dan mlik = lk , i = k + 1,..., n , dibagi dengan elemen di atas pivotal, dimana i
a kk
= 1, 2,...,n dan l = k-1,k-2,...,1, sedangkan:
Aij = aij baru = aij - mik akj , j = 1,2,...,n
Bi = bi baru = bi - mik bk, untuk i = k+1, k+2, ..., n dan k = 1,2,...n-1
Alk = alk baru = alk - mlk alk
Apabila elemen diagonal matriks aii ≠ 0, maka pada matriks tersebut dapat dilakukan
normalisasi. Hasil perhitungan langsung didapatkan pada kolom akhir matriks. Bentuk
matriks gabungan setelah setelah dinormalisasi adalah:
1 0 0 ... 0 x1   B1 A11 
0 1 0 ... 0x  B A 
  2   2 22 
0 0 1 ... 0 x3  =  B3 A33  (2-14)
    
.. .. .. ... .. ..   .... 
0 0 0 ... 1xn  Bn Ann 

92
Dari persamaan (2-14) terlihat bahwa nilai xi, sebagai variabel yang dicari nilainya dapat
langsung diperoleh pada nilai paling kanan dari matriks gabungan yang terbentuk. Solusi ini
pada dasarnya sama dengan metoda Gauss biasa, kesalahan pembulatan tetap akan
menyebabkan ketidaktepatan dengan cara sedikit berbeda dari yang terdapat pada perhitungan
sebelumnya.
Sementara skema eliminasi Gauss-Jordan di atas menampakan langkah yang sama
dilakukan dalam prosedur yang standard. Dari perhitungan operasi aritmatika memperlihatkan
bahwa metoda eliminasi Gauss-Jordan memerlukan 50% lebih banyak operasi. Dengan
demikian metoda ini sangat tidak dianjurkan dipergunakan. Kelemahan lain adalah sering
terjadi untuk mendapatkan penyelesaian set persamaan dengan koefesien matriks yang sama
tetapi dengan terdapat perbedaan pada sisi sebelah kanan.
Algoritma untuk menyelesaikan sistem persamaan linier dengan mengunakan metoda
Gauss-Jordan adalah sebagai berikut:
1. Masukan nilai-nilai matriks [A] dan vektor {b} yang membentuk sistem persamaan linier.
2. Bentuk matriks gabungan [G] dengan cara mengandengkan matriks [A] dan {b}
3. Lakukan eleminasi untuk men-nol-kan bagian segitiga bawah dan segitiga atas matriks.
4. Kemudian lakukan normalisasi sehingga semua elemen diagonal matriks sama dengan 1
(satu)
5. Uji validitas progran untuk meningkat proses belajar,
6. Tuliskan keluaran akhir program.
3. Perbaikan Solusi Metoda Eliminasi.
Seperti yang telah dijelaskan di atas bahwa dalam menyelesaikan sistem persamaan
linier dengan metoda eleminasi kita tidak akan terlepas dari proses pembulatan, apakah itu
karena melakukan perpindahan baris ataupun tidak, kesalahan pembulatan tetap berpengaruh
terhadap hasil yang dicapai. Untuk perlu dilakukan perbaikan, setelah solusi persamaan
didapatkan, agar didapatkan solusi yang cukup masuk akal bila sistem yang mengalami
kondisi sakit "ill-conditioned".
Untuk mempermudah membahas tentang persoalan di atas, ambil x10 , x 20 , x 30 ,..., x n0 yang
merupakan salah satu penyelesaian pendekatan dari sistem persamaan (2-30) yang didapatkan
dengan metoda eliminasi. Bila penyelesaian ini disubsitusikan ke sisi kiri persamaan (2-30)
maka diperoleh:
a11 x1( 0 ) + a12 x 2( 0 ) + ...+ a1n x n( 0 ) = b1( 0 ) 

a 21 x1( 0 ) + a 22 x 2( 0 ) + ...+ a 2 n x n( 0 ) = b2( 0 ) 
 (2-15)
....................................................
a n1 x1( 0 ) + a n 2 x 2( 0 ) + ...+ a nn x n( 0 ) = bn( 0 ) 
Bila bi( 0 ) cukup besar perbedaannya dengan bi, berarti bahwa x i( 0 ) bukan merupakan
pendekatan penyelesaian (2-10) yang baik. Disisi lain meskipun bi( 0 ) dan bi hampir sama,
tetapi x i( 0 ) dapat tetap bukan merupakan pendekatan penyelesaian yang baik.
Jika masing-masing suku persamaan (2-15) dikurangkan dengan suku persamaan (2-10)
yang bersuaian dan jika ε (i 0 ) = x i − x i( 0 ) dan β (i 0 ) = bi − bi( 0 ) ; i = 1,...,n, maka diperoleh
persamaan:

93
a11ε 1( 0 ) + a12 ε (20 ) + ...+ a1n ε (n0 ) = β 1( 0 ) 

a 21ε 1( 0 ) + a 22 ε (20 ) + ...+ a 2 n ε (n0 ) = β (20 ) 
 (2-16
....................................................
a n1ε 1( 0 ) + a n 2 ε 2( 0 ) + ...+ a nn ε (n0 ) = β (n0 ) 
dimana β (i 0 ) siap untuk dihitung, sehingga ε (i 0 ) dapat dihitung dari persamaan (2-16) dengan
menggunakan metoda eliminasi Gauss. Pendekatan baru dari penyelesaian sistem persamaan
(2-10) adalah x i( i ) = x i( 0 ) − ε i( 0 ) , dimana i = 1,...,n. Dengan demikian x i( 1 ) dapat
disubsitusikan pada sisi kiri persamaan (2-10) dan hasil pada sisi kanan disebut dengan bi( 1 ) .
Koreksi xi dapat diperoleh dengan menyelesaikan persamaan:
a11ε 1( 1 ) + a12 ε 1( 1 ) + ...+ a1n ε 1( 1 ) = β 1( 0 ) 

a 21ε 1( 1 ) + a 22 ε 1( 1 ) + ...+ a 2 n ε 1( 1 ) = β 2( 0 ) 
 (2-17)
....................................................
a n1ε 1( 1 ) + a n 2 ε 1( 1 ) + ...+ a nn ε 1( 1 ) = β (n0 ) 
dimana: β (i 1 ) = bi − bi( 1 ) . Pendekatan barunya adalah x i( 2 ) = x i( 1 ) + ε (i 0 ) ; i = 1,...,n. Proses ini
dapat dilanjutkan sampai εi dengan proses iterasi. Proses dapat berhenti bila βi juga mencapai
nilai yang kecil pula.

3. Metoda Matriks Invers


Salah satu menggunaan metoda eliminasi Gauss yang paling sederhana adalah untuk
menghitung matriks inversi dari suatu matriks. Umpamakan kita mempunyai sistem
persamaan simultan dengan notasi umum:
[A]{x} = {b} (2-18)
dimana [A] dapat matriks bujursangkar dengan ketentuan elemen-elemen diagonal sudah
merupakan nilai pivotal. Dengan memperkalikan sistem persamaan ini dengan sebuah
matriks [G], maka diperoleh:
[G][A]{x} = [G]{b} (2-19)
dengan memilih [G] = [A] , yaitu invers matriks [A], berarti [G][A] = [A]-1[A] = [I]
-1

merupakan matriks identitas. Penyelesaian [A]{x} = {b} dengan penentuan matriks invers ini
dapat ditulis dalam bentuk:
{x} = [A]-1{b} (2-20)
Dengan menggunakan pendekatan eliminasi Gauss-Jordan, dapat dengan mudah didapatkan
matriks identitas [I]. Setelah dilakukan normalisasi akan didapatkan:
[G][I] = [A]-1 (2-21)
-1
Untuk memperoleh matriks invers [A] , elemen matriks [A] digandengkan dengan elemen
matriks identitas [I] dalam bentuk lirik seperti berikut:
a11 a12 a13 ... a1n 1 0 0 .. 0
a a 22 a 23 ... a 2 n 0 1 0 .. 0
 21 
a 31 a 32 a 33 ... a 3n 0 0 1 .. 0 (2-22
 
 ... .. .. .. .. .. .. .. .. ..
a n1 a n 2 a n 3 ... a nn 0 0 0 .. 1
Dengan prosedur eliminasi Gauss-Jordan, elemen matriks ini dirubah menjadi:

94
−1 −1 −1
1 0 0 ... 0 a11 a12 a13 .. a1−n1 
 −1 −1 −1 
0 1 0 ... 0 a 21 a 22 a 23 .. a 2−n1 
0 −1
0 1 ... 0 a 31 −1
a 32 −1
a 33 .. a 3−n1 
 
... .. .. .. .. .. .. .. .. .. 
0 0 0 ... 1 a n−11 a n−21 a n−31 −1 
.. a nn
 
dimana dalam hal ini elemen matriks
−1 −1 −1
a11 a12 a13 ... a1−n1 
 −1 −1 −1 −1 
a 21 a 22 a 23 ... a 2 n 
a 31
−1 −1
a 32 −1
a 33 ... a 3−n1  adalah elemen matriks invers [A]-1.
 
 .. ... ... ... ... 
a −1 a −1 a −1 ... a −1 
 n1 n2 n3 nn 
Invers suatu matriks tidak saja dihitung dengan penggunaan metoda eleminasi Gauss-
Jordan, tetapi juga dapat dilakukan dengan metoda eliminasi Gauss. Hal ini dapat dilakukan
dengan suatu pengertian bahwa penambahan suatu matriks ke matriks berorde-N pada
eliminasi Gauss-Jordan dapat dipisahkan kedalam N set sistem persamaan linier dengan
koefesien matriks [A]. Dimana set pertama mempunyai suku yang tidak homogen sama
dengan kolom pertama matriks identitas. Set kedua mempunyai suku yang tidak homogen
sama dengan kolom kedua matriks identitas, dan seterusnya. Penyelesaian set pertama
menjadi kolom pertama dari matriks invers, dan penyelesaian set kedua adalah kolom kedua.
Dalam prakteknya perhitungan ini tidak dilakukan secara terpisah, tetapi dihitung secara
simultan, karena prosedur perhitungan untuk semua set adalah identik.
Algoritma penyelesaian perhitungan invers matriks dengan eleminasi Gauss-Jordan
dengan proses pivoting adalah sebagai berikut:
1. Masukan nilai-nilai koefesien sistem persamaan linier (matriks [A])
2. Bentuk matriks gabungan [G] yang merupakan gabungan matriks [A] dengan matriks [I],
[I] adalah matriks identitas.
3. Lakukan eliminasi untuk me-nol-kan segitiga bagian bawah dan segitiga bagian atas.
Untuk setiap langkah eliminasi terlebih dilakukan proses pivoting untuk mencari
persamaan pivot.
4. Lakukan normalisasi sehingga semua elemen diagonal matriks sama dengan 1 (satu)
5. Tuliskan hasil perhitungan dan akhir program.

95
IV. TUGAS
A. Dirumah (sebelum praktikum)
1. Buatlah sistem persamaan linear dari rangkaian berikut ini :
1 2 3
V1 = 200 Volt

10 Ω 5 Ω
5Ω 10 Ω
15 Ω 20 Ω
V6 = 0 Volt
4 5 6

Tentukanlah :
a. Kuat arus yang melalui masing-masing hambatan
b. Beda tegangan antara titik 1 dan 2, titik 4 dan 5, titik 2 dan 5, titik 1 dan 4

2. Buatlah persamaan linear berikut ini :


Tiga buah balok masing-masing massanya 100 kg, 50 kg, dan 20 kg yang berada diatas
suatu bidang miring dengan sudut kemiringan 450. Balok 50 kg dihubungkan dengan tali
yang massanya diabaikan pada ke dua balok lainnya seperti pada gambar. Bila selama ke
tiga balok meluncur koefisien gesekan antara balok 100 kg dengan bidang miring adalah
0,25 dan antara balok 50 kg dan 20 kg dengan bidang miring adalah 0,375.

20 kg

50 kg

100 kg
450

Tentukanlah :
a. Tegangan pada masing-masing tali
b. Percepatan masing-masing balok
3. Buatlah diagram alir untuk menyelesaikan soal no.1 di atas
4. Buatlah diagram alir untuk menyelesaikan soal no.2 di atas
5. Berdasarkan diagram alir pada tugas no.3 di atas, buatlah program menyelesaikan kedua
sistem persamaan linier di atas dengan metoda eliminasi Gauss, atau eleminasi Gauss-
Jordan dan metoda matriks invers.
6. Berdasarkan diagram alir pada tugas no.4 di atas, buatlah program menyelesaikan kedua
sistem persamaan linier di atas dengan metoda eliminasi Gauss, atau eleminasi Gauss-
Jordan dan metoda matriks invers.
7. Kumpulkan tugas ini sebelum praktikum dilaksanakan, tanpa tugas ini sdr. Tidak
dibenarkan mengikuti prakatikum untuk hari itu.

96
B. Sewaktu Praktikum berjalan
1. Editlah program No. 4 di atas, bila selesai RUN-lah proram tersebut.
2. Cheklah hasil program sdr. dengan referensi yang ada dan perlihatkan hasilnya kepada
dosen pembimbing atau asisten sdr.
3. Untuk soal no.5 simpanlah pragramnya dengan nama FISKOM12A
4. Modifikasi program di atas untuk menghitung tugas No.6. Simpan nama FISKOM12B
5. Bandingkan hasil yang diperoleh dengan menggunakan metoda Eliminasi Gauss dengan
mertoda matriks invers.
Catatan: Untuk membatu sdr. Meyelesaikan permasalahan di atas gunakan diagram
alir dalam NUMERIK UNTUK FISIKA Karangan R, Soegeng. Penerbit Andi Offeset
Yogyakarta.

97
FLOW CHART INVERS MATRIK

INVERS 1 2 3 4 5
B, X, Z

Gauss
b, b, x, d

i=1, b
(i+j)/2=0 B

j=1, b
t= -1 t=1

n=0

Z(J,I) = T*DY/D
k=1, b

i<>k B

Tulis
Z(J,I)
m=m+1
n=0

l= 1, b

S
END
j<>l B

S n=n+1
y(m,n)=x(k,l)

2 3 4 5
1

98
FLOW CHART DETERMINAN
6
1 2 3 4 5
BACA
MATRIK
X(I,J) ko=x(k,j)
x(k,j)=x(n,j)
x(n,j)=ko

t=1

l= 2, b ko=x(m,k)/x(k,k)

m = l, b n=k, kl

k=l-1 x(m,n)=x(m,n) - ko * x(k,n)

x(k,k)=0 B

d=t
ko=0
n=k-1

m=1, b

n=n+1
ko=x(n,k) B d=d*x(m,m)

ko<>0; n<=b
TULIS D
S

ko<>0 B

END
S t=-t

x(k,k)=1
j=k, kl
t=0

4 5 6
1 2 3

99
PERSAMAAN
LINEAR
begin

α
BACA
b
x(b,b+1) =
x(b,b+1) / x(b, b)

i=1, b
i = b-1 downto
1

z =x(i, b+1)
j=1, b+1

Tulis k = i+1 to b
x(i,j)

z=z-x(i,k)*x(k,b+1)
x(i,b+1)=z/x(i, i)

Determinan
dimulai t=1 dan
seterusnya.

i=1 to b

α
Tulis
x(i, b+1)

END

100

Anda mungkin juga menyukai