Pendahuluan Komputasi Nuklir
29 Oktober 2015
Komputasi Nuklir
Pendahuluan
29 Oktober 2015
1 / 41
Outline
1
Pendahuluan
2
Algoritma
3
Bahasa Pemrograman
4
Implementasi aturan trapesium menggunakan bahasa yang berbeda
Komputasi Nuklir
Pendahuluan
29 Oktober 2015
2 / 41
Pendahuluan
Outline
1
Pendahuluan
2
Algoritma
3
Bahasa Pemrograman
4
Implementasi aturan trapesium menggunakan bahasa yang berbeda
Komputasi Nuklir
Pendahuluan
29 Oktober 2015
3 / 41
Pendahuluan
Langkah penyelesaian permasalahan secara numerik
Ketika permasalahan sains harus dipecahkan dengan bantuan komputasi numerik, prosedur penyelesaiannya meliputi beberapa langkah: 1
Memahami permasalahan dan memformulasikan model matematis
2
Menggunakan metode numerik untuk menyelesaikan problem matematis
3
Menerapkan metode numerik pada program komputer
4
Melakukan verifikasi bahwa hasil dari program adalah benar secara matematis
5
Menerapkan program pada permasalahan ilmiah dan menginterpretasikan hasil
Komputasi Nuklir
Pendahuluan
29 Oktober 2015
4 / 41
Pendahuluan
Persyaratan software Software yang melakukan komputasi ilmiah harus: 1 2 3
Benar secara matematis Efisien (kecepatan, penggunaan memori) Mudah untuk dikelola dan dikembangkan
Jika terdapat kesalahan pada program, perhitungan kemungkinan besar salah dan hasilnya menjadi tidak berguna. Banyak jenis komputasi yang memerlukan waktu komputasi berhari-hari atau berminggu-minggu serta membutuhkan memori gabungan dari sejumlah besar komputer. Oleh karena itu efisiensi terkait dengan kecepatan dan penggunaan meori mejadi hal yang sangat penting. Sayangnya, banyak usaha perbaikan efisiensi justru mudah untuk menimbulkan error pada program yang dibuat. Kompleksitas software ilmiah juga mencapai limit di mana pengelolaannya dan pengembangannya di masa depan menjadi sulit untuk dilakukan, dan memodifikasi program yang kompleks juga dapat menimbulkan error yang cukup signifikan. Komputasi Nuklir
Pendahuluan
29 Oktober 2015
5 / 41
Pendahuluan
Software development skills
Seorang pengembang perangkat lunak ilmiah perlu memiliki keterampilan (skills) yang memenuhi persyaratan tersebut. 1
Mampu memahami problem matematis yang akan diselesaikan
2
Mampu memahami metode numerik yang akan digunakan
3
Mampu mendesain algoritma dan struktur data yang sesuai
4
Mampu memilih bahasa pemrograman dan tools yang paling sesuai
5
Mampu menggunakan libraries
6
Mampu memverifikasi tingkat kebenaran hasil yang diperoleh
Komputasi Nuklir
Pendahuluan
29 Oktober 2015
6 / 41
Algoritma
Outline
1
Pendahuluan
2
Algoritma
3
Bahasa Pemrograman
4
Implementasi aturan trapesium menggunakan bahasa yang berbeda
Komputasi Nuklir
Pendahuluan
29 Oktober 2015
7 / 41
Algoritma
Pseudo Code Pemetaan dari problem fisis menjadi program komputer mempunyai beberapa karakteristik yang tidak tergantung kepada permasalahan yang sedang diselesaikan. Problem fisis harus dinyatakan sebagai model matematis. Untuk setiap problem matematis, kita perlu memilih metode solusi numerik. Setiap metode dinyatakan sebagai algoritma dan diimplementasikan sebagai bagian dari program, biasanya berupa fungsi. Program atau code merupakan sekumpulan fungsi yang mengimplementasikan berbagai algoritma (atau langkah-langkah solusi) dari problem secara keseluruhan. Komunikasi di antara fungsi tergantung pada jenis struktur data yang digunakan. Oleh karena itu, software numerik merupakan algoritma dan struktur data yang saling mempengaruhi.
Komputasi Nuklir
Pendahuluan
29 Oktober 2015
8 / 41
Algoritma
Algoritma yang lengkap biasanya dinyatakan dalam pseudo code, yaitu campuran antara formula matematis dengan instruksi dari bahasa komputer. Tujuannya adalah agar algoritma dapat diterjemahkan dengan mudah ke bahasa pemrograman. Beberapa instruksi penting yang digunakan dalam pseudo code (dan program komputer) adalah 1
Assignment: notasi s ← s + 2 berarti kita memberikan nilai dari ekspresi s + 2 ke s, yaitu s diganti dengan nilai yang baru,
2
Kalang for : kalang yang diatur dengan pembilang yang berjalan di antara dua nilai dengan panjang langkah tertentu,
3
Kalang while: kalang yang diatur dengan kondisi boolean,
4
Fungsi: subprogram yang mengambil sekumpulan variabel sebagai input (argumen) dan mengembalikan sekumpulan variabel,
5
Larik (array ): urutan bilangan, misalnya u1 , u2 , . . . , u10 .
Komputasi Nuklir
Pendahuluan
29 Oktober 2015
9 / 41
Algoritma
Contoh: n−1 X
f (a + ih)
i=1
dengan f adalah fungsi dengan variabel skalar, a dan h adalah konstanta. Kalang for : 1: s = 0 2: for i = 1, . . . , n − 1 do 3: s ← s + f (a + ih) 4: end for Kalang while: 1: s = 0 2: i = 1 3: while i ≤ n − 1 do 4: s ← s + f (a + ih) 5: i ←i +1 6: end while Komputasi Nuklir
Pendahuluan
29 Oktober 2015
10 / 41
Algoritma
Contoh: Misal kita ingin mengintegralkan fungsi f (x ) dari x = a sampai x = b menggunaan metode trapesium. Z
n−1
b
f (x )dx ≈ a
X h h f (a) + f (b) + h f (a + ih), 2 2 i=1
h=
b−a n
(1)
function trapesium(a,b,f,n) h = b−a n s=0 for i = 1, . . . , n − 1 do s ← s + hf (a + ih) end for 7: s ← s + h2 f (a) + h2 f (b) 8: return s 9: end function 1: 2: 3: 4: 5: 6:
2n perkalian, 2n penjumlahan, 3 pembagian dan n + 1 pemanggilan fungsi Komputasi Nuklir
Pendahuluan
29 Oktober 2015
11 / 41
Algoritma
Optimasi perhitungan Rumusan yang lebih efisien: ( Z b
f (x )dx ≈ h 0, 5(f (a) + f (b)) + a
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
n−1 X i=1
) f (a + ih) ,
h=
b−a n
(2)
function trapesium(a,b,f,n) h = b−a n s=0 x =a for i = 1, . . . , n − 1 do x ←x +h s ← s + f (x ) end for s ← s + 0, 5(f (a) + f (b)) s ← hs return s end function
1 perkalian, 2n penjumlahan, 1 pembagian dan n + 1 pemanggilan fungsi Komputasi Nuklir
Pendahuluan
29 Oktober 2015
12 / 41
Algoritma
Pedoman untuk mengimplementasikan metode numerik 1
Gunakan algoritma yang mudah untuk dipahami dan dapat dicari dengan mudah di literatur.
2
Buat program komputer sedekat mungkin dengan algoritmanya, sehingga ”korespondensi satu-satu” dapat diperiksa dengan membandingkan kode dan algoritmanya.
3
Uji implementasi dengan problem yang sederhana di mana hasil yang eksak telah diketahui.
4
Hati-hati dengan optimisasi manual sebelum program diverifikasi.
5
Setelah optimisasi manual diimplementasikan, kompilasi program dengan mengaktifkan opsi optimisasi kompiler, jalankan program aslinya dan program yang telah dioptimasi, periksa apakah hasilnya ekivalen dan bandingkan waktu yang diperlukan untuk menjalankan kedua program tersebut.
Komputasi Nuklir
Pendahuluan
29 Oktober 2015
13 / 41
Algoritma
Rekomendasi: Hindari optimasi di tahapan awal pengembangan sofware karena program yang tidak dioptimasi biasanya lebih mudah dipahami dan lebih mudah untuk di-debug.
Donald Knuth Premature optimization is the roof of all evil.
Komputasi Nuklir
Pendahuluan
29 Oktober 2015
14 / 41
Bahasa Pemrograman
Outline
1
Pendahuluan
2
Algoritma
3
Bahasa Pemrograman
4
Implementasi aturan trapesium menggunakan bahasa yang berbeda
Komputasi Nuklir
Pendahuluan
29 Oktober 2015
15 / 41
Bahasa Pemrograman
Ada ratusan bahasa pemrograman, sebagian cocok untuk perhitungan ilmiah, sebagian yang lain tidak. Menentukan bahasa pemrograman yang digunakan tentunya tergantung pada selera dan pengalaman pribadi. Tapi penguasaan terhadap beberapa bahasa pemrograman serta kemampuan untuk berpindah dengan cepat ke bahasa yang baru sangatlah diperlukan. Alasannya karena tools yang berbeda mempunyai kekuatan dan kelemahan yang berbeda sehingga cocok untuk jenis-jenis permasalahan yang berbeda.
Komputasi Nuklir
Pendahuluan
29 Oktober 2015
16 / 41
Bahasa Pemrograman
Statis vs Dinamis
Fortran, C, C++ dan Java disebut dengan strongly typed atau statically typed, karena setiap jenis variabel harus dituliskan secara eksplisit. Matlab, Python, Octave adalah contoh bahasa pemrograman yang tidak perlu dituliskan jenis variabel secara eksplisit dan jenis variabel dapat berubah selama program dijalankan ⇒ dynamically typed. Dynamic typing memberikan fleksibilitas yang besar dan sintaksisnya lebih dekat dengan notasi matematis pada bahasa pseudo code. Static typing sangat berguna bagi pemrogram pemula karena dapat menghindari kesalahan input jenis variabel.
Komputasi Nuklir
Pendahuluan
29 Oktober 2015
17 / 41
Bahasa Pemrograman
Efisiensi komputasi Beberapa bahasa komputer lebih cepat dibandingkan dengan yang lain. Bahasa pemrograman dapat dikelompokkan menjadi interpreter atau kompiler. Pembedaan ini merefleksikan potensi kecepatan bahasa dan oleh karenanya berpengaruh terhadap penggunaannya di bidang komputasi ilmiah. Umumnya kompiler mempunyai static typing, dan interpreter menggunakan dynamic typing. Java terletak di tengah-tengah: memiliki static typing, awalnya diinterpretasikan, tapi kemudian dilengkapi dengan teknik kompiler. Fortran, C dan C++ adalah kompiler yang menerjemahkan bahasa program kompute ke kode mesin, yaitu instruksi primitif tingkat rendah yang terkait dengan perangkat keras. Kompiler berjalan lebih cepat daripada interpreter karena beroperasi menggunakan kode mesin. Matlab, Python, Octave adalah interpreter. Sebuah program dibaca baris per baris oleh interpreter yang menerjemahkannya menjadi panggilan fungsi di library. Proses penerjemahan berlangsung ketika program berjalan. Keuntungan dari interpreter adalah tingkat fleksibilitasnya yang lebih tinggi, pernyataan dan struktur data dapat diubah secara dinamis ketika program berjalan. Komputasi Nuklir
Pendahuluan
29 Oktober 2015
18 / 41
Bahasa Pemrograman
Dukungan terhadap objek Fortran 77 hanya mempunyai beberapa jenis variabel: integer, real, array, complex dan character string. C memperbolehkan pemrogram untuk mendefinisikan jenis variabel baru. struct, merupakan kumpulan dari variabel-variabel dasar C dan variabel struct lain yang telah didefinisikan sebelumnya. C++ merupakan ekstensi dari C yang menawarkan jenis variabel yang didefinisikan oleh pengguna yang terdiri dari fungsi dan data. Jenis ini disebut dengan class. Fortran 90 dan Fortran 95 merupakan ekstensi dari Fortran 77 (dan versi yang lebih awal: Fortran IV dan Fortran 66) di mana programmer dapat mengumpulkan data dan fungsi pada module. Module dapat melakukan banyak hal seperti halnya class, tetapi class di C++ lebih unggul daripada modul di Fortran 90/95. Fortran 2000 mempunyai module dengan fungsionalitas class yang lebih baik.
Komputasi Nuklir
Pendahuluan
29 Oktober 2015
19 / 41
Bahasa Pemrograman
Java mendukung class, tetapi fleksibilitasnya kurang daripada di C++. Sebaliknya, Java mempunyai fungsionalitas yang membuat bahasa tersebut lebih user-friendly dan lebih mudah untuk diprogram dibandingkan dengan C++. Python memiliki class yang lebih maju atau advanced dibandingkan dengan C++. Matlab awalnya hanya memiliki matriks dan string, tetapi pengembangan Matlab saat ini telah menyertakan pula definisi class.
Komputasi Nuklir
Pendahuluan
29 Oktober 2015
20 / 41
Implementasi aturan trapesium menggunakan bahasa yang berbeda
Outline
1
Pendahuluan
2
Algoritma
3
Bahasa Pemrograman
4
Implementasi aturan trapesium menggunakan bahasa yang berbeda
Komputasi Nuklir
Pendahuluan
29 Oktober 2015
21 / 41
Implementasi aturan trapesium menggunakan bahasa yang berbeda
Struktur program Struktur utama program untuk melakukan integrasi numerik dengan bantuan aturan trapesium tidak tergantung pada tool pemrograman yang digunaan. Model matematis yang digunakan adalah Z I=
b
f (x )dx
(3)
a
dan tujuannya adalah menghitung pendekatan terhadap nilai I. Pada program kita perlu untuk: 1
menginisialisasi data masukan: a, b, dan n
2
menentukan fungsi f (x )
3
memanggil modul program yang mengimplementasikan algoritma trapesium yang dioptimasi
4
menuliskan nilai dari I
Untuk perhitungan ini, ditentukan a = 0, b = 2 dan n = 1000. 2
Fungsi f (x ) = e −x log(1 + x sin x ) diimplementasikan dengan nama f1. Komputasi Nuklir
Pendahuluan
29 Oktober 2015
22 / 41
Implementasi aturan trapesium menggunakan bahasa yang berbeda
Fortran 77
Didesain pada tahun 1950an sebagai bahasa tingkat tinggi alternatif terhadap assembly. Perkembangan: Fortran IV, Fortran 66, Fortran 77, Fortran 90, Fortran 95 dan Fortran 2000. Bahasa yang cukup primitif: hanya ada beberapa jenis variabel (integer, real, complex, array dan string), beberapa keyword, beberapa struktur kontrol dan tata letak yang ketat. Banyak digunakan di aplikasi komputasi ilmiah, karena sifatnya yang sederhana dan kinerja yang tinggi. Cocok untuk mengimplementasikan algoritma yang menggunakan kalang yang sangat intensif perhitungannya.
Komputasi Nuklir
Pendahuluan
29 Oktober 2015
23 / 41
Implementasi aturan trapesium menggunakan bahasa yang berbeda
Aturan trapesium r e a l ∗8 f u n c t i o n t r a p e s i u m ( a , b , f , n ) r e a l ∗8 a , b , f external f integer n
1
2
3
4
5
r e a l ∗8 s , h , x integer i h = ( b−a ) / f l o a t ( n ) s = 0 x = a do i = 1 , n−1 x = x + h s = s + f (x) end do s = 0.5∗( f (a) + f (b )) + s t r a p e s i u m = h∗ s return end
Komputasi Nuklir
Pendahuluan
6
7
8
9
1
1
1
1
1
1
1
1
1
29 Oktober 2015
24 / 41
1
Implementasi aturan trapesium menggunakan bahasa yang berbeda
Implementasi program C
f u n g s i yang akan d i i n t e g r a l k a n : r e a l ∗8 f u n c t i o n f 1 ( x ) r e a l ∗8 x f 1 = exp(−x ∗ x ) ∗ l o g (1+ x ∗ s i n ( x ) ) return end
C
program utama : program i n t e g r a t i o n integer n r e a l ∗8 a , b , r e s u l t external f1 a=0 b=2 n = 1000 r e s u l t = t r a p e s i u m ( a , b , f1 , n ) write (∗ ,∗) r e s u l t end
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
Komputasi Nuklir
Pendahuluan
29 Oktober 2015
25 / 41
Implementasi aturan trapesium menggunakan bahasa yang berbeda
Compiling, linking dan running
Anggap program di atas disimpan dalam file int.f unix> g77 -O3 -c int.f # kompilasi unix> g77 -o int int.o # linking unix> ./int
Komputasi Nuklir
Pendahuluan
29 Oktober 2015
26 / 41
Implementasi aturan trapesium menggunakan bahasa yang berbeda
C dan C++ C dikembangkan di awal tahun 1970an untuk UNIX OS dan menjadi dominan digunakan di akhir 1980an. Lebih advanced daripada F77, dengan memberikan fleksibilitas melalui tipe struct, namun seringkali diimbangi dengan berkurangnya kinerja komputasi. C++ didesain untuk menyediakan class dan OOP seperti bahasa SIMULA 67, namun dengan sintaksis C dan C sebagai subset. Aplikasi yang dapat mengambil manfaat dari struktur data yang rumit dan pemrograman OOP akan lebih sederhana implementasinya dibandingkan dengan F77 atau C. Akan tetapi C++ tidak dapat bersaing dengan F77 dalam hal kecepatan komputasi, meskipun perbedaannya kecil. Dengan sedikit otak-atik, C dan C++ bisa secepat atau bahkan lebih cepat daripada F77, tetapi hal ini tergantung dari jenis algoritma dan struktur data yang terlibat.
Komputasi Nuklir
Pendahuluan
29 Oktober 2015
27 / 41
1
Implementasi aturan trapesium menggunakan bahasa yang berbeda
Aturan trapesium t y p e d e f do u b l e ( ∗ f p t r ) ( double x ) ;
2
3
4
5
6
7
8
9
0
1
2
d o u ble T r a p e s i u m ( d o u ble a , double b , f p t r f , i n t n ) { double h = ( b−a ) / d ouble ( n ) ; double s = 0 ; double x = a ; f o r ( i n t i = 1 ; i <= n −1; i ++) { x = x + h; s = s + f (x ); } s = 0.5∗( f (a) + f (b )) + s ; r e t u r n h∗ s ; }
Komputasi Nuklir
Pendahuluan
29 Oktober 2015
28 / 41
1
2
3
4
5
6
7
8
9
Implementasi aturan trapesium menggunakan bahasa yang berbeda
Implementasi program #i n c l u d e
#i n c l u d e /∗ f u n g s i t r a p e s i u m : ∗/ ... /∗ f u n g s i yang akan d i i n t e g r a l k a n ∗/ d o u ble f 1 ( d o u b l e x ) { r e t u r n exp (−x ∗ x ) ∗ l o g (1+ x ∗ s i n ( x ) ) ; }
0
1
2
3
4
5
6
i n t main ( ) // program utama { double a = 0 , b = 2 ; i n t n = 1 0 0 0 ; double r e s u l t = T r a p e s i u m ( a , b , f 1 , n ) ; s t d : : c o u t << r e s u l t << s t d : : e n d l ; }
Komputasi Nuklir
Pendahuluan
29 Oktober 2015
29 / 41
Implementasi aturan trapesium menggunakan bahasa yang berbeda
Compiling, linking dan running
Anggap program di atas disimpan dalam file int.cpp unix> g++ -O3 -c int.cpp unix> g++ -o int int.o unix> ./int
Komputasi Nuklir
# kompilasi int.cpp ke int.o # linking; menghasilkan int executable
Pendahuluan
29 Oktober 2015
30 / 41
Implementasi aturan trapesium menggunakan bahasa yang berbeda
Java
Java dibuat oleh Sun Microsystem di awal tahun 1990an dan dapat dianggap sebagai versi C++ yang lebih sederhana dan lebih user-friendly. Program Java tidak dikompilasi secara klasik seperti Fortran, C dan C++ sehingga kinerjanya sedikit negatif untuk komputasi ilmiah. Minat awal untuk menggunakan Java di dunia komputasi ilmiah telah turun, namun masih dominan untuk pembelajaran pemrograman komputer.
Komputasi Nuklir
Pendahuluan
29 Oktober 2015
31 / 41
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
Implementasi aturan trapesium menggunakan bahasa yang berbeda
Aturan trapesium import j a v a . l a n g . ∗ ; i n t e r f a c e Func { // c l a s s d a s a r u n t u k f u n g s i f ( x ) p u b l i c d o u b l e f ( double x ) ; } c l a s s Trapesium { p u b l i c s t a t i c d o uble i n t e g r a t e ( double a , double b , Func f , i n t n ) { doubl e h = ( b−a ) / ( ( double ) n ) ; doubl e s = 0 ; doubl e x = a ; int i ; f o r ( i = 1 ; i <= n −1; i ++) { x = x + h; s = s + f . f (x ); } s = 0.5∗( f . f (a) + f . f (b )) + s ; r e t u r n h∗ s ; } } Komputasi Nuklir
Pendahuluan
29 Oktober 2015
32 / 41
1
2
3
4
Implementasi aturan trapesium menggunakan bahasa yang berbeda
Implementasi program c l a s s f 1 implements Func { p u b l i c d o u b l e f ( double x ) { r e t u r n Math . exp (−x ∗ x ) ∗ Math . l o g (1+ x ∗Math . s i n ( x ) ) ; } }
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
c l a s s Demo { p u b l i c s t a t i c v o i d main ( S t r i n g a r g v [ ] ) { double a = 0 ; double b = 2 ; int n = 1000; double r e s u l t = 0 ; int i ; f 1 f = new f 1 ( ) ; // f 2 f = new f 2 ( ) ; f o r ( i = 1 ; i <= 1 0 0 0 0 ; i ++) { r e s u l t = Trapesium . i n t e g r a t e ( a , b , f , n ) ; } System . o u t . p r i n t l n ( r e s u l t ) ; } } Komputasi Nuklir
Pendahuluan
29 Oktober 2015
33 / 41
Implementasi aturan trapesium menggunakan bahasa yang berbeda
Compiling, linking dan running
Anggap program di atas disimpan dalam file Trapesium.java unix> javac Trapesium.java unix> java Demo
Komputasi Nuklir
# kompilasi # running
Pendahuluan
29 Oktober 2015
34 / 41
Implementasi aturan trapesium menggunakan bahasa yang berbeda
MATLAB Matlab awalnya merupakan front end yang user-friendly terhadap library F77 yang efisien untuk keperluan komputasi aljabar linear numerik. Selama tahun 80an dan terutama 90an, pengembangan Matlab menjadi lebih baik dan lebih user-friendly dan menjadikannya platform pengembangan untuk aplikasi komputasi ilmiah. Bekerja dengan Matlab tidak terlalu jauh berbeda dengan pemrograman F77, tetapi terdapat perbedaan mendasar: Pernyataan dapat diberikan secara interaktif, yaitu kita tuliskan perintah dan hasilnya langsung dapat dilihat. Tidak perlu mendeklarasikan variabel (dynamic typing). Matlab mempunyai banyak perintah tingkat tinggi yang menggantikan keperluan penulisan kalang secara rinci. Jika terdapat kesalahan pada pernyataan, Matlab akan memberikan pesan kesalahan yang mudah dipahami. Matlab menyediakan fitur visualisasi yang maju dan terintegrasi.
Komputasi Nuklir
Pendahuluan
29 Oktober 2015
35 / 41
1
2
3
Implementasi aturan trapesium menggunakan bahasa yang berbeda
Fungsi yang akan dipanggil secara interaktif pada lingkungan Matlab atau dari script Matlab harus berupa source code yang ditulis pada file dengan ekstensi .m. Isi file Trapesium.m f u n c t i o n r = Trapesium ( a , b , f , n ) % METODE TRAPESIUM I n t e g r a s i s e c a r a n u m e r i k d a r i a ke b % menggunakan metode t r a p e s i u m
4
5
6
7
8
f h s x
= = = =
fcnchk ( f ) ; ( b−a ) / n ; 0; a;
9
0
1
2
3
4
5
f o r i = 1 : n−1 x = x + h; s = s + feval ( f , x ); end s = 0.5∗( feval ( f , a) + feval ( f , b )) + s ; r = h∗ s ;
Komputasi Nuklir
Pendahuluan
29 Oktober 2015
36 / 41
1
2
1
2
3
Implementasi aturan trapesium menggunakan bahasa yang berbeda
Fungsi yang akan diintegralkan disimpan di file .m lain, misalnya f1.m function y = f1 ( x ) y = exp(−x ∗ x ) ∗ l o g (1+ x ∗ s i n ( x ) ) ;
Untuk mengintegralkan f1, kita memanggil fungsi Trapesium di lingkungan Matlab interaktif. a = 0; b = 2; n = 10; r e s u l t = T r a p e s i u m ( a , b , @f1 , n ) ; disp ( r e s u l t ) ; % p r i n t r e s u l t
Komputasi Nuklir
Pendahuluan
29 Oktober 2015
37 / 41
Implementasi aturan trapesium menggunakan bahasa yang berbeda
Python Python adlaah bahasa pemrograman yang sangat fleksibel yang mendukung banyak konsep maju dibandingkan C atau Fortran, dan juga konstruksi datanya lebih powerful dibandingkan C++ atau Java. Programnya cenderung lebih kecil, lebih ringkas dan lebih mudah dibaca dibandingkan dengan Fortran, C, C++ dan Java. Karena Python adalah interpreter, maka untuk beberapa konstruksinya (terutama kalang) berjalan lebih lambat dibandingkan Fortran, C, C++ atau Java. Akan tetapi untuk banyak aplikasi terkait komputasi ilmiah, Python cukup cepat. Adanya dukungan library yang cukup handal untuk komputasi ilmiah, misalnya NumPy, SciPy dan Matplotlib. Matlab dan Python banyak kesamaannya: mudah dipelajari, punya sintaksis yang sangat bersih, dan mempunyai tool tingkat tinggi untuk melakukan operasi kompleks dengan hanya beberapa pernyataan saja.
Komputasi Nuklir
Pendahuluan
29 Oktober 2015
38 / 41
1
2
3
4
5
6
7
8
9
0
1
Implementasi aturan trapesium menggunakan bahasa yang berbeda
Variabel di Python dapat langsung digunakan, tanpa harus disebutkan jenisnya secara eksplisit. Karena sintaksis Python sangat dekat dengan notasi matematika, maka perbedaan antara algoritma dengan program Python menjadi kecil. #! / u s r / b i n / env p y t h o n from math import ∗ def Trapesium ( a , b , f , n ) : h = ( b−a ) / f l o a t ( n ) s = 0 x = a f o r i i n range ( 1 , n , 1 ) : x = x + h s = s + f (x) s = 0.5∗( f (a) + f (b )) + s r e t u r n h∗ s
2
3
4
5
def f1 ( x ) : f = exp (−x ∗ x ) ∗ l o g (1+ x ∗ s i n ( x ) ) return f
6
7
8
9
a = 0 ; b = 2 ; n = 1000 r e s u l t = Trapesium ( a , b , f1 , n ) print result Komputasi Nuklir
Pendahuluan
29 Oktober 2015
39 / 41
Implementasi aturan trapesium menggunakan bahasa yang berbeda
Tidak diperlukan proses kompilasi program, karena Python adalah interpreter. Untuk menjalankan program, cukup dengan mengetikkan nama file, misal int.py di Unix/Linux/Mac, atau menuliskan unix> python int.py
Komputasi Nuklir
Pendahuluan
29 Oktober 2015
40 / 41
Implementasi aturan trapesium menggunakan bahasa yang berbeda
Perbandingan running time
Tabel: default
Bahasa Fortran C++ Java Matlab Python
Komputasi Nuklir
Waktu relatif 1 ≥1 2,1 85 2 (dengan vektorisasi) 14 2 (dengan vektorisasi)
Pendahuluan
29 Oktober 2015
41 / 41