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

MODUL PRAKTIKUM FISIKA KOMPUTASI

2

JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010

MODUL PRAKTIKUM FISIKA KOMPUTASI

DAFTAR ISI
DAFTAR 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 .

Python.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. Perbedaan Kalkulasi Analitis dan Numerik Salah satu problem matematik yang oleh komputer diselesaikan dengan kalkulasi numerik adalah problem diferensiasi. pengurangan. Hal ini dikarenakan tidak semua problem matematik dapat diselesaikan oleh komputer secara langsung. Dalam praktikum fisika komputasi ini disarankan untuk menggunakan bahasa pemrograman Pascal.1. 1.2. 1. sehingga nilai diferensiai orde satu terhadap x adalah: Sedangkan untuk perhitungan secara numerik. integrasi. pencarian akar persamaan polinomial orde tinggi.3. problem diferensiasi dapat diturunkan dengan metode numerik beda maju (forward different) yang bentuk persamaannya: (1) dengan mengambil ∆x=0.2 ini nantinya akan dikenal sebagai nilai error.2. di mana hasil perhitungannya identik dengan adanya nilai error.MODUL PRAKTIKUM FISIKA KOMPUTASI PRACTICE I PENDAHULUAN 1. eigenvalue matrik. karena Pascal merupakan bahasa pemrograman tingkat tinggi yang sederhana dan mudah untuk JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 5 . perlu diubah terlebih dahulu ke bentuk operasi aritmatika ke penambahan.2 Dari kedua hasil tersebut dapat dibandingkan perbedaan penyelesaian antara numerik dan analitis mempunyai selisih sebesar 0. Kode Program Komputer Salah satu teknik untuk melakukan komputasi numerik adalah dengan mengimplementasikannya ke bentuk kode program bahasa pemrograman komputer tertentu. perkalian dan pembagian sederhana agar dapat dikalkulasi oleh komputer. seperti Pascal. Problem matematik yang memerlukan penurunan dengan metode numerik oleh komputer antara lain: problem diferensiasi. turunan pertamanya dapat diketahui secara secara langsung dengan penurunan y‟(x)=dy(x)/dx=4x-3. C++. Python dan Matlab. didapatkan =17. yang secara analitis untuk x=5. Pengubahan/penurunan tersebut dikenal dengan sebutan pendekatan numerik. Dimisalkan terdapat suatu problem fisika dengan persamaan matematis y(x)=2x2-3x+1. Pendekatan numerik tersebut umumnya dilakukan dengan bantuan komputer dan menggunakan bahasa pemrograman tertentu. Fortran dan lain sebagainya. di mana selisih 0. C. Dengan alasannya. Problem matematik yang rumit. boundary value dan lain sebagainya.

Compiler yang digunakan dalam praktikum ini disarankan untuk menggunakan software Turbo Pascal for Windows (TPW) sebagai compiler bahasa pemrograman Pascal. yang berarti source code tersebut dijalankan menggunakan TPW. 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. praktikum ini. Perintah-perintah Dasar Perintah-perintah dasar dalam Pascal. Requirement Agar semua Kode program yang dituliskan dalam Modul ini dapat berjalan dengan baik. Turbo Pascal for Windows (TPW) 2. untuk menampilkan kata “Hello World!” Python hanya menggunakan perintah “print”.4. uses wincrt. Python print “Hello World!” Matlab disp(„Hello World!‟). end. Python 2.MODUL PRAKTIKUM FISIKA KOMPUTASI dipahami. Sedangkan untuk Matlab. Python dan Matlab yang akan sering digunakan dalam praktikum ini antara lain: a. 6 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 . Sedangkan Python termasuk dalam bahasa pemrograman yang sering digunakan untuk keperluan “Scientific Programming” selain Matlab. Berbeda dengan Pascal yang harus mengikuti prosedur dalam penulisan program.0.1 1. dan Python sebagai compiler bahasa Python.7 3. Matlab 7.5. begin write('Hello World!'). 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. kata “Hello World” dapat dituliskan dengan perintah “disp”. menggunakan compiler-compiler yang antara lain: 1. Oleh karena itu digunakan uses wincrt dalam source code Pascal di atas.

secara otomatis bilangan tersebut diinisialisasi menjadi bilangan asli oleh Matlab meskipun sebelumnya bertindak sebagai bilangan integer.i). writeln('Hasil'). begin write('Masukkan bilangan bulat : '). maka ketika di-input-kan harus ditulis dengan 2. Input Pascal program input. writeln('Bilangan Asli: '. dan pemberian perintah input ini bersifat optional. terhadap variabel yang mempunyai fungsi sebagai variabel input.7f'. kebanyakan data yang digunakan sebagai variabel input adalah berupa angka. disp(sprintf('Bilangan Bulat : %d'. Sedangkan untuk Python.readln. disp('Hasil: ').i)). Satu kelebihan Matlab. secara otomatis Python akan menginisialisasikan angka 2 tersebut sebagai bilangan asli. Contoh source code-nya seperti: Kode program 2. Sedangkan kode program input pada baris akhir diperlukan agar aplikasi tidak langsung tertutup saat program telah selesai menjalankan perintah-perintah sebelumnya. Read atau Input Perintah ini digunakan untuk memasukkan suatu nilai atau karakter ke variabel dalam kode program.r:5:5).0.MODUL PRAKTIKUM FISIKA KOMPUTASI b. Misalnya jika angka 2 adalah sebagai input bilangan asli. di mana input angka di atas dapat berupa bilangan bulat (integer) atau asli (real). var i:integer. Dalam praktikum ini. dan begitu juga cara menampilkannya. write('Press any key. disp(sprintf('Bilangan Asli : %. Misalnya ketika bilangan bulat diperlukan menjadi bilangan asli. writeln('Bilangan Bulat: '. JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 7 .. end. input('Press any key.'). uses wincrt. write('Masukkan bilangan asli/desimal: '). readln(r).i print "Bilangan asli : ".r input("Press any key. r:real.. '). Python i=input("Masukkan bilangan bulat : ") r=input("Masukkan bilangan asli/desimal : ") print "Hasil: " print "Bilangan bulat : ". readln(i). caranya adalah dengan masukkannya dalam bentuk angka desimal.") Matlab i=input('Masukkan bilangan bulat : '). teknik untuk membedakan antara bilangan bulat dan asli pada angka yang akan dimasukkan. Matlab tidak memerlukan inisialisasi variabel seperti di Pascal dan Python di atas.i)). Kode program Pascal di atas menunjukkan teknik inisialisasi type data yang berbeda..

Perpangkatan Pascal program xpangkaty. hasil:=1. begin write('x = '). Sedangkan perintah while digunakan jika tahap perulangannya berupa bilangan asli. Python x=input('x = ') y=input('y = ') hasil=1 for i in range(y): hasil*=x print "x^y = ".readln(y).i.MODUL PRAKTIKUM FISIKA KOMPUTASI c. uses wincrt. Perintah perulangan yang dapat digunakan adalah perintah for dan while.y. hasil=1. write('x^y = '.readln(x).hasil). Looping for atau while Pendekatan numerik sering kali melakukan perulangan dalam perhitungannya.hasil Matlab x=input('x = '). end. end disp(sprintf('Hasil = %d'. var x. y=input('y = '). write('y = ').hasil:integer. Perintah for digunakan jika tahap perulangannya berupa bilangan bulat. Perintah for: Kode program 3.hasil)). Berikut contoh penggunaan perintah for dan while untuk menghitung xy dan mengetahui angka terkecil yang dapat dihitung oleh prosesor. for i=1:y hasil=hasil*x. 8 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 . for i:=1 to y do hasil:=hasil*x.

hasil)). hasil=1+angka. disp(sprintf('%3d i=i+1. Kondisi “<>” dalam contoh perulangan while di atas. var i:integer. hasil=0. Presisi mesin Pascal program presisimesin. Python i=1 angka=2. angka:=2. end. Berikut contoh penggunaan perintah tersebut. end. Selama ditambahkan dengan nilai “angka”. i:=i+1. writeln(i:3. meskipun mempunyai fungsi yang sama. nilai “angka” tersebut merupakan nilai terkecil yang dapat dihitung oleh prosesor.hasil i+=1 Matlab i=1.hasil:20:20). end.0 hasil=0 while hasil!=1 : angka/=9 hasil=1+angka print i. Perintah yang memerlukan kondisi ini adalah perintah if. nilai “angka” sebelum perulangan berakhir. prosesor komputer masih dapat membedakan nilai tersebut sebagai angka yang berbeda dengan selisih yang kecil.16f'.hasil:real.i. angka. yang digunakan untuk mencari akar dari fungsi f(x)=x2-4*x-5. maka perhitungan nilai “angka” akan dilanjutkan ke nilai berikutnya. Kondisi if Ekspresi kondisi terdiri dari berbagai macam. Sedangkan ketika nilainya telah dianggap sama. berfungsi menunjukkan keadaan bahwa selama hasil nilainya tidak sama dengan 1. %. uses wincrt. berbeda pula operator pembanding yang digunakan. d. begin i:=1. nilai hasil tidak sama dengan 1. hasil:=0. Kondisi “<>” di Python dituliskan dengan “!=” dan di Matlab dengan “~=”. hasil:=1+angka. while hasil<>1 do begin angka:=angka/9. JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 9 . while (hasil~=1) angka=angka/9.MODUL PRAKTIKUM FISIKA KOMPUTASI Perintah while: Kode program 4. Untuk bahasa pemrograman yang berbeda. angka=2.

5*(xp+x1). end.n=50.x1. if p=y then i:=n. Akar fungsi Pascal program akarfungsi.5*(xp+x1) y=x*x-4*x-5 print "{0:f} {1:f}".' '. if (p*y)>0 xp=x. if (p*y)<0 then x1:=x. writeln('x':5.x1:=15. if (p*y)>0 then xp:=x.10f'. disp(sprintf('x y')). end.10f %.x Matlab xp=0. p:=x*x-4*x-5.n:=20. disp(sprintf('%. y=x*x-4*x-5. uses wincrt.'y':10). end if (p==y) break. x1=15. writeln('x mendekati '.n:integer.format(x.y.10f'. writeln(x:8:7. for i:=0 to n do begin x:=0. i. begin xp:=0. y:=x*x-4*x-5.x:6:5).xp.y:8:7).' '.format("x".y) if (p*y)>0: xp=x if (p*y)<0: x1=x if (p==y): break print "x mendekati ". var x. p=xp*xp-4*xp-5. end if (p*y)<0 x1=x."y") for i in range(n): x=0. end end disp(sprintf('x mendekati %. 10 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 .p:real. for i=0:n x=0.5*(xp+x1).MODUL PRAKTIKUM FISIKA KOMPUTASI Kode program 5.x.x)). Python xp=0 x1=15 n=20 p=xp*xp-4*xp-5 print "{0:10} {1:10}". writeln.y)).

y) digunakan untuk menampilkan nilai x dan y sebagai jenis bilangan float. writeln('Luas bola1 = '. Metode ini akan dijelaskan pada bab selanjutnya dan merupakan bagian pokok bahasan pencarian akar persamaan polinomial.bola2:8:7. Membuat fungsi Seringkali jika dilakukan perlakuan yang sama terhadap suatu data. bola2=luasbola(0.' sat'). Penggunaan fungsi Pascal program fungsi.bola1)). bola2:=luasbola(0. begin bola1:=luasbola(5). Namun di Matlab. end. Contoh penggunaan fungsi tersebut adalah: Kode program 6. lebih mudah untuk meringkasnya ke perintah-perintah yang diperlukan ke dalam suatu fungsi. jika diperlukan lebih dari satu command yang terdapat dalam fungsi.5).7f'.MODUL PRAKTIKUM FISIKA KOMPUTASI Metode numerik yang digunakan untuk mendekati nilai akar parsamaan y=x -4x-5 di atas adalah metode setengah selisih. end.5) print "Luas bola1 = {:f}". apakah keduanya positif atau negatif.format(bola1) print "Luas bola2 = {:f}". Python def luasbola(r): return ((22/7)*r) bola1=luasbola(5) bola2=luasbola(0. disp(sprintf('Luas bola2 = %.bola2)).7f'. digunakan untuk mengetahui apakah kedua nilai p dan y berbeda tanda. namun kode program Matlab sedikit lebih panjang. bola1=luasbola(5). Bentuk "{0:f} {1:f}".5).bola1:8:7. writeln('Luas bola2 = '.format(bola2) Matlab luasbola=@(r)((22/7)*r). Sama seperti contoh program sebelumnya. disp(sprintf('Luas bola1 = %. aturan pendeklarasiannya. uses wincrt. sama dengan Python.format(x.' sat'). Sedangkan pada Matlab.bola2:real. 2 e. Python memiliki kode program yang lebih sederhana dibandingkan Pascal. Pemakaian perintah if di atas. perintah yang digunakan untuk menghentikan perulangan perintah for. var bola1. Contoh: JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 11 . Sedangkan perintah break. begin luasbola:=(22/7)*r. function luasbola(r:real):real. fungsi tersebut harus disimpan dalam file lain yang berada satu direktori dan disimpan dengan nama file yang sama dengan nama fungsi itu sendiri.

y:10:7).. '. f.7f'..m function output=luasbola(r) output=((22/7)*r)." 12 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 . Output to File Untuk memudahkan dalam menganalisa hasil program. x:=0. disp(sprintf('Luas bola2 = %.txt". write('Done.format(x. disp(sprintf('Luas bola1 = %.') end. writeln(fp. var x. Output to file Pascal program kefile.txt').bola2)).x:10:7. begin assign(fp.'data. data hasil perhitungan biasanya disimpan dalam sebuah file. uses wincrt.' x:=x+0.25 fp.MODUL PRAKTIKUM FISIKA KOMPUTASI Matlab %file luasbola. close(fp). Selain itu. bola2=luasbola(0. x=0 while x<50: y=x*x-4*x-5. di mana kompiler yang digunakan tidak memiliki fungsi plotter-nya.y:real.close() print "Done. fp. while x<50 do begin y:=x*x-4*x-5.7f'. Contoh kode program untuk penyimpanan data ini adalah: Kode program 7.25.m bola1=luasbola(5). end."w").write("{:f} {:f}\n". end %file main.5). metode penyimpanan ini dapat digunakan jika diperlukan untuk memplot hasil perhitungan ke dalam bentuk grafik.y)) x+=0. fp:text.bola1)). Python fp=open("data. rewrite(fp).

1.2 juga menunjukkan contoh kode program Pascal Kode program 7 digunakan sebagai kode program yang akan di-compile.'%f %f\n'.1.1 File data hasil perhitungan 1.x.'w').6. JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 13 . Maka akan ditampilkan sub form baru yang digunakan untuk menuliskan kode program. Kode program di atas digunakan untuk menghitung persamaan dengan x mulai sama dengan 0 sampai <50 dengan ∆x=0.y). Gambar 1. x=x+0. Gambar 1.5 Tampilan aplikasi compiler TPW adalah sebagaimana Gambar 1. disp('Done. end fclose(fp).txt'. pilih menu FileNew.txt‟ seperti diilustrasikan Gambar 1.MODUL PRAKTIKUM FISIKA KOMPUTASI Matlab fp=fopen('data.. Turbo Pascal for Windows (TPW) 1. Compiling Kode Program 1. fprintf(fp. Untuk menulis kode program. x=0. while (x<50) y=x*x-4*x-5.1.').25.25.6. Hasil perhitungannya disimpan dalam bentuk file „data.

3. 14 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 . Jika ketika running program tidak terdapat error. Sedangkan untuk menjalankannya atau melihat hasil output dari program yang kita buat. pilih menu CompileCompile. pilih menu RunRun. namun keadaan ini belum tentu menunjukkan tidak adanya error ketika program dijalankan.MODUL PRAKTIKUM FISIKA KOMPUTASI Gambar 1. dapat dipastikan aplikasi program yang kita buat dapat berjalan dengan baik. Jika succesfully complete berarti tidak ada kesalahan dalam penulisan kode program. Di sini kode program akan dicek apakah terdapat kesalahan dalam penulisan. maka program akan berjalan sebagaimana ilustrasi Gambar 1.2 Tampilan Turbo Pascal for Windows (TPW) Untuk meng-compile-nya.

2. untuk teknik seperti yang dilakukan pada kode program Pascal di atas adalah sebagaimana berikut: Buka aplikasi Python shell. Python 2. yang mana menggunakan Kode program 7 Python sebagai kode program yang akan di compile. JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 15 . selanjutnya akan terbuka editor file untuk membuat module yang baru.MODUL PRAKTIKUM FISIKA KOMPUTASI Gambar 1. kemudian pilih menu New Window.4.6. Langkah-langkah tersebut diilustrasikan sebagaimana Gambar 1.3 Running program output ke file Pascal 1. Dengan module ini memungkinkan agar kode program yang dibuat dapat disimpan dan tidak perlu mengulang kembali dari awal seperti jika menggunakan Python Shell.7x Cara meng-compile program Python.

5. maka program akan dijalankan yang diilustrasikan sebagaimana Gambar 1.4 Tampilan editor Python shell Untuk menjalankannya. Setelah itu pilih menu Run-Run Module. kode program harus disimpan dahulu dengan memilih menu save dan ditentukan sembarang nama pada module tersebut dengan ketentuan ber-ekstensi „.5 Tampilan editor Python shell 16 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 .MODUL PRAKTIKUM FISIKA KOMPUTASI Gambar 1. Gambar 1.py‟.

Karena dalam praktikum ini compiler Pascal yang digunakan tidak memiliki library untuk plotting sendiri. Gambar 1. salah satunya dengan menggunakan fungsi yang telah disediakan dalam library compiler itu sendiri. MATLAB 7. di sini akan ditunjukkan 2 teknik manual plotting grafik dengan aplikasi GNUPLOT dan Microsoft Excel.1 yang memiliki Command Windows yang fungsinya hampir sama dengan Phython Shell pada compiler Python 2. GNUPLOT. sedangkan pada umumnya compiler Pascal dan Python tidak memilikinya.MODUL PRAKTIKUM FISIKA KOMPUTASI 1. Gambar 1.6 Tampilan user interface Matlab 7. Plotting Data Plotting data dapat dilakukan dengan berbagai cara. dan hasil compilasinya akan ditampilkan di Command Windows. Untuk menjalankannya.6.7x.3.0. seperti aplikasi khusus pembuat plot.1 Gambar 1. baik 2D maupun 3D. klik kanan file yang berisi kode program yang akan dijalankan. Matlab telah memiliki fungsi plotter sendiri. Agar dalam penulisan kode program lebih mudah untuk dimodifikasi. yang JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 17 .0.6 juga mengilustrasikan Kode Program 7 sebagai kode program yang akan di-compile.0. pilih Run. Di samping itu. plotting data dapat juga dengan menggunakan aplikasi plotter lain.6 merupakan contoh tampilan interface Matlab 7. Cara membuat M-File adalah dengan memilih menu FileNewM-File dan akan muncul kotak editor yang merupakan tempat yang digunakan untuk menulis kode program Matlab. kode program Matlab dapat ditulis terlebih dahulu ke file yang disebut dengan M-Files.1 1.7.

txt‟ yang dapat dilihat pada Address bar windows sebagaimana ilustrasi Gambar 1. 1. Tampilan aplikasi ini seperti ditunjukkan pada Gambar 1.8.MODUL PRAKTIKUM FISIKA KOMPUTASI mana dari kedua teknik tersebut diharapkan praktikan dapat mengetahui dasar-dasar dalam membuat grafik.1. Gambar 1.1 diplotkan dengan GNUPLOT.8 Contoh alamat file „data. Contoh penggunaan GNUPLOT untuk membuat grafik 2D dari data hasil running program adalah sebagaimana berikut: Jika data hasil perhitungan Gambar 1. di mana plot grafik dari file tersebut ditunjukkan pada Gambar 1.txt‟ merupakan contoh alamat dari file „data.txt‟ 18 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 . yang cara menggunakannya hampir sama dengan Python shell.7 Aplikasi GNUPLOT Gambar 1.9.7.7. Plotting GNUPLOT GNUPLOT merupakan aplikasi program interface yang digunakan untuk membuat grafik dari suatu urutan data. perintah yang digunakan adalah: Alamat „e:\data\master\lawas\tpw\data.

Excel 2007) Pilih menu Open.txt‟ terdapat beberapa langkah sebagaimana diuraikan berikut: Buka aplikasi Microsoft Excel (di sini digunakan Ms. caranya adalah seperti membuat grafik pada data Excel biasanya. cari folder yang berisi file „data.10 Kotak dialog open „data.txt‟ Klik open maka akan muncul kotak dialog Text Import Wizard seperti ditunjukkan Gambar 1. (Gambar 1.txt‟ dengan Microsoft Excel. JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 19 . Plotting Microsoft Excel Untuk plotting file „data.7.10) Gambar 1.txt‟ dan seleksi file dengan memilih File Type: Text File.2.MODUL PRAKTIKUM FISIKA KOMPUTASI Gambar 1. Perbedaannya adalah ketika membuka file „data.txt‟ 1.11.9 Tampilan hasil plotting file „data.

11 Kotak dialog Text Import Wizard file „data. 20 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 .MODUL PRAKTIKUM FISIKA KOMPUTASI Gambar 1.13).12 Kotak dialog Text Import Wizard file „data. Data masukan tersebut secara otomatis akan diatur pada kolom-kolom yang telah tersedia oleh Microsoft Excel (Gambar 1.txt‟ step 2 Jika data telah terbagi seperti pada Gambar 1.txt‟ step 1 Pilih radio option: Fixed width lalu tekan Next.12.txt‟. dan pastikan pada Data Preview data telah terbagi menjadi dua Gambar 1. selanjutnya dapat ditekan tombol Next atau langsung menekan tombol Finish jika tidak diperlukan untuk mengubah format data dari file „data.

14) Gambar 1.txt‟ dengan Ms. Excel Kemudian untuk memplotkan data-data yang telah dimasukkan diatas. pilih menu InsertScatterScatter with Smooth Lines (Gambar 1.MODUL PRAKTIKUM FISIKA KOMPUTASI Gambar 1.13 Tampilan hasil open file „data. seleksi semua data tersebut.14 Langkah-langkah plotting scatter JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 21 .

sampai dihasilkan plot grafik sebagaimana Gambar 1.15.15 Grafik hasil plotting „data. atau buatlah program serupa dengan bahasa pemrograman yang anda kuasai.txt‟ Tugas 1. dan selanjutnya grafik dapat dimodifikasi sesuai dengan kebutuhan.9 atau 1. Analisa output dari Kode program 4! 22 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 .MODUL PRAKTIKUM FISIKA KOMPUTASI Hasil tampilan plotting grafiknya adalah sebagaimana Gambar 1. Jalankan Kode program 1-7.15! 2. Gambar 1.

MODUL PRAKTIKUM FISIKA KOMPUTASI 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. dan 5 agar nilai error pendekatannya mendekati atau sama dengan 0? x JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 23 . dengan deret Taylor di atas. Secara matematis deret Taylor dinotasikan: (2) Jika f(x)=e . 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. deret pendekatannya adalah: (4) (5) Problem Kemampuan komputer impossible untuk melakukan kalkulasi sampai deret tak hingga. dengan mengambil nilai a=0. Oleh karena itu solusi persamaan 3. 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. 4. 4. Pertanyaannya adalah berapakah nilai n dari masing-masing persamaan 3.

Implementasi Kode Program Kode program 8. end. pangkat:=hasil. writeln(i). 24 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 . Eksponen Pascal program exponen.i). begin hasil:=1. writeln('e^x = '.readln(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. factorial:=hasil. for i:=1 to m do hasil:=hasil*i. var e. write('n = ').b:integer.e:12:11). var i. function pangkat(x:real. i.x:real.MODUL PRAKTIKUM FISIKA KOMPUTASI Project I a. Pseudocode Pseudocode 1. i:integer. c.n. end. end. e:=1. Alur kode program eksponen Input x. for i:=1 to y do hasil:=hasil*x. Tujuan Mengetahui nilai error dari pendekatan numerik suatu deret tak hingga berdasarkan model matematis dan kemampuan komputer yang digunakan. b. function factorial(m:integer):integer. begin write('x = '). b:=factorial(i). end. uses wincrt.readln(n).hasil:integer. begin hasil:=1.y:integer):real. var hasil:real. for i:=1 to n do begin a:=pangkat(x.a. e:=e+(a/b).

Tugas 1.format(e) Matlab %file faktorial. e=1. e=e+(a/b).718281828459045). atau buat kode program sendiri sesuai Pseudocode 1 dengan bahasa pemrograman yang anda kuasai! 2. for i=1:n a=x^i. tunjukkan yang disebut dengan Truncate Error? JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 25 . b=faktorial(i). AMD X2 4800+.10f'. n=input('n = '). Penjabaran fungsi factorial sebagai fungsi di atas. sebenarnya telah disediakan dalam module math di Python dan di Matlab itu sendiri. end %file eksponen.0 for i in range(1.MODUL PRAKTIKUM FISIKA KOMPUTASI Python def factorial(m): hasil=1 for j in range(1. end output=hasil. Tentukan nilai n terbaik dan bandingkan antara keduanya.e)). Fungsi matematika seperti perpangkatan dan factorial. Dari salah satu program di atas (sesuai yang anda kerjakan). Sertakan juga spesifikasi komputer yang anda digunakan (mis. d. Perlu diperhatikan masukan untuk variabel x berupa bilangan asli. dsb)! 3.m function output=faktorial(m) hasil=1. for j=1:m hasil=hasil*j.m x=input('x = '). end disp(sprintf('e^x = %.(n+1)): a=x**i. P4 1800 MHz.(m+1)): hasil*=j return hasil x=input("x = ") n=input("n = ") e=1. dan juga dengan membandingkan dengan nilai ex dari literatur yang lain (mis. dalam praktikum ini dimaksudkan untuk memberikan contoh bagaimana cara kerja sebenarnya yang dilakukan komputer untuk menyelesaikan problem perpangkatan dan factorial tersebut. b=factorial(i) e+=(a/b) print "e^x = {}". e1= 2. Salin dan compile kedua kode program.

hanyalah deret yang berindeks n/suku ganjil. Pseudocode Pseudocode 2. b. i mod 2 berfungsi agar suku-suku deret yang diambil. 26 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 . Alur kode program sinus Input x. Tujuan Mengetahui kelemahan dari model numerik deret tak hingga. 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.MODUL PRAKTIKUM FISIKA KOMPUTASI Project II a.

s)). begin hasil:=1. Python import math x=input("x = ") n=input("n = ") s=x c=-1 for i in range(2. b=math. Deret sinus Pascal program sinus.a. for i:=1 to y do hasil:=hasil*x. c=-1. function factorial(m:integer):integer. for i:=1 to m do hasil:=hasil*i. function pangkat(x:real. write('n = ').(n+1)): if (i%2)==1: a=x**i.readln(n).s:11:10). Implementasi Kode Program Kode program 9. var i.hasil:integer. s:=s+c*(a/b). JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 27 .c:real.factorial(i) s+=c*(a/b) c*=-1 print "sin x = {}". end end disp(sprintf('sin x = %. end. pangkat:=hasil. c:=-1*c.y:integer):real . factorial:=hasil.i). end.x. uses wincrt. begin write('x = '). i:integer. b=factorial(i). var hasil:real.format(s) Matlab %file sinus. n=input('n = '). c:=-1. b:=factorial(i). s=s+c*(a/b).n. var s. writeln('sin x = '. for i:=2 to n do begin if ((i mod 2)=1) then begin a:=pangkat(x. end. for i=2:n if (mod(i.10f'.MODUL PRAKTIKUM FISIKA KOMPUTASI c. i. s=x. s:=x. c=-1*c.m x=input('x = ').readln(x). begin hasil:=1.2)==1) a=x^i.b:integer. end. end.

d. Tugas 4.MODUL PRAKTIKUM FISIKA KOMPUTASI Kode program Python di atas. Sedangkan pada program Matlab di atas. Bandingkan hasil pendekatan nilai sin x di atas dengan literatur yang anda ketahui (sebutkan sumbernya) dengan nilai x ≥ 1! 5. Buat pseudocode beserta kode program untuk menyelesaikan persamaan 5 (sesuai bahasa pemrograman yang anda kuasai)! 28 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 . Bandingkan dan analisa hasil pendekatan kedua kode program di atas! Jika ada tunjukkan kelemahan dari pemodelan nilai sin x tersebut! 6. ditunjukkan bagaimana cara menghitung factorial menggunakan module math yang sudah ada pada compiler Python umumnya. langsung menggunakan fungsi factorial yang sudah ada pada Matlab.

f(x) xi-1 xi+1 xi x Gambar 3.MODUL PRAKTIKUM FISIKA KOMPUTASI PRACTICE III AKAR-AKAR POLINOMIAL Teori Bentuk persamaan polinomial untuk orde ≤ n adalah: (6) dengan nilai koefisien a0. Ide metode setengah selisih adalah mencari nilai xi+1 yang nilai f(xi) mendekati nol berdasarkan nilai f(xi) dan f(xi-1). JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 29 . Akar-akar persamaannya dapat diketahui dengan beberapa metode seperti metode setengah selisih (biseksi).1 dan nilai xi dan xi-1-nya harus menghasilkan nilai f(xi) dan f(xi-1) yang berbeda tanda. an tertentu. Ilustrasi pendekatan ini sebagaimana Gambar 3. a1. namun metode ini mengambil perbandingan segitiga yang terbentuk dari xi dan xi-1. Ilustrasi pendekatan ini seperti Gambar 3. dan lain sebagainya. Tekniknya hampir sama dengan metode setengah selisih. Newton-Raphson. …. metode Secant.1 Metode setengah selisih Metode lain yang serupa dengan metode selisih setengah adalah metode Secant.2.

yang mana untuk mendekati nilai xi+1 persamaan yang digunakan adalah: (7) Problem Kode program 5 merupakan contoh pancarian akar dari persamaan polinomial orde 2.x1. atau disebut juga metode Newton-Raphson menggunakan pemotongan deret Taylor pada suku ketiga. Pseudocode Pseudocode 3. n for i=0 to n do x2=0.2 Metode setengah selisih Sedangkan untuk metode Newton. tetapi bagaimana jika persamaan polinomialnya memiliki orde >2 atau akar-akarnya merupakan bilangan asli? Project III a. b. Tujuan Menentukan akar-akar pada persamaan polinomial orde banyak.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 . Pencarian akar untuk orde <=2 dan akar-akarnya berupa bilangan bulat. mungkin tidak akan menjadi masalah jika dilakukan secara analitis.MODUL PRAKTIKUM FISIKA KOMPUTASI f(x) xi+1 xi-1 xi x Gambar 3. Alur pencarian akar dengan metode setengah selisih Input x0.

function f(x:real):real.' '. f1=f2 end for print x2 c.x2. for i:=0 to n do begin if((f1-f0)<>0)then x2:=x1-(f1*(x1-x0))/(f1-f0) else begin writeln('Stoped. JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 31 . write('x1 = ').f0:=f1. x0:=x1. i:=n end. end. end. i. end.MODUL PRAKTIKUM FISIKA KOMPUTASI Pseudocode 4. var x0.readln(x1). Alur kode program pencarian akar dengan metode Secant Input x0. begin f:=x*x*x*x-31*x*x*x+230*x*x-452*x-144.x2:11:10. Implemetasi metode Secant Pascal program secant. f1:=f(x1). x1=x2 f0=f1.f2:real. implementasi kode program untuk mencari nilai akarakar persamaannya adalah: Kode program 10. begin write('x0 = ').').f2:11:10).x1.f0.readln(n). uses wincrt.readln(x0).n:integer. f0:=f(x0).f1. x1:=x2. f2:=f(x2).' '..x1.f1:=f2. writeln(i. Implementasi Kode program Dimisalkan terdapat persamaan polinomial: (8) Menggunakan metode Secant. n f0=f(x0) f1=f(x1) for i=0 to n do Hitung f2=f(x2) x0=x1. write('n = ').

f1 x1. disp(sprintf('%f %f'. break." break f2=f(x2) x0. end f2=f(x2).'). x0=input('x0 = ').MODUL PRAKTIKUM FISIKA KOMPUTASI 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.f2 print "{:. n=input('n = '). for i=0:n if((f1-f0)~=0) x2=x1-(f1*(x1-x0))/(f1-f0).f2)). f0=f(x0).10f}".f0=f1.10f} {:.f2).format(x2.f1=x2.f1=f2. else disp('Break.f0=x1. x0=x1.. Matlab f=@(x)x*x*x*x-31*x*x*x+230*x*x-452*x-144. x1=x2. f1=f(x1). x1=input('x1 = ').. end 32 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 .x2.

Tugas 1. 3 termasuk metode tersebut? 5. Buatlah grafik hubungan f(x) dan x untuk persamaan 8. berdasarkan contoh pembuatan grafik Gambar 1.15! 2.9 atau 1. Tentukan nilai keempat akar-akar persamaan 8 dengan kode program yang anda pakai atau yang anda buat. Modifikasi Kode program 5. Apa yang dimaksud dengan Bracketing Method? Jelaskan apakah yang anda lakukan pada soal no. 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. serta bandingkan jumlah iterasi yang diperlukan antara kedua metode tersebut! 4. Bandingkan teknik penentuan nilai awal x0 dan x1 untuk mendekati salah satu nilai akar antara metode setengah selisih dan metode Secant. yang mengacu pada grafik soal no. 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 . 1! 6.MODUL PRAKTIKUM FISIKA KOMPUTASI d.

MODUL PRAKTIKUM FISIKA KOMPUTASI 34 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 .

x3.1. 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. Dalam persamaan linier.  Untuk baris mulai 2 sampai m. mulai kolom 1 sampai n+1 dengan c11 agar nilai c11 bernilai 1. dan lain sebagainya. seperti dimisalkan terdapat problem matematis dengan elemen-elemen matriks m x n sebagaimana Gambar 4. x2. . yang dikalikan dengan cm1 agar nilai cm1 bernilai nol. sering kali persamaan-persamaan yang menjadi problem matematik digenerate dalam bentuk matriks untuk mencari solusi penyelesaiannya..1 Operasi aritmatika matriks m x n Rubah matrik a dan b ke bentuk matrik c. JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 35 . perbaharui nilai mulai kolom 1 sampai n+1 dengan mengurangi c1n yang baru diperbaharui. eliminasi Gauss-Jordan. agar lebih mudah. Contoh metode numerik yang berbasis matriks antara lain: decomposisi LU. Penyelesaian eliminasi Gauss-Jordan. untuk mencari nilai x1. xm langkah-langkahnya adalah sebagaimana berikut: Gambar 4. Tridiagonal matriks..MODUL PRAKTIKUM FISIKA KOMPUTASI PRACTICE IV SOLUSI MATRIKS PERSAMAAN LINIER Teori Data dalam bentuk matriks sering kali digunakan dalam perhitungan numerik.

perbaharui nilai mulai kolom 2 sampai n+1 dengan mengurangi c2n yang baru diperbaharui. Setelah itu. maka kalkulasi dilakukan pada indeks matriks m≥2 dan n≥2. 36 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 . Dilanjutkan pada baris ketiga dan seterusnya sampai m dengan cara yang sama. namun hanya digunakan untuk menghitung agar nilai elemen matriks bagian atas dari diagonal bernilai nol.MODUL PRAKTIKUM FISIKA KOMPUTASI Dilanjutkan pada baris kedua:  Karena pada kolom pertama telah bernilai 0. mulai baris kedua sampai ke-m.  Untuk baris mulai 3 sampai m. dengan memperbaharui semua nilai pada baris kedua. teknik yang dilakukan pada baris satu sampai m di atas dibalik. dibagi dengan c22 sampai kolom ke n+1. yang dikalikan dengan cm2 agar nilai cm2 bernilai nol. sampai didapatkan nilai diagonal matriknya bernilai 1 dan elemen matriks bagian bawah diagonalnya bernilai nol.

…. cmn+1 merupakan solusi yang tidak lain adalah nilai x1. b. Pseudocode Pseudocode 5. c2n+1. memiliki notasi sendiri untuk mengenerate matriks.j]*p. x3. perkalian. Namun bagaimana jika perhitungan numerik membutuhkan operasi matematik atau implementasi numerik yang tidak disediakan dalam library aplikasi tersebut? Project IV a..j]*p end for end for end for for k=m downto 1 do for i=k-1 downto 1 do p=c[i. pengurangan.k] for j=k to (n+1) do c[i.k] for j=k to (n+1) do c[k. bahkan untuk mengetahui nilai invers-nya. Alur kode program implementasi eliminasi Gauss-Jordan Set matriks a.k] for j=(m+1) downto 1 do c[i.j]/p end for for i=k+1 to m do p=c[i.j]-c[k. xm. Problem Aplikasi program interface seperti Matlab. . Maple.j]=c[i.j]=c[i. Tujuan Menentukan solusi numerik berdasarkan bentuk matriks suatu persamaan linier. x2. c3n+1. end for end for end for print c.MODUL PRAKTIKUM FISIKA KOMPUTASI Nilai c1n+1.j]=c[k. yang mana dengan aturan notasi tersebut operasi aritmatika matriks seperti penambahan..b Generate matriks c for k=1 to m do p=c[k.x JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 37 . telah disediakan dalam library dan tinggal memanggilnya saja. Langkah-langkah di atas disederhanakan dalam Pseudocode 5.j]-c[k. Octave dan Enthought Python.

a[2.2]:=5. uses wincrt.2]:=3.. const m=3. n=m. x2...a[3. end.m] of real.j]-c[k. p:real.1.d:Array[1. for i:=1 to n do c[i.n+1]:7:6.3]:=-5. writeln end. Implemetasi untuk metode eliminasi Gauss-Jordan Pascal program GaussJordan.2]:=-5.' '). end. var a:Array[1.j].MODUL PRAKTIKUM FISIKA KOMPUTASI c.j]-c[k.1]:=8.3]:=3. 38 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 .n] of real.' ').j]:=c[i.j]:=c[k. Implementasi Kode Program Dimisalkan terdapat suatu persamaan linier yang disusun dalam bentuk matriks sebagaimana berikut: Gambar 4. for j:=k to (n+1) do c[i.2 Problem matriks 3 x 3 Untuk mencari nilai x1. for k:=m downto 1 do begin for i:=k-1 downto 1 do begin p:=c[i.a[2. {*tampilkan matriks c*} for i:=1 to m do begin for j:=1 to n+1 do write(c[i.j:integer. {*inisialisai matriks c*} for i:=1 to m do for j:=1 to n do c[i. end. implementasi kode programnya adalah: Kode program 11.m..(n+1)] of real.j. {*Proses eliminasi*} for k:=1 to m do begin p:=c[k.m.a[2. c:Array[1.' = '.k].a[1. for i:=k+1 to m do begin p:=c[i. writeln.k].j]:=c[i. for j:=(m+1) downto 1 do c[i. a[3.1]:=2.j]*p.k]. begin a[1.j]:7:6.a[3.3]:=7.j]*p.c[j.a[1.b[3]:=-18.b[2]:=38.j]/p..j]:=a[i.1. b[1]:=24. end. for j:=1 to n do writeln('x'.i. for j:=k to (n+1) do c[k. b. dan x3 dengan metode eliminasi Gauss-Jordan. end. k.n+1]:=b[i].1]:=4. berdasarkan Pseudocode 5.

MODUL PRAKTIKUM FISIKA KOMPUTASI

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 KOMPUTASI

d. Tugas 1. Analisa Pseudocode 5! 2. Buat program (berdasarkan Pseudocode 5), atau modifikasi Kode program 11, untuk mencari x1, x2, x3,..,x10 problem matriks Gambar 4.3 dengan metode eliminasi Gauss-Jordan! Bandingkan dengan hasil perhitungan x1, 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 KOMPUTASI

PRACTICE V TRENDLINE
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) Problem 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

Pseudocode Pseudocode 6.MODUL PRAKTIKUM FISIKA KOMPUTASI Project V a.5π -1 2π 0 Untuk mengenerate fungsi yang melingkupinya. Alur kode program iterasi Gauss-Seidel Set m Inisialisasi f(x) dan x Inisialisasi n.5π 1 π 0 1. Sehingga berdasarkan jumlah data. fungsi f(x) dimisalkan sebagai persamaan polinomial. c.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. b. persamaan polinomial pemisalannya adalah: (12) Implementasi kode programnya: 42 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 . Tujuan Menentukan nilai error hasil pendekatan berdasarkan fungsi yang tergenerate. Implementasi Kode Program Dimisalkan terdapat deret data sebagaimana berikut: x f(x) 0 0 0. n jumlah orde polinomial perkiraan.

k). end. e:=sqrt(e/n).x[1]:=0. Implemetasi metode iterasi Gauss-Seidel Pascal program generate. begin kali:=1.e:11:10). i.m:integer.k). writeln('RMSE = '.f[3]:=-1.x[4]:=2*Pi. pangkat:=kali. for k:=0 to n do begin jum:=0.'*x^'. f[0]:=0.5] of real.5*Pi.2). const Pi=22/7. JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 43 . var kali:real.x[2]:=Pi.k.f[1]:=1. for i:=0 to n do jum:=jum+a[i]*pangkat(x[k].f[4]:=0. end. e:=e+pangkat((f[k]-jum). end.i). e:=0.n.l.n:=4. var x.f.5*Pi. begin m:=1000. end.e:real. for k:=0 to n do begin write(a[k]:7:6.MODUL PRAKTIKUM FISIKA KOMPUTASI Kode program 12. end. a[k]:=(f[k]-jum)/pangkat(x[k].f[2]:=0. jum. uses wincrt.n:integer):real.i).. write('f(x) = '). for i:=1 to n do kali:=kali*x. end. for l:=0 to m do begin for k:=0 to n do begin jum:=0. for k:=0 to n do a[k]:=0. for i:=0 to n do if i<>k then jum:=jum+a[i]*pangkat(x[k]. x[0]:=0. function pangkat(x:real.a:array[0. if k<>n then write('+'). x[3]:=1.

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.2*Pi] f=[0. i+=1 44 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 .append(0.i).0] a=[] for k in range(5): a.format(e) print "f(x)=".0. if i!=n : print "+". i=0 for k in a: print "{:f}*x^{}".1.0.sqrt(e/n) print "Error = {:f}".Pi.5*Pi.0.1.MODUL PRAKTIKUM FISIKA KOMPUTASI Python import math m=10 n=4 Pi=22/7 x=[0.5*Pi.0.0.format(k.-1.0.0.0.

atau kode program sesuai yang anda kerjakan. atau buat kode program sendiri sesuai bahasa pemrograman yang anda kuasai untuk mengenerate fungsi problem di atas. d.10f '. end a(k)=(f(k)-jum)/((x(k))^(k-1)). end end end e=0. a=[0 0 0 0 0]. Jalankan Kode program 12.e)).10f'. end e=e+(f(k)-jum)^2. variasi nilai m dan tunjukkan pengaruhnya terhadap hasil fungsi yang tergenerate! 2. end e=sqrt(e/n).n=5. disp(sprintf(' %. %error for k=1:n jum=0.a)). Jelaskan apa yang anda ketahui mengenai Trendline! Apa hubungannya dengan Practice V ini? 5. for l=1:m for k=1:n jum=0. Pi=22/7. for i=1:n jum=jum+a(i)*(x(k)^(i-1)).MODUL PRAKTIKUM FISIKA KOMPUTASI Matlab m=1000. dan buktikan bahwa fungsi f(x) sama dengan sin(x)! 3.5*Pi) Pi (1. Cari literatur mengenai iterasi Jacoby dan buatlah pseudocode untuk memodifikasi Kode program 12 dengan metode iterasi Jacoby! JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 45 . x=[0 (0. disp(sprintf('a = ')). Tugas 1. Buat grafik hubungan x dan f(x) berdasarkan fungsi polinomial yang tergenerate dari Kode program 12. Tunjukkan pengaruh/hubungan antara jumlah data dengan jumlah suku Polinomial yang diambil? 4. for i=1:n if i~=k jum=jum+a(i)*(x(k)^(i-1)).5*Pi) (2*Pi)]. disp(sprintf('Error = %. f=[0 1 0 -1 0].

MODUL PRAKTIKUM FISIKA KOMPUTASI 46 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 .

Metode ini terdiri dari metode beda maju (forward difference). beda mundur dan beda tengah di atas. Sedangkan untuk persamaan diferensiasi orde dua. metode yang digunakan merupakan perpaduan dari 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 . penurunan problem diferensiasi numerik dapat menggunakan metode finite difference.MODUL PRAKTIKUM FISIKA KOMPUTASI PRACTICE VI DIFERENSIASI NUMERIK Teori Dalam fisika. yang bentuk persamaannya adalah: (16) Problem Metode beda maju. 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.

MODUL PRAKTIKUM FISIKA KOMPUTASI Project VI a. akan didapatkan ilustrasi gerakan bola sebagaimana Gambar 6.10 0.90 13. set x Set f(x)i.05 0.10 0.n ---> backward difference ---> forward difference ---> central difference Di mana n jumlah data. b.40 4. Alur kode program perbandingan pendekatan beda maju.00 2.f(x)i]/∆x end for for i=1 to n-1 do cd(x)i=[f(x)i+1.21 0.70 13.30 0.1.00 0.90 7.f(x)i-1]/∆x end for for i=0 to n-1 do fd(x)i=[f(x)i+1.16 9.30 0.50 10. Untuk mengetahui kecepatan setiap t untuk arah y (vy) implementasi kode program untuk pendekatan nilai kecepatan dengan metode beda maju.15 0.00 0. sumbu x dan sumbu y dengan ∆t=0. mundur dan tengah. fd(x)i.60 12. cd(x)i.05 s adalah sebagai berikut: t (s) x (m) y (m) 0. Pseudocode Pseudocode 7.94 0. i=0.n for i=1 to n do bd(x)i=[f(x)i..20 0. Implementasi Kode Program Dimisalkan terdapat deret data hasil pengamatan gerak bola kasti dalam t. beda mundur dan beda tengah adalah: 48 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 .20 0.1 Ilustrasi gerak bola kasti Jika diplotkan berdasarkan letak posisi x dan y.25 0.30 0.80 0.f(x)i-1]/2∆x end for plot bd(x)i. Tujuan Menentukan nilai error dari masing-masing metode differensiasi numerik yang berbeda. c.20 0.49 0.39 Gambar 6.40 0. i=0.35 0..45 0.60 13.

16.'FD':10. close(fp).') end.21.' '.f[5]:=10. var dt. Pendekatan deferensiasi orde satu dengan beda maju. uses wincrt.MODUL PRAKTIKUM FISIKA KOMPUTASI Kode program 13.n] of real.' '. const n=9. t:=t+dt. f[9]:=13. fp:text.t:real. f[0]:=0. f[3]:=7. mundur dan tengah Pascal program difference. writeln(fp. begin assign(fp. JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 49 . {inisialisasi awal} for i:=0 to n do begin bd[i]:=f[i].94. dt:=0... end.cd:array[0.f[1]:=2.' '.9. {Forward difference} for i:=0 to n-1 do fd[i]:=(f[i+1]-f[i])/dt.bd[i]:10:7.cd[i]:=f[i].'BD':10.'CD':10). t:=0.'t ':3. f[6]:=12.39. {Central difference} for i:=1 to n-1 do cd[i]:=(f[i+1]-f[i-1])/(2*dt).6. {Backward difference} for i:=1 to n do bd[i]:=(f[i]-f[i-1])/dt.05.fd[i]:10:7. end.bd.49. i:integer.fd[i]:=f[i]. f.f[8]:=13.f[4]:=9.2.f[7]:=13.3.cd[i]:10:7). for i:=0 to n do begin writeln(fp.txt'). rewrite(fp).'data. write('Done.f[2]:=4.t:4:2.fd.

7.[] #inisialisasi awal for i in f: bd.append(i).bd[i].[].close() print "Done.write("{:9f} {:9f} {:9f} {:9f}\n".6.10.2."FD".dt=9.12.append(i).21.fd.cd[i])) t+=dt fp.4.13.append(i) #backward difference for i in range(1."CD")) for i in range(n+1): fp.fd[i]."w").9. n.9.cd.fd.05 f=[0.49."BD".16.39] bd.txt"..format(t.13.3.cd=[].94.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.2.0.13.MODUL PRAKTIKUM FISIKA KOMPUTASI Python fp=open("data.n): cd[i]=(f[i+1]-f[i-1])/(2*dt) t=0.write(" {:10} {:10} {:10} {:10}\n".0.format("t"." 50 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 .0 fp.

21 13.fd=[].39]. 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 . Jalankan Kode program 13. t=t+dt. bd=[]. Hitung secara analitik kecepatan arah sumbu y (vy) pada t=0. %inisialisasi awal bd=f.7f %2. end %forward difference for i=1:n-1 fd(i)=(f(i+1)-f(i))/dt.cd(i)).9 7.txt'.7f %2. for i=1:n fprintf(fp.10. 0..15. end fclose(fp).05..6 13.2 10.cd=[].2f %2.MODUL PRAKTIKUM FISIKA KOMPUTASI Matlab fp=fopen('data.90! 3. f=[0 2. d.cd=f.3 13.. 0. n=10.bd(i).'w'). mundur dan tengah.'%0.7f\n'.fd(i)..49 4. manakah hasilnya yang sesuai dengan perhitungan analitik? 4. disp('Done.0. 0.dt=0.fd=f.t.'t BD FD CD\n'). end %central difference for i=2:n-1 cd(i)=(f(i+1)-f(i-1))/(2*dt). end t=0. 0.94 12.'). Plot “data txt” dan bandingkan nilai kecepatan hasil pendekatan metode beda maju. Tugas 1.05. %backward difference for i=2:n bd(i)=(f(i)-f(i-1))/dt. fprintf(fp. 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.16 9.

MODUL PRAKTIKUM FISIKA KOMPUTASI 52 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 .

1. semakin kecil ∆x.1 Metode trapesium Sehingga solusi persamaan integrasi numeriknya adalah: . problem matematik yang sering ditemui dalam fisika adalah problem integrasi. Bagaimanakah pengaruh variasi ∆x terhadap nilai π? JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 53 . nilai error yang diharapkan akan semakin kecil. Oleh karena itu dengan metode trapesium dapat diilustrasikan ide integrasi numeriknya sebagaimana Gambar 7. Namun di sini akan dipelajari integrasi numerik dengan mengkhususkan pada metode trapesium. Gambar 7. Simpson dan Newton-Cotes. untuk menghitung luas suatu lingkaran dan karena lingkaran mempunyai jumlah sisi tak terhingga. Dalam matematik. Untuk pendekatan secara numerik terdapat berbagai metode seperti metode kotak. nilai π hanya dapat dicari dengan pendekatan numerik. Secara umum integrasi dapat merupakan luasan yang berada di bawah fungsi. f(x)<f(x+∆x) Problem (17) Teknik untuk memperkecil nilai error untuk metode trapesium adalah dengan memperkecil ∆x.MODUL PRAKTIKUM FISIKA KOMPUTASI PRACTICE VII INTEGRASI NUMERIK Teori Selain bentuk diferensiasi. trapesium.

end. f2:=y(r. i. Pseudocode Pseudocode 8.b. f1:=y(r. Implementasi Kode Program Kode program 14. writeln('Pi = '. Integrasi numerik dengan metode trapesium Pascal program nilaiPi. begin y:=sqrt(r*r-x*x).r. n:=90.b:=r. for i:=1 to n do begin x:=x+dx. sum:=sum+0. b.5*dx*(f1+f2). f1:=f2. begin r:=5. 54 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 .n:integer.dx:7:6).x). x:=a.n). uses wincrt.sum. sum:=0. writeln('n = '. dx:=(b-a)/n. function y(r:real. Alur kode program metode trapesium Set a.5dx(f1+f2) f1=f2 end while print sum di mana n jumlah trapesium.b.f1.x:real):real.x).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. Tujuan Menggunakan integrasi numerik untuk memprediksi nilai suatu konstanta.(4*sum):7:6). var a. end. writeln('Luas O = '. writeln('dx = '.MODUL PRAKTIKUM FISIKA KOMPUTASI Project VII a.((4*sum)/(r*r)):7:6). semakin banyak jumlah trapesium semakin kecil ∆xnya c.a:=0.f2:real. end.x.dx.

atau buatlah kode program sendiri sesuai bahasa pemrograman yang anda kuasai berdasarkan Pseudocode 8 yang di modifikasi.(4*jum))).7f'.(4*jum) print "Pi = ".0.n print "dx = ". disp(sprintf('Pi = %. r=5.x). f1=y(r.dx)). Jalankan Kode program 14.x). jum=jum+0.r dx=(b-a)/n x. f2=y(r.n)).7f'.((4*jum)/(r*r)) Matlab y=@(r. a=0. Gunakan metode numerik lain selain metode trapesium untuk mendekati nilai π! Bandingkan hasilnya? JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 55 .b=0. dx=(b-a)/n.7f'.(4*jum)/(r*r))).0 f1=y(r.0.jum=a.dx print "Luas O = ".1500 a.5*dx*(f1+f2) f1=f2 print "n = ".x) jum+=0. Analisa variasi ∆x terhadap pendekatan nilai π berdasarkan Kode program 14 atau berdasarkan kode program yang anda buat! Bandingkan dengan nilai π dari literatur lain (mis.x): return (math. end disp(sprintf('n = %d'.0.sqrt(r*r-x*x)) r. Tugas 1.jum=0.5*dx*(f1+f2).MODUL PRAKTIKUM FISIKA KOMPUTASI Python import math def y(r.n=5. untuk mendekati nilai π! Berapakah nilai π hasil pendekatan? 2. π = 3. d. x=a.142857142857143)? 6.b=r.n=1500. for i=1:n+1 x=x+dx.x)(sqrt(r*r-x*x)).n+1): x+=dx f2=y(r.x) for i in range(1. disp(sprintf('Luas O = %. f1=f2. disp(sprintf('dx = %.

MODUL PRAKTIKUM FISIKA KOMPUTASI 56 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 .

Dengan syarat keempat titik tersebut berada membentuk persegi dan nilai titik yang didekati berada dalam 4 titik tersebut. Problem Permasalahan fisis dan matematis seperti apa yang dapat atau cocok digunakan interpolasi bilinier. u3. dimana idenya adalah mengambil nilai pendekatan berdasarkan asumsi persamaan gradien terhadap 4 titik terdekat yang sudah diketahui nilainya. y2 u3 u4 u(x. karena dimungkinkan dengan asumsi titik dalam gradien yang sama dapat memiliki nilai error pendekatan yang besar? JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 57 .1. dan u4 yang sudah diketahui. Ilustrasi keberadaan titik tersebut sebagaimana Gambar 8.y) y y1 x1 u1 u2 x x2 Gambar 8.1 Posisi titik obyek pada interpolasi bilinier Persamaan interpolasi bilinier untuk mendekati nilai u di atas adalah sebagaimana persamaan 18. interpolasi adalah memprediksi nilai suatu titik berdasarkan titik-titik terdekat yang sudah ada/diketahui nilainya.MODUL PRAKTIKUM FISIKA KOMPUTASI PRACTICE VIII INTERPOLASI Teori Secara garis besar. ] (18) dengan u1. u2. Salah satu contoh metode interpolasi yang mudah adalah metode interpolasi bilinier.

5) dengan metode interpolasi Bilinier? 2. Dimisalkan keempat titik tersebut adalah sebagaimana tabel berikut: x y u(x.75 5 1 3.5. Analisa hasil pendekatan kecepatan yang Anda peroleh soal no.0 5 3 2.MODUL PRAKTIKUM FISIKA KOMPUTASI Project VIII a. b. Tujuan Menggunakan Interpolasi untuk mendekati suatu nilai berdasarkan dua sumbu koordinat x dan y. 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.y) 1 1 2. 1 di atas? 58 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 .4 1 3 -1. Buatlah Pseudocode beserta Kode program sesuai bahasa pemrograman yang Anda kuasai untuk mendekati nilai u(2.2 1.1.

dengan syarat ketinggian sebelum dan sesudah menumbuk lantai sama (tumbukan lenting sempurna)! (6) 2. Dari ketinggian awal h0 (yang dapat diubah-ubah). simulasikan gerak bandul sederhana dalam grafik hubungan x (simpangan) dan t (waktu) dengan syarat gesekan udara diabaikan! (6) 3.MODUL PRAKTIKUM FISIKA KOMPUTASI SOAL UAP (Take home) 1.5 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 59 . Buatlah pseudocode beserta kode program untuk menghitung dengan pendekatan numerik dan n berupa pecahan desimal sembarang (tentukan sendiri) dan bernilai negatif? 4. ke dalam grafik hubungan h (ketinggian) dan t (waktu). 1.8 12 3. Simulasikan Gerak Jatuh Bebas suatu benda bermassa m. Sebuah mobil bergerak berubah beraturan dengan kecepatan v tercatat di berbagai titik sepanjang jarak x sebagai berikut: x (m) v (m/s) 0 0 4 2 8 2. Hampir sama dengan soal no.5 16 4 20 4.

Format bukan laporan. data hasil kompilasi dan Visualisasi (jika ada) Hasil dan Analisa (pembandingan dengan hasil analitis) Kode program 60 JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 . 3. 2. 4. 2. Tentukan persamaan posisi projectile sebagai fungsi dari x (h(x)) dengan menggunakan pendekatan numerik? (2) Ketentuan mengerjakan soal Kerjakan dengan ketentuan setiap soal terdapat/meliputi: 1.MODUL PRAKTIKUM FISIKA KOMPUTASI Tentukan percepatan mobil dengan menggunakan pendekatan numerik? (6) 5. Tinjauan soal/problem (persamaan/model matematis yang digunakan) Penurunan numerik (Metode yang digunakan. 5. diskritisasi model) Pseudocode Grafik. 4 dan 5 jangan terlalu berbelit-belit. Suatu gerak projectile diilustrasikan sebagaimana gambar di bawah ini: di mana sumbu x menunjukkan pergeseran arah mendatar. 6. sedangkan sumbu y menunjukkan perubahan ketinggian (h). format resume biasa saja. NB: Penulisan 1.

org. et al. http://wikipedia. Cheney W.. algorithmic approach Anonymous. Elementary numerical analysis..MODUL PRAKTIKUM FISIKA KOMPUTASI PUSTAKA Landau R. JURUSAN FISIKA UNIVERSITAS BRAWIJAYA MALANG 2010 61 . de Boor. Problem Solving With Computers (Wiley. 1997) Kincaid D.. Computational Physics. 2010. Interpolasi Bilinier. Numerical analysis (1991) Conte.

Sign up to vote on this title
UsefulNot useful