Anda di halaman 1dari 59

DRAFT

MODUL PRAKTIKUM FISIKA KOMPUTASI


dengan Bahasa Pemrograman Pascal dan Python

Oleh:
Ubaidillah

JURUSAN FISIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN
ALAM
UNIVERSITAS BRAWIJAYA
MALANG
2010

MODUL PRAKTIKUM FISIKA KOM PUTASI

Konten
PRACTICE I
PENDAHULUAN ......................................................................... 5
1.1. Introduction.................................................................................................... 5
1.2. Perbedaan Kalkulasi Analitis dan Numerik................................................... 5
1.3. Kode Program Komputer............................................................................... 5
1.4. Requirement................................................................................................... 6
1.5. Perintah-perintah Dasar ................................................................................. 6
1.6. Compiling Kode Program ............................................................................ 13
5.1.1. Turbo Pascal for Windows (TPW) 1.5 ............................................ 13
5.1.2. Python 2.7x ...................................................................................... 15
5.1.3. MATLAB 7.0.1 ............................................................................... 17
1.7. Plotting Data ................................................................................................ 17
1.6.1. Plotting GNUPLOT ......................................................................... 18
1.6.2. Plotting Microsoft Excel .................................................................. 19
PRACTICE II
ERROR PENDEKATAN ............................................................ 23
PRACTICE III AKAR-AKAR POLINOMIAL ................................................... 29
PRACTICE IV SOLUSI MATRIKS PERSAMAAN LINIER ............................ 35
PRACTICE V
GENERATE OF FUNCTION .................................................... 41
PRACTICE VI DIFERENSIASI NUMERIK ...................................................... 47
PRACTICE VII INTEGRASI NUMERIK ............................................................ 52
PRACTICE VIII INTERPOLASI ........................................................................... 56

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

MODUL PRAKTIKUM FISIKA KOM PUTASI

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

MODUL PRAKTIKUM FISIKA KOM PUTASI

PRACTICE I
PENDAHULUAN
1.1. Introduction
Fisika komputasi pada dasarnya adalah menyelesaikan problem-problem fisika
yang tidak dapat diselesaikan secara analitis dengan melakukan pendekatan numerik
berdasarkan teori yang sudah ada. Pendekatan numerik tersebut umumnya dilakukan
dengan bantuan komputer dan menggunakan bahasa pemrograman tertentu, seperti
Pascal, Python, C, C++, Fortran dan lain sebagainya. Hal ini dikarenakan tidak
semua problem matematik dapat diselesaikan oleh komputer secara langsung.
Problem matematik yang rumit, perlu diubah terlebih dahulu ke bentuk operasi
aritmatika ke penambahan, pengurangan, perkalian dan pembagian sederhana agar
dapat dikalkulasi oleh komputer. Pengubahan/penurunan tersebut dikenal dengan
sebutan pendekatan numerik, di mana hasil perhitungannya identik dengan adanya
nilai error.
Problem matematik yang memerlukan penurunan dengan metode numerik oleh
komputer antara lain: problem diferensiasi, integrasi, pencarian akar persamaan
polinomial orde tinggi, eigenvalue matrik, boundary value dan lain sebagainya.
1.2. Perbedaan Kalkulasi Analitis dan Nume rik
Salah satu problem matematik yang oleh komputer diselesaikan dengan
kalkulasi numerik adalah problem diferensiasi. Dimisalkan terdapat suatu problem
fisika dengan persamaan matematis y(x)=2x2 -3x+1, yang secara analitis untuk x=5,
turunan pertamanya dapat diketahui secara secara langsung dengan penurunan
y(x)=dy(x)/dx=4x-3, sehingga nilai diferensiai orde satu terhadap x adalah:

Sedangkan untuk perhitungan secara numerik, problem diferensiasi dapat diturunkan


dengan metode numerik beda maju (forward different) yang bentuk persamaannya:
(1)
dengan mengambil x=0.1, didapatkan

=17.2
Dari kedua hasil tersebut dapat dibandingkan perbedaan penyelesaian antara
numerik dan analitis mempunyai selisih sebesar 0.2, di mana selisih 0.2 ini nantinya
akan dikenal sebagai nilai error.
1.3. Kode Program Komputer
Salah satu teknik untuk melakukan komputasi numerik adalah dengan
mengimplementasikannya ke bentuk kode program bahasa pemrograman komputer
tertentu. Dalam praktikum fisika komputasi ini disarankan untuk menggunakan
bahasa pemrograman Pascal, Python dan Matlab. Dengan alasannya, karena Pascal
merupakan bahasa pemrograman tingkat tinggi yang sederhana dan mudah untuk
JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

MODUL PRAKTIKUM FISIKA KOM PUTASI

dipahami. Sedangkan Python termasuk dalam bahasa pemrograman yang sering


digunakan untuk keperluan Scientific Programming selain Matlab, yang mana
praktikan setelah melakukan paraktikum ini diharapkan dapat menguasai setidaknya
satu atau ketiga dasar-dasar macam bahasa pemrograman tersebut sebagai bekal
untuk menyelesaikan problem fisika- matematik yang memerlukan penggunaan
pendekatan numerik.
1.4. Requirement
Agar semua Kode program yang dituliskan dalam Modul ini dapat berjalan
dengan baik, praktikum ini, menggunakan compiler-compiler yang antara lain:
1. Turbo Pascal for Windows (TPW)
2. Python 2.7
3. Matlab 7.0.1
1.5. Perintah-perintah Dasar
Perintah-perintah dasar dalam Pascal, Python dan Matlab yang akan sering
digunakan dalam praktikum ini antara lain:
a. Write atau print
Perintah ini digunakan untuk menampilkan huruf atau nilai variabel hasil
kalkulasi dari running kode program. Contoh source code-nya:
Kode program 1. Hello world

Pascal
program hello;
uses wincrt;
begin
write('Hello World!');
end.

Python
print Hello World!

Matlab
disp(Hello World!)

Compiler yang digunakan dalam praktikum ini disarankan untuk menggunakan


software Turbo Pascal for Windows (TPW) sebagai compiler bahasa
pemrograman Pascal, dan Python sebagai compiler bahasa Python. Sehingga
dalam source code di atas, digunakan uses wincrt yang berarti source code
dijalankan menggunakan TPW. Berbeda dengan Pascal yang harus mengikuti
prosedur dalam penulisan program, untuk menampilkan kata Hello World!
Python menggunakan perintah print saja. Sedangkan untuk Matlab, kata
Hello World dapat dituliskan dengan perintah disp.

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

MODUL PRAKTIKUM FISIKA KOM PUTASI

b. Read atau Input


Perintah ini digunakan untuk memasukkan suatu nilai atau karakter ke
variabel dalam kode program, Contoh source code-nya seperti:
Kode program 2. Input

Pascal
program input;
uses wincrt;
var i:integer;
r:real;
begin
write('Masukkan bilangan bulat : ');
readln(i);
write('Masukkan bilangan asli/desimal: ');
readln(r);
writeln('Hasil');
writeln('Bilangan Bulat: ',i);
writeln('Bilangan Asli: ',r:5:5);
write('Press any key.. ');readln;
end.

Python
i=input("Masukkan bilangan bulat : ")

r=input("Masukkan bilangan asli/desimal : ")


print "Hasil: "
print "Bilangan bulat : ",i
print "Bilangan asli : ",r
input("Press any key..")

Matlab
i=input('Masukkan bilangan bulat : ');
disp('Hasil: ');
disp(sprintf('Bilangan Bulat : %d',i));
disp(sprintf('Bilangan Asli : %.7f',i));
input('Press any key..');

Dalam praktikum ini, kebanyakan data yang digunakan sebagai variabel


input adalah berupa angka, di mana input angka di atas dapat berupa bilangan
bulat (integer) atau asli (real). Kode program Pascal di atas menunjukkan
pemberian type data yang berbeda terhadap variabel yang digunakan sebagai
variabel input, dan begitu juga cara menampilkannya. Sedangkan untuk Python,
teknik untuk membedakan antara bilangan bulat dan asli pada angka yang akan
dimasukkan, caranya adalah dengan masukkannya dalam bentuk angka desimal.
Misalnya jika angka 2 adalah sebagai input bilangan asli, maka ketika di- inputkan ditulis dengan 2.0 yang secara otomatis Python akan menginisialisasikan
angka 2 tersebut sebagai bilangan asli. Satu kelebihan Matlab, Matlab tidak
memerlukan inisialisasi variabel seperti di Pascal dan Python d i atas. Misalnya
ketika bilangan bulat diperlukan menjadi bilangan asli secara otomatis bilangan
tersebut diinisialisasi menjadi bilangan asli oleh Matlab. Kode program input
pada baris akhir diperlukan agar aplikasi tidak langsung tertutup saat program
telah selesai menjalankan perintah-perintah utama, dan penempatan perintah
perintah input ini bersifat optional.

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

MODUL PRAKTIKUM FISIKA KOM PUTASI

c. Looping for atau while


Pendekatan numerik sering kali melakukan perulangan dalam
perhitungannya. Perintah perulangan yang dapat digunakan adalah perintah for
dan while. Perintah for digunakan jika tahap perulangannya berupa bilangan
bulat. Sedangkan perintah while digunakan jika tahap perulangannya berupa
bilangan asli. Berikut contoh penggunaan perintah for dan while untuk
menghitung xy dan mengetahui angka terkecil yang dapat dihitung oleh prosesor.
Perintah for:
Kode program 3. Perpangkatan

Pascal
program xpangkaty;
uses wincrt;
var x,y,i,hasil:integer;
begin
write('x = ');readln(x);
write('y = ');readln(y);
hasil:=1;
for i:=1 to y do hasil:=hasil*x;
write('x^y = ',hasil);
end.

Python
x=input('x = ')
y=input('y = ')
hasil=1
for i in range(y):
hasil*=x
print "x^y = ",hasil

Matlab
x=input('x = ');
y=input('y = ');
hasil=1;
for i=1:y
hasil=hasil*x;
end
disp(sprintf('Hasil = %d',hasil));

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

MODUL PRAKTIKUM FISIKA KOM PUTASI

Perintah while:
Kode program 4. Presisi mesin

Pascal
program presisimesin;
uses wincrt;
var i:integer;
angka,hasil:real;
begin
i:=1;
angka:=2;
hasil:=0;
while hasil<>1 do
begin
angka:=angka/9;
hasil:=1+angka;
writeln(i:3,hasil:20:20);
i:=i+1;
end;
end.

Python
i=1
angka=2.0
hasil=0
while hasil!=1 :
angka/=9
hasil=1+angka
print i,hasil
i+=1

Matlab
i=1;
angka=2;
hasil=0;
while (hasil~=1)
angka=angka/9;
hasil=1+angka;
disp(sprintf('%3d
i=i+1;
end;

%.16f',i,hasil));

Kondisi <> dalam contoh perulangan while di atas, berfungsi menunjukkan


keadaan bahwa selama hasil nilainya tidak sama dengan 1, maka perhitungan
nilai angka akan dilanjutkan ke nilai berikutnya. Selama ditambahkan dengan
nilai angka, nilai hasil tidak sama dengan 1, p rosesor komputer masih dapat
membedakan nilai tersebut sebagai angka yang berbeda dengan selisih yang kecil.
Sedangkan ketika nilainya telah dianggap sama, nilai angka sebelum
perulangan berakhir, nilai angka tersebut merupakan nilai terkecil yang dapat
dihitung oleh prosesor. Kondisi <> di Python dituliskan dengan != dan di
Matlab dengan ~=.
d. Kondisi if
Ekspresi kondisi terdiri dari berbagai macam. Untuk bahasa pemrograman
yang berbeda, berbeda pula operator atematik yang digunakan meskipun
mempunyai fungsi yang sama. Perintah yang memerlukan kondisi ini adalah
perintah if. Berikut contoh penggunaan perintah tersebut, yang digunakan untuk
mencari akar dari fungsi f(x)=x2 -4*x-5.
JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

MODUL PRAKTIKUM FISIKA KOM PUTASI

Kode program 5. Akar fungsi

Pascal
program akarfungsi;
uses wincrt;
var x,x1,xp,y,p:real;
i,n:integer;
begin
xp:=0;x1:=15;n:=20;
p:=x*x-4*x-5;
writeln('x':5,' ','y':10);
for i:=0 to n do
begin
x:=0.5*(xp+x1);
y:=x*x-4*x-5;
writeln(x:8:7,' ',y:8:7);
if (p*y)>0 then xp:=x;
if (p*y)<0 then x1:=x;
if p=y then i:=n;
end;
writeln;
writeln('x mendekati ',x:6:5);
end.

Python
xp=0
x1=15
n=20
p=xp*xp-4*xp-5
print "{0:10} {1:10}".format("x","y")
for i in range(n):
x=0.5*(xp+x1)
y=x*x-4*x-5
print "{0:f} {1:f}".format(x,y)
if (p*y)>0:
xp=x
if (p*y)<0:
x1=x
if (p==y):
break
print "x mendekati ",x

Matlab
xp=0;
x1=15;n=50;
p=xp*xp-4*xp-5;
disp(sprintf('x
y'));
for i=0:n
x=0.5*(xp+x1);
y=x*x-4*x-5;
disp(sprintf('%.10f
%.10f',x,y));
if (p*y)>0
xp=x;
end
if (p*y)<0
x1=x;
end
if (p==y)
break;
end
end
disp(sprintf('x mendekati %.10f',x));

10

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

MODUL PRAKTIKUM FISIKA KOM PUTASI

Metode numerik yang digunakan untuk mendekati nilai akar parsamaan


y=x -4x-5 di atas adalah metode setengah selisih. Metode ini akan dijelaskan
pada bab selanjutnya dan merupakan bagian pokok bahasan pencarian akar
persamaan polinomial. Perintah if di atas digunakan untuk mengetahui apakah
kedua nilai p dan y berbeda tanda, apakah keduanya positif atau negatif. Sama
seperti contoh program sebelumnya, Python memiliki kode program yang lebih
sederhana dibandingkan Pascal. Bentuk "{0:f} {1:f}".format(x,y) digunakan untuk
2

menampilkan nilai x dan y sebagai jenis bilangan float. Sedangkan perintah break,
perintah yang digunakan untuk menghentikan perulangan perintah for. Sama dengan
Python, namun kode program Matlab sedikit lebih panjang.

e. Membuat fungsi
Seringkali jika dilakukan perlakuan yang sama terhadap suatu data, lebih
mudah untuk meringkasnya ke perintah-perintah yang diperlukan ke dalam suatu
fungsi. Contoh penggunaan fungsi tersebut adalah:
Kode program 6. Penggunaan fungsi

Pascal
program fungsi;
uses wincrt;
var bola1,bola2:real;
function luasbola(r:real):real;
begin
luasbola:=(22/7)*r;
end;
begin
bola1:=luasbola(5);
bola2:=luasbola(0.5);
writeln('Luas bola1 = ',bola1:8:7,' sat');
writeln('Luas bola2 = ',bola2:8:7,' sat');
end.

Python
def luasbola(r):
return ((22/7)*r)
bola1=luasbola(5)
bola2=luasbola(0.5)
print "Luas bola1 = {:f}".format(bola1)
print "Luas bola2 = {:f}".format(bola2)

Matlab
luasbola=@(r)((22/7)*r);
bola1=luasbola(5);
bola2=luasbola(0.5);
disp(sprintf('Luas bola1 = %.7f',bola1));
disp(sprintf('Luas bola2 = %.7f',bola2));

Namun di Matlab, jika diperlukan lebih dari satu command yang terdapat
dalam fungsi, aturan pendeklarasiannya, fungsi tersebut harus disimpan dalam
file lain yang berada satu direktori dan disimpan dengan nama file yang sama
dengan nama fungsi itu sendiri. Contoh:

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

11

MODUL PRAKTIKUM FISIKA KOM PUTASI

Matlab
%file luasbola.m
function output=luasbola(r)
output=((22/7)*r);
end
%file main.m
bola1=luasbola(5);
bola2=luasbola(0.5);
disp(sprintf('Luas bola1 = %.7f',bola1));
disp(sprintf('Luas bola2 = %.7f',bola2));

f. Output to File
Untuk memudahkan dalam menganalisa hasil program, data hasil
perhitungan biasanya disimpan dalam sebuah file. Selain itu, metode
penyimpanan ini dapat digunakan jika diperlukan untuk memplot hasil
perhitungan ke dalam bentuk grafik, di mana kompiler yang digunakan tidak
memiliki fungsi plotter-nya. Contoh kode program untuk penyimpanan data ini
adalah:
Kode program 7. Output to file

Pascal
program kefile;
uses wincrt;
var
x,y:real;
fp:text;
begin
assign(fp,'data.txt');
rewrite(fp);
x:=0;
while x<50 do
begin
y:=x*x-4*x-5;
writeln(fp,x:10:7,'
x:=x+0.25;
end;
close(fp);
write('Done..')
end.

',y:10:7);

Python
fp=open("data.txt","w");
x=0
while x<50:
y=x*x-4*x-5;
fp.write("{:f} {:f}\n".format(x,y))
x+=0.25
fp.close()
print "Done.."

12

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

MODUL PRAKTIKUM FISIKA KOM PUTASI

Matlab
fp=fopen('data.txt','w');
x=0;
while (x<50)
y=x*x-4*x-5;
fprintf(fp,'%f %f\n',x,y);
x=x+0.25;
end
fclose(fp);
disp('Done..');

Kode program di atas digunakan untuk menghitung persamaan


dengan x mulai sama dengan 0 sampai <50 dengan x=0.25. Hasil
perhitungannya disimpan dalam bentuk file data.txt seperti diilustrasikan
Gambar 1.1.

Gambar 1.1 File data hasil perhitungan

1.6. Compiling Kode Program


5.1.1. Turbo Pascal for Windows (TPW) 1.5
Tampilan aplikasi compiler TPW adalah sebagaimana Gambar 1.1. Untuk
menulis kode program, pilih menu FileNew. Maka akan ditampilkan sub form
baru yang digunakan untuk menuliskan kode program. Gambar 1.2 juga
menunjukkan contoh kode program Pascal Kode program 7 digunakan sebagai kode
program yang akan di-compile.

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

13

MODUL PRAKTIKUM FISIKA KOM PUTASI

Gambar 1.2 Tamp ilan Turbo Pascal for Windows (TPW )

Untuk meng-compile- nya, pilih menu CompileCompile. Di sini kode


program akan dicek apakah terdapat kesalahan dalam penulisan. Jika succesfully
complete berarti tidak ada kesalahan dalam penulisan kode program, namun keadaan
ini belum tentu menunjukkan tidak adanya error ketika program dijalankan.
Sedangkan untuk menjalankannya atau melihat hasil dari program yang kita buat,
pilih menu RunRun, maka program akan berjalan sebagaimana ilustrasi Gambar
1.3. Jika ketika running program tidak terdapat error, dapat dipastikan aplikasi
program yang kita buat dapat berjalan dengan baik.

14

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

MODUL PRAKTIKUM FISIKA KOM PUTASI

Gambar 1.3 Running program output ke file Pascal

5.1.2. Python 2.7x


Cara meng-compile program Python, untuk teknik seperti yang dilakukan pada
kode program Pascal di atas adalah sebagaimana berikut: Buka aplikasi Python shell,
kemudian pilih menu New Window, selanjutnya akan terbuka editor file untuk
membuat module yang baru. Dengan module ini memungkinkan agar kode program
yang dibuat dapat disimpan dan tidak perlu mengulang kembali dari awal seperti jika
menggunakan Python Shell. Langkah- langkah tersebut diilustrasikan sebagaimana
Gambar 1.4, yang mana menggunakan Kode program 7 Python sebagai kode
program yang akan di compile.

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

15

MODUL PRAKTIKUM FISIKA KOM PUTASI

Gambar 1.4 Tamp ilan editor Python shell

Untuk menjalankannya, kode program harus disimpan dahulu dengan memilih


menu save dan ditentukan sembarang nama pada module tersebut dengan ketentuan
ber-extensi .py. Setelah itu pilih menu Run-Run Module, maka program akan
dijalankan yang diilustrasikan sebagaimana Gambar 1.5.

Gambar 1.5 Tamp ilan editor Python shell

16

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

MODUL PRAKTIKUM FISIKA KOM PUTASI

5.1.3. MATLAB 7.0.1


Gambar 1.6 merupakan contoh tampilan interface Matlab 7.0.1 yang memiliki
Command Windows yang fungsinya hampir sama dengan Phython Shell pada
compiler Python 2.7x. Agar dalam penulisan kode program lebih mudah untuk
dimodifikasi, kode program Matlab dapat ditulis terlebih dahulu ke file yang disebut
dengan M-Files. Cara membuat M-File adalah dengan memilih menu
FileNewM-File dan akan muncul kotak editor yang merupakan tempat yang
digunakan untuk menulis kode program Matlab. Gambar 1.6 juga mengilustrasikan
Kode Program 7 sebagai kode program yang akan di-compile. Untuk
menjalankannya, klik kanan file yang berisi kode program yang akan dijalankan,
pilih Run, dan hasil compilasinya akan ditampilkan di Command Windows.

Gambar 1.6 Tamp ilan user interface Mat lab 7.0.1

1.7. Plotting Data


Plotting data dapat dilakukan dengan berbagai cara, salah satunya dengan
menggunakan fungsi yang telah disediakan dalam library compiler itu sendiri, baik
2D maupun 3D. Matlab telah memiliki fungsi plotter sendiri, sedangkan pada
umumnya compiler Pascal dan Python tidak memilikinya. Di samping itu, plotting
data dapat juga dengan menggunakan aplikasi plotter lain, seperti aplikasi khusus
pembuat plot, GNUPLOT. Karena dalam praktikum ini compiler Pascal yang
digunakan tidak memiliki library untuk plotting sendiri, di sini akan ditunjukkan 2
teknik manual plotting grafik dengan aplikasi GNUPLOT dan Microsoft Excel, yang

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

17

MODUL PRAKTIKUM FISIKA KOM PUTASI

mana dari kedua teknik tersebut diharapkan praktikan dapat mengetahui dasar-dasar
dalam membuat grafik.
1.6.1. Plotting GNUPLOT
GNUPLOT merupakan aplikasi program interface yang digunakan untuk
membuat grafik dari suatu urutan data. Tampilan aplikasi ini seperti ditunjukkan
pada Gambar 1.7, yang cara menggunakannya hampir sama dengan Python shell.
Contoh penggunaan GNUPLOT untuk membuat grafik 2D dari data hasil running
program adalah sebagaimana berikut: Jika data hasil perhitungan Gambar 1.1
diplotkan dengan GNUPLOT, perintah yang digunakan adalah:

Alamat e:\data\master\lawas\tpw\data.txt merupakan contoh alamat dari file


data.txt yang dapat dilihat pada Address bar windows sebagaimana ilustrasi
Gambar 1.8, di mana plot grafik dari file tersebut ditunjukkan pada Gambar 1.9.

Gambar 1.7 Aplikasi GNUPLOT

Gambar 1.8 Contoh alamat file data.t xt

18

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

MODUL PRAKTIKUM FISIKA KOM PUTASI

Gambar 1.9 Tamp ilan hasil p lotting file data.t xt

1.6.2. Plotting Microsoft Excel


Untuk plotting file data.txt dengan Microsoft Excel, caranya adalah seperti
membuat grafik pada data Excel biasanya. Perbedaannya adalah ketika membuka
file data.txt terdapat beberapa langkah sebagaimana diuraikan berikut:
Buka aplikasi Microsoft Excel (di sini digunakan Ms. Excel 2007)
Pilih menu Open, cari folder yang berisi file data.txt dan seleksi file dengan
memilih File Type: Text File. (Gambar 1.10)

Gambar 1.10 Kotak dialog open data.txt

Klik open maka akan muncul kotak dialog Text Import Wizard seperti
ditunjukkan Gambar 1.11.

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

19

MODUL PRAKTIKUM FISIKA KOM PUTASI

Gambar 1.11 Kotak dialog Text Import Wizard


file data.txt step 1

Pilih radio option: Fixed width lalu tekan Next, dan pastikan pada Data
Preview data telah terbagi menjadi dua

Gambar 1.12 Kotak dialog Text Import Wizard


file data.txt step 2

Jika data telah terbagi seperti pada Gambar 1.12, selanjutnya dapat ditekan
tombol Next atau langsung menekan tombol Finish jika tidak diperlukan
untuk mengubah format data dari file data.txt. Data masukan tersebut
secara otomatis akan diatur pada kolom-kolom yang telah tersedia oleh
Microsoft Excel (Gambar 1.13).

20

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

MODUL PRAKTIKUM FISIKA KOM PUTASI

Gambar 1.13 Tamp ilan hasil open file data.t xt


dengan Ms. Excel

Kemudian untuk memplotkan data-data yang telah dimasukkan diatas,


seleksi semua data tersebut, pilih menu InsertScatterScatter with Smooth
Lines (Gambar 1.14)

Gambar 1.14 Langkah-langkah plotting scatter

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

21

MODUL PRAKTIKUM FISIKA KOM PUTASI

Hasil tampilan plotting grafiknya adalah sebagaimana Gambar 1.15, dan


selanjutnya grafik dapat dimodifikasi sesuai dengan kebutuhan.

Gambar 1.15 Grafik hasil plotting data.t xt

Tugas
1. Jalankan kode program Kode program 1-7, atau buatlah program serupa dengan
bahasa pemrograman yang anda kuasai, sampai dihasilkan plot grafik
sebagaimana Gambar 1.9 atau 1.15!
2. Analisa output dari Kode program 4!

22

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

MODUL PRAKTIKUM FISIKA KOM PUTASI

PRACTICE II
ERROR PENDEKATAN
Teori
Deret Taylor dapat digunakan untuk melakukan pendekatan numerik dari suatu
fungsi f(x) berdasarkan nilai f(a) yang telah diketahui. Secara matematis deret Taylor
dinotasikan:

(2)
x

Jika f(x)=e , dengan deret Taylor di atas, nilai f(x) dapat didekati dengan deret
seperti ditunjukkan pada persamaan 3 dengan mengambil nilai a=0.
(3)
Begitu juga untuk sin x dan cos x, dengan mengambil nilai a=0, deret
pendekatannya adalah:
(4)
(5)
Proble m
Kemampuan komputer impossible untuk melakukan kalkulasi sampai deret tak
hingga. Oleh karena itu solusi persamaan 3, 4, dan 5 adalah dengan memotong deret
pada nilai n tertentu yang mana nilai error hasil pendekatannya mendekati nol atau
bergantung pada kemampuan maksimum komputer yang digunakan. Pertanyaannya
adalah berapakah nilai n dari masing- masing persamaan 3, 4, dan 5 agar nilai error
pendekatannya mendekati atau sama dengan 0?

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

23

MODUL PRAKTIKUM FISIKA KOM PUTASI

Project I
a. Tujuan
Mengetahui nilai error dari pendekatan numerik suatu deret tak hingga
berdasarkan model matematis dan kemampuan komputer yang digunakan.
b. Pseudocode
Pseudocode 1. Alur kode program eksponen

Input x, n
e=1
for i=1 to n do
Hitung a=xi
Hitung b=i!
e= e+(a/b)
end for
print e
a berfungsi sebagai pembilang dan b berkedudukan sebagai penyebut dari setiap

suku deret yang dihitung.


c. Implementasi Kode Program
Kode program 8. Eksponen

Pascal
program exponen;
uses wincrt;
var e,a,x:real;
i,n,b:integer;
function
pangkat(x:real;y:integer):real;
var hasil:real;
i:integer;
begin
hasil:=1;
for i:=1 to y do
hasil:=hasil*x;
pangkat:=hasil;
end;

24

function factorial(m:integer):integer;
var i,hasil:integer;
begin
hasil:=1;
for i:=1 to m do
hasil:=hasil*i;
factorial:=hasil;
end;
begin
write('x = ');readln(x);
write('n = ');readln(n);
e:=1;
for i:=1 to n do
begin
a:=pangkat(x,i);
b:=factorial(i);
e:=e+(a/b);
writeln(i);
end;
writeln('e^x = ',e:12:11);
end.

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

MODUL PRAKTIKUM FISIKA KOM PUTASI

Python
def factorial(m):
hasil=1
for j in range(1,(m+1)):
hasil*=j
return hasil
x=input("x = ")
n=input("n = ")
e=1.0
for i in range(1,(n+1)):
a=x**i;
b=factorial(i)
e+=(a/b)
print "e^x = {}".format(e)

Matlab
%file faktorial.m
function output=faktorial(m)
hasil=1;
for j=1:m
hasil=hasil*j;
end
output=hasil;
end
%file eksponen.m
x=input('x = ');
n=input('n = ');
e=1;
for i=1:n
a=x^i;
b=faktorial(i);
e=e+(a/b);
end
disp(sprintf('e^x = %.10f',e));

Fungsi matematika seperti perpangkatan dan factorial, sebenarnya telah


disediakan dalam module math di Python dan di Matlab itu sendiri. Penjabaran
fungsi factorial sebagai fungsi di atas, dalam praktikum ini dimaksudkan untuk
memberikan contoh bagaimana cara kerja sebenarnya yang dilakukan komputer
untuk menyelesaikan problem perpangkatan dan factorial tersebut. Perlu
diperhatikan masukan untuk variabel x berupa bilangan asli.
d. Tugas
1. Salin dan compile kedua kode program, atau buat kode program sendiri
sesuai Pseudocode 1 dengan bahasa pemrograman yang anda kuasai!
2. Tentukan nilai n terbaik dan bandingkan antara keduanya, dan juga dengan
membandingkan dengan nilai ex dari literatur yang lain (mis. e1 =
2.718281828459045), Sertakan juga spesifikasi komputer yang anda
digunakan (mis. AMD X2 4800+, P4 1800 MHz, dsb)!
3. Dari salah satu program di atas (sesuai yang anda kerjakan), tunjukkan yang
disebut dengan Truncate Error?

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

25

MODUL PRAKTIKUM FISIKA KOM PUTASI

Project II
a. Tujuan
Mengetahui kelemahan dari model numerik deret tak hingga.
b. Pseudocode
Pseudocode 2. Alur kode program sinus

Input x, n
s=x
c=-1
for i=2 to n do
if (i mod 2)=1 then
Hitung a=xi
Hitung b=i!
s= s+c*(a/b)
c=-1*c
endif
end for
print s

variabel c digunakan sebagai pengubah untuk melakukan penambahan atau


pengurangan terhadap hasil penjumlahan nilai s sebelumnya. i mod 2 berfungsi agar
suku-suku deret yang diambil, hanyalah deret yang berindeks n/suku ganjil.

26

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

MODUL PRAKTIKUM FISIKA KOM PUTASI

c. Implementasi Kode Program


Kode program 9. Deret sinus

Pascal
program sinus;
uses wincrt;
var s,a,x,c:real;
i,n,b:integer;
function
pangkat(x:real;y:integer):re
al;
var hasil:real;
i:integer;
begin
hasil:=1;
for i:=1 to y do
hasil:=hasil*x;
pangkat:=hasil;
end;
function
factorial(m:integer):integer;
var i,hasil:integer;
begin
hasil:=1;
for i:=1 to m do
hasil:=hasil*i;
factorial:=hasil;
end;

begin
write('x = ');readln(x);
write('n = ');readln(n);
s:=x;
c:=-1;
for i:=2 to n do
begin
if ((i mod 2)=1) then
begin
a:=pangkat(x,i);
b:=factorial(i);
s:=s+c*(a/b);
c:=-1*c;
end;
end;
writeln('sin x = ',s:11:10);
end.

Python
import math
x=input("x = ")
n=input("n = ")
s=x
c=-1
for i in range(2,(n+1)):
if (i%2)==1:
a=x**i;
b=math.factorial(i)
s+=c*(a/b)
c*=-1
print "sin x = {}".format(s)

Matlab
%file sinus.m
x=input('x = ');
n=input('n = ');
s=x;
c=-1;
for i=2:n
if (mod(i,2)==1)
a=x^i;
b=factorial(i);
s=s+c*(a/b);
c=-1*c;
end
end
disp(sprintf('sin x = %.10f',s));

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

27

MODUL PRAKTIKUM FISIKA KOM PUTASI

Kode program Python di atas, ditunjukkan bagaimana cara menghitung


factorial menggunakan module math yang sudah ada pada compiler Python
umumnya. Sedangkan pada program Matlab di atas, langsung menggunakan fungsi
factorial yang sudah ada pada Matlab.
d. Tugas
4. Bandingkan hasil pendekatan nilai sin x di atas dengan literatur yang anda
ketahui (sebutkan sumbernya) dengan nilai x 1!
5. Bandingkan dan analisa hasil pendekatan kedua kode program di atas! Jika ada
tunjukkan kelemahan dari pemodelan nilai sin x tersebut!
6. Buat pseudocode beserta kode program untuk menyelesaikan persamaan 5
(sesuai bahasa pemrograman yang anda kuasai)!

28

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

MODUL PRAKTIKUM FISIKA KOM PUTASI

PRACTICE III
AKAR-AKAR POLINOMIAL
Teori
Bentuk persamaan polinomial untuk orde n adalah:
(6)
dengan nilai koefisien a0 , a1 , , an tertentu. Akar-akar persamaannya dapat
diketahui dengan beberapa metode seperti metode setengah selisih (biseksi), metode
Secant, Newton-Raphson, dan lain sebagainya.
Ide metode setengah selisih adalah mencari nilai x i+1 yang nilai f(x i) mendekati
nol berdasarkan nilai f(x i) dan f(x i-1 ). Ilustrasi pendekatan ini seperti Gambar 3.1 dan
nilai x i dan x i-1 -nya harus menghasilkan nilai f(x i) dan f(x i-1 ) yang berbeda tanda.
f(x)

x i-1

x i+1

xi

Gambar 3.1 Metode setengah selisih

Metode lain yang serupa dengan metode selisih setengah adalah metode
Secant. Tekniknya hampir sama dengan metode setengah selisih, namun metode ini
mengambil perbandingan segitiga yang terbentuk dari x i dan x i-1 . Ilustrasi pendekatan
ini sebagaimana Gambar 3.2.

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

29

MODUL PRAKTIKUM FISIKA KOM PUTASI

f(x)

x i+1

x i-1

xi

Gambar 3.2 Metode setengah selisih

Sedangkan untuk metode Newton, atau disebut juga metode Newton-Raphson


menggunakan pemotongan deret Taylor pada suku ketiga, yang mana untuk
mendekati nilai x i+1 persamaan yang digunakan adalah:
(7)
Proble m
Kode program 5 merupakan contoh pancarian akar dari persamaan polinomial
orde 2. Pencarian akar untuk orde <=2 dan akar-akarnya berupa bilangan bulat,
mungkin tidak akan menjadi masalah jika dilakukan secara analitis, tetapi
bagaimana jika persamaan polinomialnya memiliki orde >2 atau akar-akarnya
merupakan bilangan asli?
Project III
a. Tujuan
Menentukan akar-akar pada persamaan polinomial orde banyak.
b. Pseudocode
Pseudocode 3. Alur pencarian akar dengan metode setengah selisih

Input x0,x1, n
for i=0 to n do
x2=0.5*( x0+x1)
Hitung f(x2)
if f(x2)<0 then x0=x2
else if f(x2)<0 then x1=x2
else break for
end for
print x2

30

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

MODUL PRAKTIKUM FISIKA KOM PUTASI

Pseudocode 4. Alur kode program pencarian akar dengan metode Secant

Input x0,x1, n
f0=f(x0)
f1=f(x1)
for i=0 to n do

end for
print x2

Hitung f2=f(x2)
x0=x1, x1=x2
f0=f1, f1=f2

c. Implementasi Kode program


Dimisalkan terdapat persamaan polinomial:
(8)
Menggunakan metode Secant, implementasi kode program untuk mencari nilai akarakar persamaannya adalah:
Kode program 10. Imp lemetasi metode Secant

Pascal
program secant;
uses wincrt;
var x0,x1,x2,f0,f1,f2:real;
i,n:integer;
function f(x:real):real;
begin
f:=x*x*x*x-31*x*x*x+230*x*x-452*x-144;
end;
begin
write('x0 = ');readln(x0);
write('x1 = ');readln(x1);
write('n = ');readln(n);
f0:=f(x0);
f1:=f(x1);
for i:=0 to n do
begin
if((f1-f0)<>0)then
x2:=x1-(f1*(x1-x0))/(f1-f0)
else
begin
writeln('Stoped..');
i:=n
end;
f2:=f(x2);
x0:=x1;f0:=f1;
x1:=x2;f1:=f2;
writeln(i,' ',x2:11:10,' ',f2:11:10);
end;
end.

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

31

MODUL PRAKTIKUM FISIKA KOM PUTASI

Python
def f(x):
y=x*x*x*x-31*x*x*x+230*x*x-452*x-144
return y
x0=input("x0 = ")
x1=input("x1 = ")
n=input("n = ")
f0=f(x0)
f1=f(x1)
for i in range(n):
if((f1-f0)!=0):
x2=x1-(f1*(x1-x0))/(f1-f0)
else:
print "Break.."
break
f2=f(x2)
x0,f0=x1,f1
x1,f1=x2,f2
print "{:.10f} {:.10f}".format(x2,f2);

Matlab
f=@(x)x*x*x*x-31*x*x*x+230*x*x-452*x-144;
x0=input('x0 = ');
x1=input('x1 = ');
n=input('n = ');
f0=f(x0);
f1=f(x1);
for i=0:n
if((f1-f0)~=0)
x2=x1-(f1*(x1-x0))/(f1-f0);
else
disp('Break..');
break;
end
f2=f(x2);
x0=x1;f0=f1;
x1=x2;f1=f2;
disp(sprintf('%f %f',x2,f2));
end

32

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

MODUL PRAKTIKUM FISIKA KOM PUTASI

d. Tugas
1. Buatlah grafik hubungan f(x) dan x untuk persamaan 8, berdasarkan contoh
pembuatan grafik Gambar 1.9 atau 1.15!
2. Modifikasi Kode program 5, atau buat kode program sendiri sesuai bahasa
pemrograman yang anda kuasai dan Pseudocode 3, untuk mencari akar-akar
persamaan 8 dengan metode setengah selisih!
3. Bandingkan teknik penentuan nilai awal x0 dan x1 untuk mendekati salah satu
nilai akar antara metode setengah selisih dan metode Secant, serta bandingkan
jumlah iterasi yang diperlukan antara kedua metode tersebut!
4. Apa yang dimaksud dengan Bracketing Method? Jelaskan apakah yang anda
lakukan pada soal no. 3 termasuk metode tersebut?
5. Tentukan nilai keempat akar-akar persamaan 8 dengan kode program yang
anda pakai atau yang anda buat, yang mengacu pada grafik soal no. 1!
6. Buatlah Pseudocode atau kode program sesuai bahasa pemrograman yang
anda kuasai untuk mencari akar-akar persamaan 8 dengan metode Newton
Rapshon! (optional)

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

33

MODUL PRAKTIKUM FISIKA KOM PUTASI

34

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

MODUL PRAKTIKUM FISIKA KOM PUTASI

PRACTICE IV
SOLUSI MATRIKS PERSAMAAN LINIER
Teori
Data dalam bentuk matriks sering kali digunakan dalam perhitungan numerik.
Dalam persamaan linier, agar lebih mudah, sering kali persamaan-persamaan yang
menjadi problem matematik digenerate dalam bentuk matriks untuk mencari solusi
penyelesaiannya. Contoh metode numerik yang berbasis matriks antara lain:
decomposisi LU, eliminasi Gauss-Jordan, Tridiagonal matriks, dan lain sebagainya.
Penyelesaian eliminasi Gauss-Jordan, seperti dimisalkan terdapat problem
matematis dengan elemen-elemen matriks m x n sebagaimana Gambar 4.1, untuk
mencari nilai x 1 , x2 , x3 , .., xm langkah- langkahnya adalah sebagaimana berikut:

Gambar 4.1 Operasi arit mat ika matriks m x n

Rubah matrik a dan b ke bentuk matrik c.

Modifikasi/eliminasi dilakukan pada matrik c ini yang ditujukan untuk


mencari matriks identitas dari a

Mengacu pada baris pertama:


Perbaharui nilai c11 dengan membagi semua, mulai kolom 1 sampai n+1
dengan c11 agar nilai c11 bernilai 1.
Untuk baris mulai 2 sampai m, perbaharui nilai mulai kolom 1 sampai
n+1 dengan mengurangi c1n yang baru diperbaharui, yang dikalikan
dengan cm1 agar nilai cm1 bernilai nol.

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

35

MODUL PRAKTIKUM FISIKA KOM PUTASI

Dilanjutkan pada baris kedua:


Karena pada kolom pertama telah bernilai 0, mulai baris kedua sampai
ke-m, maka kalkulasi dilakukan pada indeks matriks m2 dan n2,
dengan memperbaharui semua nilai pada baris kedua, dibagi dengan c22
sampai kolom ke n+1.
Untuk baris mulai 3 sampai m, perbaharui nilai mulai kolom 2 sampai
n+1 dengan mengurangi c2n yang baru diperbaharui, yang dikalikan
dengan cm2 agar nilai cm2 bernilai nol.

Dilanjutkan pada baris ketiga dan seterusnya sampai m dengan cara yang
sama, sampai didapatkan nilai diagonal matriknya bernilai 1 dan elemen
matriks bagian bawah diagonalnya bernilai nol.

Setelah itu, teknik yang dilakukan pada baris satu sampai m di atas dibalik,
namun hanya digunakan untuk menghitung agar nilai elemen matriks
bagian atas dari diagonal bernilai nol.

36

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

MODUL PRAKTIKUM FISIKA KOM PUTASI

Nilai c1n+1 , c2n+1 , c3n+1 , , cmn+1 merupakan solusi yang tidak lain adalah
nilai x 1 , x 2 , x3 , .., xm . Langkah- langkah di atas disederhanakan dalam
Pseudocode 5.
Proble m
Aplikasi program interface seperti Matlab, Maple, Octave dan Enthought
Python, memiliki notasi sendiri untuk mengenerate matriks, yang mana dengan
aturan notasi tersebut operasi aritmatika matriks seperti penambahan, pengurangan,
perkalian, bahkan untuk mengetahui nilai invers-nya, telah disediakan dalam library
dan tinggal memanggilnya saja. Namun bagaimana jika perhitungan numerik
membutuhkan operasi matematik atau implementasi numerik yang tidak disediakan
dalam library aplikasi tersebut?
Project IV
a. Tujuan
Menentukan solusi numerik berdasarkan bentuk matriks suatu persamaan
linier.
b. Pseudocode
Pseudocode 5. Alur kode program implementasi eliminasi Gauss -Jordan

Set matriks a,b


Generate matriks c
for k=1 to m do
p=c[k,k]
for j=k to (n+1) do
c[k,j]=c[k,j]/p
end for
for i=k+1 to m do
p=c[i,k]
for j=k to (n+1) do
c[i,j]=c[i,j]-c[k,j]*p
end for
end for
end for
for k=m downto 1 do
for i=k-1 downto 1 do
p=c[i,k]
for j=(m+1) downto 1 do
c[i,j]=c[i,j]-c[k,j]*p;
end for
end for
end for
print c,x

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

37

MODUL PRAKTIKUM FISIKA KOM PUTASI

c. Implementasi Kode Program


Dimisalkan terdapat suatu persamaan linier yang disusun dalam bentuk matriks
sebagaimana berikut:

Gambar 4.2 Problem matriks 3 x 3

Untuk mencari nilai x 1 , x2, dan x3 dengan metode eliminasi Gauss-Jordan,


berdasarkan Pseudocode 5, implementasi kode programnya adalah:
Kode program 11. Imp lemetasi untuk metode eliminasi Gauss-Jordan

Pascal
program GaussJordan;
uses wincrt;
const
m=3;
n=m;
var a:Array[1..m,1..n] of real;
b,d:Array[1..m] of real;
c:Array[1..m,1..(n+1)] of real;
k,i,j:integer;
p:real;
begin
a[1,1]:=2;a[1,2]:=5;a[1,3]:=7;
a[2,1]:=4;a[2,2]:=-5;a[2,3]:=3;
a[3,1]:=8;a[3,2]:=3;a[3,3]:=-5;

for k:=m downto 1 do


begin
for i:=k-1 downto 1 do
begin
p:=c[i,k];
for j:=(m+1) downto 1 do
c[i,j]:=c[i,j]-c[k,j]*p;
end;
end;
{*tampilkan matriks c*}
for i:=1 to m do
begin
for j:=1 to n+1 do
write(c[i,j]:7:6,' ');
writeln
end;

b[1]:=24;b[2]:=38;b[3]:=-18;
{*inisialisai matriks c*}
for i:=1 to m do
for j:=1 to n do
c[i,j]:=a[i,j];
for i:=1 to n do
c[i,n+1]:=b[i];

writeln;
for j:=1 to n do
writeln('x',j,' = ',c[j,n+1]:7:6,' ');

{*Proses eliminasi*}
for k:=1 to m do
begin
p:=c[k,k];
for j:=k to (n+1) do
c[k,j]:=c[k,j]/p;
for i:=k+1 to m do
begin
p:=c[i,k];
for j:=k to (n+1) do
c[i,j]:=c[i,j]-c[k,j]*p;
end;
end;

38

end.

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

MODUL PRAKTIKUM FISIKA KOM PUTASI

Python
m=3
n=m
a=[[2.0,5.0,7.0],[4.0,-5.0,3.0],[8.0,3.0,-5.0]]
b=[24.0,38.0,-18.0]
c=[[0 for i in range(n+1)] for j in range(m)]
#inisialisasi Matriks c
for i in range(m):
for j in range(n):
c[i][j]=a[i][j]
for i in range(m):
c[i][n]=b[i]
#proses eliminasi
for k in range(m):
p=c[k][k]
for j in range(k,n+1):
c[k][j]/=p
for i in range(k+1,m):
p=c[i][k]
for j in range(k,n+1):
c[i][j]-=c[k][j]*p
for k in range(m-1,-1,-1):
for i in range(k-1,-1,-1):
p=c[i][k]
for j in range(k,n+1):
c[i][j]-=c[k][j]*p
#tampilkan c
for i in c:
print i

Matlab
m=3;n=m;
a=[2 5 7;4 -5 3;8 3 -5];
b=[24 38 -18];
c=[];
%inisialisasi Matriks c
for i=1:m
for j=1:n
c(i,j)=a(i,j);
end
end
for i=1:m
c(i,n+1)=b(i);
end
%proses eliminasi
for k=1:m
p=c(k,k);
for j=k:(n+1)
c(k,j)=c(k,j)/p;
end
for i=k+1:m
p=c(i,k);
for j=k:n+1
c(i,j)=c(i,j)-c(k,j)*p;
end
end
end

for k=m:-1:1
for i=k-1:-1:1
p=c(i,k);
for j=(m+1):-1:1
c(i,j)=c(i,j)-c(k,j)*p;
end
end
end
%tampilkan matriks c
disp(c);
for j=1:n
disp(sprintf('x %d=%.10f',j,c(j,n+1)));
end

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

39

MODUL PRAKTIKUM FISIKA KOM PUTASI

d. Tugas
1. Analisa Pseudocode 5!
2. Buat program (berdasarkan Pseudocode 5), atau modifikasi Kode program 11,
untuk mencari x 1, x 2, x3,..,x10 problem matriks Gambar 4.3 dengan metode
eliminasi Gauss-Jordan! Bandingkan dengan hasil perhitungan x 1, x2, x3,..,x10
secara analitis!
3. Buatlah pseudocode dan kode program untuk menyelesaikan problem matriks
Gambar 4.3 dengan metode decomposisi LU! Bandingkan hasilnya dengan
hasil implementasi Kode Program 11 di atas!

Gambar 4.3 Problem matriks 10 x 10

40

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

MODUL PRAKTIKUM FISIKA KOM PUTASI

PRACTICE V
GENERATE OF FUNCTION
Teori
Metode yang dapat digunakan untuk mengenerate fungsi dari suatu deret data
adalah metode iterasi Jacoby dan Gauss-Seidel. Metode iterasi ini dapat juga
digunakan untuk menyelesaikan persamaan linier dan merupakan teknik pendekatan
dengan melakukan perulangan substitusi nilai variabel hasil kalkulasi suatu
persamaan ke variabel yang sama pada persamaan lain yang segaris.
Iterasi Jacoby dan Gauss-Seidel memiliki bentuk implementasi yang hampir
sama, hanya saja yang membedakan adalah teknik substitusi yang dilakukan. Pada
iterasi Jacoby obyek variabel yang akan dicari solusinya di kalkulasi terlebih dahulu
dan baru disubstitusi pada iterasi selanjutnya. Sedangkan pada iterasi Gauss-Seidel,
nilai variabel kalkulasi obyek langsung disubstitusikan menjadi nilai variabel yang
sama pada persamaan lain yang segaris.
Untuk berbagai problem matematis, iterasi Gauss-Seidel lebih compatible
dibanding iterasi Jacoby. Begitu juga dengan jumlah iterasi yang diperlukan,
seringkali jumlah iterasi Gauss-Seidel lebih sedikit dibanding Jacoby. Namun
meskipun demikian, untuk keperluan kalkulasi data yang bertautan dalam komputasi
paralel, algoritma iterasi Jacoby lebih mudah diimplementasikan daripada GaussSeidel.
Untuk menggenerate fungsi dari suatu deret data, dapat dimisalkan terlebih
fungsi tersebut sebagai fungsi polinomial (persamaan 9) di mana koefisien-koefisien
a0 sampai an adalah variabel yang akan dicari nilainya dengan pendekatan numerik
(persamaan 10), yang mana indeks k menunjukkan untuk setiap pendekatan nilai ak
menggunakan nilai x yang berbeda pula.
(9)
(10)
Sedangkan nilai error () dari metode pendekatan ini disebut dengan RMSE(Root
Mean Square Error) yang dirumuskan:

(11)
Proble m
Iterasi Gauss-Seidel di atas berfungsi untuk menghasilkan suatu persamaan
fungsi dari f(x), bagaimanakah nilai error fungsi hasil pendekatannya dibandingkan
dengan fungsi yang sebenarnya?

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

41

MODUL PRAKTIKUM FISIKA KOM PUTASI

Project V
a. Tujuan
Menentukan nilai error hasil pendekatan berdasarkan fungsi yang tergenerate.
b. Pseudocode
Pseudocode 6. Alur kode program iterasi Gauss-Seidel

Set m
Inisialisasi f(x) dan x
Inisialisasi n,k
for l=0 to m do
for k=0 to n do
hitung ak (persamaan 10)
end for
end for
hitung RMSE
print f(x)

Dimana m menunjukkan jumlah iterasi, n jumlah orde polinomial perkiraan.


c. Implementasi Kode Program
Dimisalkan terdapat deret data sebagaimana berikut:
x
f(x)

0.5
1

0
0

1.5
-1

2
0

Untuk mengenerate fungsi yang melingkupinya, fungsi f(x) dimisalkan sebagai


persamaan polinomial. Sehingga berdasarkan jumlah data, persamaan polinomial
pemisalannya adalah:
(12)
Implementasi kode programnya:

42

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

MODUL PRAKTIKUM FISIKA KOM PUTASI

Kode program 12. Imp lemetasi metode iterasi Gauss -Seidel

Pascal
program generate;
uses wincrt;
const
Pi=22/7;
var x,f,a:array[0..5] of real;
i,n,k,l,m:integer;
jum,e:real;
function pangkat(x:real;n:integer):real;
var kali:real;
begin
kali:=1;
for i:=1 to n do kali:=kali*x;
pangkat:=kali;
end;
begin
m:=1000;n:=4;
x[0]:=0;x[1]:=0.5*Pi;x[2]:=Pi;
x[3]:=1.5*Pi;x[4]:=2*Pi;
f[0]:=0;f[1]:=1;f[2]:=0;f[3]:=-1;f[4]:=0;
for k:=0 to n do a[k]:=0;
for l:=0 to m do
begin
for k:=0 to n do
begin
jum:=0;
for i:=0 to n do
if i<>k then
jum:=jum+a[i]*pangkat(x[k],i);
a[k]:=(f[k]-jum)/pangkat(x[k],k);
end;
end;
e:=0;
for k:=0 to n do
begin
jum:=0;
for i:=0 to n do
jum:=jum+a[i]*pangkat(x[k],i);
e:=e+pangkat((f[k]-jum),2);
end;
e:=sqrt(e/n);
writeln('RMSE = ',e:11:10);
write('f(x) = ');
for k:=0 to n do
begin
write(a[k]:7:6,'*x^',k);
if k<>n then write('+');
end;
end.

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

43

MODUL PRAKTIKUM FISIKA KOM PUTASI

Python
import math
m=10
n=4
Pi=22/7
x=[0.0,0.5*Pi,Pi,1.5*Pi,2*Pi]
f=[0.0,1.0,0.0,-1.0,0.0]
a=[]
for k in range(5):
a.append(0.0)
for l in range(m):
for k in range(n):
jum=0
for i in range(n):
if i!=k:
jum+=a[i]*x[k]**i
a[k]=(f[k]-jum)/(x[k]**k)
e=0
for k in range(n):
jum=0
for i in range(n):
jum+=a[i]*x[k]**i
e+=(f[k]-jum)**2
e=math.sqrt(e/n)
print "Error = {:f}".format(e)
print "f(x)=",
i=0
for k in a:
print "{:f}*x^{}".format(k,i),
if i!=n :
print "+",
i+=1

44

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

MODUL PRAKTIKUM FISIKA KOM PUTASI

Matlab
m=1000;n=5;
Pi=22/7;
x=[0 (0.5*Pi) Pi (1.5*Pi) (2*Pi)];
f=[0 1 0 -1 0];
a=[0 0 0 0 0];
for l=1:m
for k=1:n
jum=0;
for i=1:n
if i~=k
jum=jum+a(i)*(x(k)^(i-1));
end
a(k)=(f(k)-jum)/((x(k))^(k-1));
end
end
end
e=0; %error
for k=1:n
jum=0;
for i=1:n
jum=jum+a(i)*(x(k)^(i-1));
end
e=e+(f(k)-jum)^2;
end
e=sqrt(e/n);
disp(sprintf('Error = %.10f',e));
disp(sprintf('a = '));
disp(sprintf(' %.10f ',a));

d. Tugas
1. Jalankan Kode program 12, atau buat kode program sendiri sesuai bahasa
pemrograman yang anda kuasai untuk mengenerate fungsi problem di atas,
variasi nilai m dan tunjukkan pengaruhnya terhadap hasil fungsi yang
tergenerate!
2. Buat grafik hubungan x dan f(x) berdasarkan fungsi polinomial yang
tergenerate dari kode program Kode program 12, atau kode program sesuai
yang anda kerjakan, dan buktikan bahwa fungsi f(x) sama dengan sin(x)!
3. Tunjukkan pengaruh/hubungan antara jumlah data dengan jumlah suku
Polinomial yang diambil?
4. Jelaskan apa yang anda ketahui mengenai Trendline! Apa hubungannya
dengan Practice V ini?
5. Cari literatur mengenai iterasi Jacoby dan buatlah pseudocode untuk
memodifikasi Kode program 12 dengan metode iterasi Jacoby!

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

45

MODUL PRAKTIKUM FISIKA KOM PUTASI

46

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

MODUL PRAKTIKUM FISIKA KOM PUTASI

PRACTICE VI
DIFERENSIASI NUMERIK
Teori
Dalam fisika, penurunan problem diferensiasi numerik dapat menggunakan
metode finite difference. Metode ini terdiri dari metode beda maju (forward
difference), beda mundur (backward difference) dan beda tengah (central difference)
yang persamaan-persamaannya antara lain:
Beda maju
(13)
Beda mundur
(14)
Beda tengah
atau dapat dinotasikan

(15)

Persamaan-persamaan di atas digunakan untuk penurunan numerik persamaan


diferensiasi orde satu. Sedangkan untuk persamaan diferensiasi orde dua, metode
yang digunakan merupakan perpaduan dari metode beda maju, beda mundur dan
beda tengah di atas, yang bentuk persamaannya adalah:
(16)

Proble m
Metode beda maju, beda mundur dan beda tengah memiliki ketepatan yang
cukup tinggi jika fungsi yang akan didiferensiasikan termasuk persamaan linier.
Namun pendekatan akan cukup menyimpang jika fungsinya termasuk fungsi
polinomial orde 2, bagaimanakah nilai error dari pendekatan suatu persamaan
diferensiasi yang fungsinya termasuk fungsi polinomial orde 2?

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

47

MODUL PRAKTIKUM FISIKA KOM PUTASI

Project VI
a. Tujuan
Menentukan nilai error dari masing- masing metode differensiasi numerik yang
berbeda.
b. Pseudocode
Pseudocode 7. Alur kode program perbandingan pendekatan beda maju, mundur dan tengah.

set x
Set f(x) i, i=0..n
for i=1 to n do
bd(x) i=[f(x) i- f(x) i-1]/x
end for
for i=0 to n-1 do
fd(x) i=[f(x) i+1- f(x) i]/x
end for
for i=1 to n-1 do
cd(x) i=[f(x) i+1- f(x) i-1]/2x
end for
plot bd(x) i, fd(x) i, cd(x) i, i=0..n

---> backward difference


---> forward difference
---> central difference

Di mana n jumlah data.


c. Implementasi Kode Program
Dimisalkan terdapat deret data hasil pengamatan gerak bola kasti dalam t,
sumbu x dan sumbu y dengan t=0.05 s adalah sebagai berikut:
t (s)
x (m)
y (m)

0.00 0.05
0.00 0.10
0.00 2.49

0.10
0.20
4.90

0.15
0.30
7.16

0.20 0.25
0.40 0.50
9.20 10.94

0.30
0.60
12.30

0.35
0.70
13.21

0.40 0.45
0.80 0.90
13.60 13.39

Gambar 6.1 Ilustrasi gerak bola kasti

Jika diplotkan berdasarkan letak posisi x dan y, akan didapatkan ilustrasi gerakan
bola sebagaimana Gambar 6.1. Untuk mengetahui kecepatan setiap t untuk arah y
(v y) implementasi kode program untuk pendekatan nilai kecepatan dengan metode
beda maju, beda mundur dan beda tengah adalah:
48

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

MODUL PRAKTIKUM FISIKA KOM PUTASI

Kode program 13. Pendekatan deferensiasi orde satu dengan beda maju, mundur dan tengah

Pascal
program difference;
uses wincrt;
const n=9;
var dt,t:real;
i:integer;
f,bd,fd,cd:array[0..n] of real;
fp:text;
begin
assign(fp,'data.txt');
rewrite(fp);
dt:=0.05;
f[0]:=0;f[1]:=2.49;f[2]:=4.9;
f[3]:=7.16;f[4]:=9.2;f[5]:=10.94;
f[6]:=12.3;f[7]:=13.21;f[8]:=13.6;
f[9]:=13.39;
{inisialisasi awal}
for i:=0 to n do
begin
bd[i]:=f[i];fd[i]:=f[i];cd[i]:=f[i];
end;
{Backward difference}
for i:=1 to n do
bd[i]:=(f[i]-f[i-1])/dt;
{Forward difference}
for i:=0 to n-1 do
fd[i]:=(f[i+1]-f[i])/dt;
{Central difference}
for i:=1 to n-1 do
cd[i]:=(f[i+1]-f[i-1])/(2*dt);
t:=0;
writeln(fp,'t ':3,'BD':10,'FD':10,'CD':10);
for i:=0 to n do
begin
writeln(fp,t:4:2,' ',bd[i]:10:7,' ',fd[i]:10:7,' ',cd[i]:10:7);
t:=t+dt;
end;
close(fp);
write('Done..')
end.

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

49

MODUL PRAKTIKUM FISIKA KOM PUTASI

Python
fp=open("data.txt","w");
n,dt=9,0.05
f=[0.0,2.49,4.9,7.16,9.2,10.94,12.3,13.21,13.6,13.39]
bd,fd,cd=[],[],[]
#inisialisasi awal
for i in f:
bd.append(i),fd.append(i),cd.append(i)
#backward difference
for i in range(1,n+1):
bd[i]=(f[i]-f[i-1])/dt
#forward difference
for i in range(n):
fd[i]=(f[i+1]-f[i])/dt
#central difference
for i in range(1,n):
cd[i]=(f[i+1]-f[i-1])/(2*dt)
t=0.0
fp.write(" {:10} {:10} {:10} {:10}\n".format("t","BD","FD","CD"))
for i in range(n+1):
fp.write("{:9f} {:9f} {:9f} {:9f}\n".format(t,bd[i],fd[i],cd[i]))
t+=dt
fp.close()
print "Done.."

50

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

MODUL PRAKTIKUM FISIKA KOM PUTASI

Matlab
fp=fopen('data.txt','w');
n=10;dt=0.05;
f=[0 2.49 4.9 7.16 9.2 10.94 12.3 13.21 13.6 13.39];
bd=[];fd=[];cd=[];
%inisialisasi awal
bd=f;fd=f;cd=f;
%backward difference
for i=2:n
bd(i)=(f(i)-f(i-1))/dt;
end
%forward difference
for i=1:n-1
fd(i)=(f(i+1)-f(i))/dt;
end
%central difference
for i=2:n-1
cd(i)=(f(i+1)-f(i-1))/(2*dt);
end
t=0;
fprintf(fp,'t
BD
FD
CD\n');
for i=1:n
fprintf(fp,'%0.2f %2.7f %2.7f %2.7f\n',t,bd(i),fd(i),cd(i));
t=t+dt;
end
fclose(fp);
disp('Done..');

d. Tugas
1. Jalankan Kode program 13, atau buat kode program sesuai dengan kode
program yang anda kuasai berdasarkan Pseudocode 7 untuk mendapatkan
data-data seperti yang terdapat pada file data.txt!
2. Hitung secara analitik kecepatan arah sumbu y (v y) pada t=0.0, 0.05, 0.10,
0.15,.., 0.90!
3. Plot data txt dan bandingkan nilai kecepatan hasil pendekatan metode beda
maju, mundur dan tengah, manakah hasilnya yang sesuai dengan perhitungan
analitik?
4. Buatlah kode program (atau sesuai bahasa pemrogramanan yang anda
kuasai) untuk menghitung percepatan arah y (menggunakan persamaan 16)!
Buktikan percepatan tersebut adalah percepatan gravitasi!

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

51

MODUL PRAKTIKUM FISIKA KOM PUTASI

PRACTICE VII
INTEGRASI NUMERIK
Teori
Selain bentuk diferensiasi, problem matematik yang sering ditemui dalam
fisika adalah problem integrasi. Untuk pendekatan secara numerik terdapat berbagai
metode seperti metode kotak, trapesium, Simpson dan Newton-Cotes. Namun di sini
akan dipelajari integrasi numerik dengan mengkhususkan pada metode trapesium.
Secara umum integrasi dapat merupakan luasan yang berada di bawah fungsi.
Oleh karena itu dengan metode trapesium dapat diilustrasikan ide integrasi
numeriknya sebagaimana Gambar 7.1.

Gambar 7.1 Metode trapesium

Sehingga solusi persamaan integrasi numeriknya adalah:

, f(x)<f(x+x)

(17)

Proble m
Teknik untuk memperkecil nilai error untuk metode trapesium adalah dengan
memperkecil x, semakin kecil x, nilai error yang diharapkan akan semakin kecil.
Dalam matematik, untuk menghitung luas suatu lingkaran dan karena lingkaran
mempunyai jumlah sisi tak terhingga, nilai hanya dapat dicari dengan pendekatan
numerik. Bagaimanakah pengaruh variasi x terhadap nilai ?

52

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

MODUL PRAKTIKUM FISIKA KOM PUTASI

Project VII
a. Tujuan
Menggunakan integrasi numerik untuk memprediksi nilai suatu konstanta.
b. Pseudocode
Pseudocode 8. Alur kode program metode trapesium

Set a,b,n
dx=(b-a)/n
x=a
f1=f(x)
sum=0
while x<=b do
x=x+dx
f2=f(x)
sum=sum+0.5dx(f1+f2)
f1=f2
end while
print sum

di mana n jumlah trapesium, semakin banyak jumlah trapesium semakin kecil xnya
c. Implementasi Kode Program
Kode program 14. Integrasi numerik dengan metode trapesium

Pascal
program nilaiPi;
uses wincrt;
var a,b,x,dx,sum,r,f1,f2:real;
i,n:integer;
function y(r:real;x:real):real;
begin
y:=sqrt(r*r-x*x);
end;
begin
r:=5;b:=r;a:=0;
n:=90;
dx:=(b-a)/n;
x:=a;
f1:=y(r,x);
sum:=0;
for i:=1 to n do
begin
x:=x+dx;
f2:=y(r,x);
sum:=sum+0.5*dx*(f1+f2);
f1:=f2;
end;
writeln('n = ',n);
writeln('dx = ',dx:7:6);
writeln('Luas O = ',(4*sum):7:6);
writeln('Pi = ',((4*sum)/(r*r)):7:6);
end.

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

53

MODUL PRAKTIKUM FISIKA KOM PUTASI

Python
import math
def y(r,x):
return (math.sqrt(r*r-x*x))
r,n=5.0,1500
a,b=0.0,r
dx=(b-a)/n
x,jum=a,0
f1=y(r,x)
for i in range(1,n+1):
x+=dx
f2=y(r,x)
jum+=0.5*dx*(f1+f2)
f1=f2
print "n = ",n
print "dx = ",dx
print "Luas O = ",(4*jum)
print "Pi = ",((4*jum)/(r*r))

Matlab
y=@(r,x)(sqrt(r*r-x*x));
r=5.0;n=1500;
a=0;b=r;
dx=(b-a)/n;
x=a;jum=0;
f1=y(r,x);
for i=1:n+1
x=x+dx;
f2=y(r,x);
jum=jum+0.5*dx*(f1+f2);
f1=f2;
end
disp(sprintf('n = %d',n));
disp(sprintf('dx = %.7f',dx));
disp(sprintf('Luas O = %.7f',(4*jum)));
disp(sprintf('Pi = %.7f',(4*jum)/(r*r)));

54

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

MODUL PRAKTIKUM FISIKA KOM PUTASI

d. Tugas
1. Jalankan Kode program 14, atau buatlah kode program sendiri sesuai bahasa
pemrograman yang anda kuasai berdasarkan Pseudocode 8 yang di
modifikasi, untuk mendekati nilai ! Berapakah nilai hasil pendekatan?
2. Analisa variasi x terhadap pendekatan nilai berdasarkan Kode program 14
atau berdasarkan kode program yang anda buat! Bandingkan dengan nilai
dari literatur lain (mis. = 3.142857142857143)?
3. Gunakan metode numerik lain selain metode trapesium untuk mendekati nilai
! Bandingkan hasilnya?

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

55

MODUL PRAKTIKUM FISIKA KOM PUTASI

PRACTICE VIII
INTERPOLASI
Teori
Secara garis besar, interpolasi adalah memprediksi nilai suatu titik berdasarkan
titik-titik terdekat yang sudah ada/diketahui nilainya. Salah satu contoh metode
interpolasi yang mudah adalah metode interpolasi bilinier, dimana idenya adalah
mengambil nilai pendekatan berdasarkan asumsi persamaan gradien terhadap 4 titik
terdekat yang sudah diketahui nilainya. Dengan syarat keempat titik tersebut berada
membentuk persegi dan nilai titik yang didekati berada dalam 4 titik tersebut.
Ilustrasi keberadaan titik tersebut sebagaimana Gambar 8.1.

u3

y2

u4
u(x,y)

u2

u1

y1
x1

x2

Gambar 8.1 Posisi titik obyek pada interpolasi bilin ier

Persamaan interpolasi bilinier untuk mendekati nilai u di atas adalah


sebagaimana persamaan 18.

(18)

dengan u1 , u2 , u3 , dan u4 yang sudah diketahui.


Proble m
Permasalahan fisis dan matematis seperti apa yang dapat atau cocok digunakan
interpolasi bilinier, karena dimungkinkan dengan asumsi titik dalam gradien yang
sama dapat memiliki nilai error pendekatan yang besar?

56

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

MODUL PRAKTIKUM FISIKA KOM PUTASI

Project VIII
a. Tujuan
Menggunakan Interpolasi untuk mendekati suatu nilai berdasarkan dua sumbu
koordinat x dan y.
b. Tugas
Salah satu bentuk implementasi interpolasi Bilinier adalah digunakan untuk
mendekati nilai kecepatan suatu fluida pada suatu titik x dan y berdasarkan 4 titik
yang telah diketahui. Dimisalkan keempat titik tersebut adalah sebagaimana tabel
berikut:
x
y
u(x,y)
1
1
2.75
5
1
3.4
1
3
-1.0
5
3
2.2
1. Buatlah Pseudocode beserta Kode program sesuai bahasa pemrograman yang
Anda kuasai untuk mendekati nilai u(2.5,1.5) dengan metode interpolasi Bilinier?
2. Analisa hasil pendekatan kecepatan yang Anda peroleh soal no. 1 di atas?

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

57

MODUL PRAKTIKUM FISIKA KOM PUTASI

SOAL UAP (Take home)


1. Simulasikan Gerak Jatuh Bebas suatu benda bermassa m, ke dalam grafik
hubungan h (ketinggian) dan t (waktu). Dari ketinggian awal h0 , sampai benda
tidak memantul kembali ke atas! (6)

2. Hampir sama dengan soal no. 1, simulasikan gerak bandul sederhana dalam
grafik hubungan x (simpangan) dan t (waktu) sampai simpangan bandul sama
dengan 0! (6)

3. Buatlah pseudocode beserta kode program untuk menghitung


dengan
pendekatan numerik dan n berupa pecahan desimal yang bernilai negatif?
4. Sebuah mobil bergerak berubah beraturan dengan kecepatan v tercatat di
berbagai titik sepanjang jarak x sebagai berikut:
x (m)
v (m/s)

58

0
0

4
2

8
2.8

12
3.5

16
4

20
4.5

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

MODUL PRAKTIKUM FISIKA KOM PUTASI

Tentukan percepatan mobil tersebut dengan menggunakan pendekatan numerik?


(6)
5. Suatu gerak projectile diilustrasikan sebagaimana gambar di bawah ini:
di mana sumbu x menunjukkan
waktu (t), sedangkan sumbu y
menunjukkan
ketinggian
(h).
Tentukan
persamaan
posisi
projectile sebagai fungsi dari
waktu
dengan
menggunakan
pendekatan numerik?

(2)
Ketentuan menge rjakan soal
Kerjakan minimal dua dari lima soal di atas dengan setiap soal terdiri:
1.
2.
3.
4.
5.
6.

Tinjauan soal/problem (persamaan/model matematis yang digunakan)


Penurunan numerik (Metode yang digunakan, diskritisasi model)
Pseudocode
Hasil dan Analisa (pembandingan dengan hasil analitis)
Kesimpulan
Lampiran (Kode program)

NB: penulisan 1, 2, 4 dan 5 diusahakan lebih ke bentuk paragraf

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

59

Anda mungkin juga menyukai