Modul Praktikum Fisika Komputasi 1.5

61
  MODUL PRAKTIKUM FISIKA KOMPUTASI dengan contoh Bahasa Pemrograman Pascal, Matlab dan Python Oleh: Drs. Sugeng Rianto, M. Sc. Ubaidillah, S. Si. JURUSAN FISIKA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS BRAWIJAYA MALANG 2010

Transcript of Modul Praktikum Fisika Komputasi 1.5

MODUL PRAKTIKUM FISIKA KOMPUTASIdengan contoh Bahasa Pemrograman Pascal, Matlab dan Python

Oleh: Drs. Sugeng Rianto, M. Sc. Ubaidillah, S. Si.

JURUSAN FISIKAFAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS BRAWIJAYA MALANG 2010

MODUL PRAKTIKUM FISIKA KOMPUTASI

2

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

MODUL PRAKTIKUM FISIKA KOMPUTASI

DAFTAR ISIDAFTAR ISI ............................................................................................................... 3 PRACTICE I PENDAHULUAN ................................................................................ 5 1.1. Pendahuluan ............................................................................................... 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 1.6.1. Turbo Pascal for Windows (TPW) 1.5 ................................................ 13 1.6.2. Python 2.7x .......................................................................................... 15 1.6.3. MATLAB 7.0.1.................................................................................... 17 1.7. Plotting Data ............................................................................................. 17 1.7.1. Plotting GNUPLOT ............................................................................. 18 1.7.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 TRENDLINE ................................................................................... 41 PRACTICE VI DIFERENSIASI NUMERIK .......................................................... 47 PRACTICE VII INTEGRASI NUMERIK .............................................................. 53 PRACTICE VIII INTERPOLASI ............................................................................ 57 PUSTAKA ................................................................................................................ 61

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

3

MODUL PRAKTIKUM FISIKA KOMPUTASI

4

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

MODUL PRAKTIKUM FISIKA KOMPUTASI

PRACTICE I PENDAHULUAN1.1. Pendahuluan 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 Numerik 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.2Dari 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 untukJURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

5

MODUL PRAKTIKUM FISIKA KOMPUTASI

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

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

Pythonprint Hello World!

Matlabdisp(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. Oleh karena itu digunakan uses wincrt dalam source code Pascal di atas, yang berarti source code tersebut dijalankan menggunakan TPW. Berbeda dengan Pascal yang harus mengikuti prosedur dalam penulisan program, untuk menampilkan kata Hello World! Python hanya menggunakan perintah print. Sedangkan untuk Matlab, kata Hello World dapat dituliskan dengan perintah disp.

6

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

MODUL PRAKTIKUM FISIKA KOMPUTASI

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

Pascalprogram 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.

Pythoni=input("Masukkan bilangan bulat : ")r=input("Masukkan bilangan asli/desimal : ") print "Hasil: " print "Bilangan bulat : ",i print "Bilangan asli : ",r input("Press any key..")

Matlabi=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 teknik inisialisasi type data yang berbeda, terhadap variabel yang mempunyai fungsi 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-input-kan harus ditulis dengan 2.0, secara otomatis Python akan menginisialisasikan angka 2 tersebut sebagai bilangan asli. Satu kelebihan Matlab, Matlab tidak memerlukan inisialisasi variabel seperti di Pascal dan Python di atas. Misalnya ketika bilangan bulat diperlukan menjadi bilangan asli, secara otomatis bilangan tersebut diinisialisasi menjadi bilangan asli oleh Matlab meskipun sebelumnya bertindak sebagai bilangan integer. Sedangkan kode program input pada baris akhir diperlukan agar aplikasi tidak langsung tertutup saat program telah selesai menjalankan perintah-perintah sebelumnya, dan pemberian perintah input ini bersifat optional.JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

7

MODUL PRAKTIKUM FISIKA KOMPUTASI

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

Pascalprogram 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.

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

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

8

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

MODUL PRAKTIKUM FISIKA KOMPUTASI

Perintah while:Kode program 4. Presisi mesin

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

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

Matlabi=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, prosesor 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 pembanding 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

9

MODUL PRAKTIKUM FISIKA KOMPUTASI

Kode program 5. Akar fungsi

Pascalprogram 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: xp=x if (p*y)0 xp=x; end if (p*y)