Program Studi Magister Sains Komputasi Fakultas Matematika dan Ilmu Pengetahuan Institut Teknologi Bandung 2014
Problem 1
Pada problem 1 ini akan dilakukan pemodelan suatu sistem dan dilkukan proses inversi untuk mendekati suatu sinyal observasi dengan pendekatan model yang dikembangkan. Suatu sistem pada fenomena geologis untuk mencari nilai gravitasi pada suatu wilayah, dimodelkan dengan persamaan berikut : g =k.p.t._log 1+ h 2 2 x 2 1+ h 1 2 x 2 _ (1) Dimana nilai parameter-parameter pada persamaan tersebut adalah : p =200 k =1.33e-2 t =200 h 1 =500 h 2 =1000
Dilakukan plot grafik untuk model dengan persamaan di atas dengan variabel nilai x mulai dari x =- 1000 hingga 1000 dengan kenaikan atau delta x =100. Maka diperoleh plot grafik sbb :
Gambar 1. Plot Grafik dari model matematis pada persamaan (1)
Pada Gambar 1 merupakan plot grafik dari model matematis pada persamaan (1) merupakan model ideal dengan persamaan model yang telah diketahui. Selanjutnya dilakukan gangguan data atau noise pada model tersebut untuk kita jadikan seolah-olah sebagai sinyal atau model yang diperoleh dari hasil observasi. Untuk setiap kali running program, bentuk noise yang dihasilkan akan berbeda mengingat digunakannya bilangan random untuk menghasilkan sinyak noise sebagai sinyal observasi tersebut. Diperoleh plot grafik sebagai berikut :
Gambar 2. Plot Grafik dari model matematis dan model dengan gangguan (noise)
Sinyal model yang diberi noise di atas kita gunakan seolah-olah sebagai sinyal hasil observasi. Sinyal hasil observasi tersebut kemudian dilakukan hampiran menggunakan sinyal baru. Sinyal baru dibuat dengan model persamaan (1) dimulai dengan nilai p =100, sehingga diperoleh plot grafik sebagai berikut :
Gambar 3. Plot Grafik dari model dengan gangguan (noise) dan model dengan approksimasi p =100 Selanjutnya dilakukan perhitungan sinyal sistem baru dengan menggunakan nilai delta rho yang berbeda dan membandingkan sinyal hasil perhitungan baru tersebut dengan dengan sinyal observe untuk diketahui seberapa jauh/dekat eror nya. Perhitungan terus dilakukan hingga nilai rata-rata error mendekati batas toleransi (dalam kasus ini batas toleransi sebesar 1.10 -6 ) yang kita berikan untuk kemudian dapat diketahui nilai delta rho terbaik dengan nilai error terkecil. Berikut hasil running program, diperoleh hasil terbaik pada itersi ke 46597 dengan nilai delta rho 200.244115 dan nilai eror rata2 sebesar 0.000001 Tugas Kapita Selekta Sains Komputasi Dinan Andiwijayakusuma 20913007
Dari hasil perhitungan model dengan nilai delta rho terbaik, kita dapat lakukan plot grafik untuk mengetahui aproksimasi yang dihasilkan dalam bentuk grafik sebagai berikut
Gambar 4. Plot Grafik dari model aproksimasi terhadap data sinyal observe dan diperoleh nilai p =200.244115 pada iterasi ke-46597
Kode Program dalam bahasa python # - *- codi ng: ut f - 8 - *- " "" Cr eat ed on Mon Mar 24 14: 15: 27 2014
@aut hor : di nan_andi wi j ayakusuma " ""
i mpor t numpy as np i mpor t mat pl ot l i b. pyl ab as pl t i mpor t r andom
t =200 k=1. 33e- 2 del t a_r ho_1=200 del t a_r ho_2=100 h1=500. 0 h2=1000. 0 t ol er ansi =1e- 6
def pl ot _i ni t i al ( ar X, g_model , g_noi se, g_st ar t ) : pl t . pl ot ( ar X, g_model ) pl t . scat t er ( ar X, g_noi se) pl t . l egend( [ ' g_model ' , ' g_noi se' ] , l oc=' best ' ) pl t . xl i m( - 1010, 1010) pl t . xl abel ( ' j ar ak' ) pl t . yl abel ( ' g' ) pl t . t i t l e( ' Pl ot Model Per hi t ungan Gr avi t asi Pada Suat u Ar ea' ) pl t . savef i g( ' i ni t i al _model _wi t h_noi se. png' ) pl t . show( )
pl t . pl ot ( ar X, g_model ) pl t . pl ot ( ar X, g_st ar t ) pl t . scat t er ( ar X, g_noi se) pl t . l egend( [ ' g_model ' , ' g_st ar t ' , ' g_obser ve' ] , l oc=' best ' ) pl t . xl i m( - 1010, 1010) pl t . xl abel ( ' j ar ak' ) pl t . yl abel ( ' g' ) pl t . t i t l e( ' Pl ot Model Per hi t ungan Gr avi t asi Pada Suat u Ar ea' ) pl t . savef i g( ' i ni t i al _model _obser ve_wi t h_st ar t _appr ox. png' ) pl t . show( )
def pl ot _hampi r an( ar X, g_st ar t , g_new, r ho, i t er asi ) : pl t . pl ot ( ar X, g_st ar t ) pl t . pl ot ( ar X, g_new) pl t . scat t er ( ar X, g_obser ve) pl t . l egend( [ ' g_st ar t ' , ' g_updat e' , ' g_obser ve' ] , l oc=' best ' ) pl t . xl i m( - 1010, 1010) pl t . xl abel ( ' j ar ak' ) pl t . yl abel ( ' g' ) pl t . t i t l e( ' Pl ot Model Per hi t ungan Gr avi t asi Pada Suat u Ar ea\ n i t er asi ke- %i ' %i t er asi ) #pl t . show( ) #pl t . savef i g( ' g_updat e_i t er - %i . png' %i t er asi )
def pl ot _best ( ar X, g_st ar t , g_best , r ho, i t er asi ) : pl t . pl ot ( ar X, g_st ar t ) pl t . pl ot ( ar X, g_best ) pl t . scat t er ( ar X, g_obser ve) pl t . l egend( [ ' g_st ar t ' , ' g_best ' , ' g_obser ve' ] , l oc=' best ' ) pl t . xl i m( - 1010, 1010) pl t . xl abel ( ' j ar ak' ) pl t . yl abel ( ' g' ) pl t . t i t l e( ' Pl ot Model Per hi t ungan Gr avi t asi Pada Suat u Ar ea\ n i t er asi ke- %i dengan del t a_r ho %f ' %( i t er asi , r ho) ) pl t . savef i g( ' g_updat e_i t er - %i . png' %i t er asi ) pl t . show( )
def i ni t i al ( del t a_r ho_1, del t a_r ho_2, h1, h2, k, t ) : ar X=[ ] ar F=[ ] ar F_noi se=[ ] ar F_st ar t =[ ]
h=- 1000 whi l e h<=1000: i f h==0: ar X. append( 0. 001) el se: ar X. append( h) h=h+100
N=l en( ar X) f or i i n r ange( 0, N) : a=1. 0+( h2*h2) / ( ar X[ i ] *ar X[ i ] ) b=1+( h1*h1) / ( ar X[ i ] *ar X[ i ] ) c=np. l og( a/ b)
# g_model si gnal F=k*del t a_r ho_1*t *c ar F. append( F)
# g_noi se as obser ve si gnal F_noi se=25*r andom. r andom( ) *r andom. r andi nt ( - 1, 1) +k*del t a_r ho_1*t *c ar F_noi se. append( F_noi se)
# g_appr oxi mat i on wi t h del t a r ho=100 F_st ar t =k*del t a_r ho_2*t *c ar F_st ar t . append( F_st ar t )
r et ur n ( N, ar X, ar F, ar F_noi se, ar F_st ar t )
# I ni si al i sasi kondi si awal N, ar X, g_model , g_obser ve, g_st ar t = i ni t i al ( del t a_r ho_1, del t a_r ho_2, h1, h2, k, t ) pl ot _i ni t i al ( ar X, g_model , g_obser ve, g_st ar t )
del t a_r ho=100 maxI t er =1000000 ar GNew=[ ] i t er asi =0 aveSQE=100 aveSQE_t emp=0
pr i nt ' Tugas Kapi t a Sel ekt a Sai ns Komput asi ' pr i nt ' Di nan Andi wi j ayakusuma' pr i nt ' 20913007 \ n' pr i nt ' =====================================' pr i nt ' I t er asi \ t del t a_r ho\ t Er or Rat a2' pr i nt ' =====================================' # Pr oses Hampi r an whi l e i t er asi <maxI t er : sumEr r =0 f or i i n r ange( 0, N) : a=1. 0+( h2*h2) / ( ar X[ i ] *ar X[ i ] ) b=1+( h1*h1) / ( ar X[ i ] *ar X[ i ] ) c=np. l og( a/ b)
# g_hampi r an g_new=k*del t a_r ho*t *c ar GNew. append( g_new)
# Hi t ung Er r or er r = g_obser ve[ i ] - g_new sumEr r = sumEr r + er r aveSQE = sumEr r / N
# Kondi si kan si st en dengan er r or yang t er j adi i f aveSQE>0: del t a_r ho=del t a_r ho+( del t a_r ho/ 10000. 0) el se: del t a_r ho=del t a_r ho- ( del t a_r ho/ 10000. 0)
# pl ot Gr af i k pada i t er asi t er t ent u i f i t er asi %1000==0: pr i nt ' %i \ t %f \ t %f ' %( i t er asi , del t a_r ho, np. abs( aveSQE) ) aveSQE_t emp = aveSQE #pl ot _hampi r an( ar X, g_st ar t , ar GNew, del t a_r ho, i t er asi )
# Bandi ngkan Er r or dengan t ol er ansi i f np. abs( aveSQE) < t ol er ansi : pr i nt ' %i \ t %f \ t %f ' %( i t er asi , del t a_r ho, np. abs( aveSQE) ) g_best = ar GNew pl ot _best ( ar X, g_st ar t , g_best , del t a_r ho, i t er asi ) br eak el se: ar GNew=[ ] i t er asi =i t er asi +1
Problem 2 Pada problem yang kedua ini dilakukan pemodelan sinyal seismik untuk kemudian dilakukan proses inversi sinyal seismik tersebut. Pada tahan pertama membuat sinyal model reflektifitas dengan memanfaatkan bilangan random. Diperoleh plot grafik reflektifitas sebagai berikut :
Gambar 5. Plot Grafik sinyal reflektifitas, digenerate secara random
Berikutnya kita menggunakan sinyal wavelet jenis Ricker Wavelet untuk mendapatkan bentuk model sinyal seismik dari sinyal reflektivitas. Dilakukan operasi konvolusi antara sinyal reflektivitas dengan sinyal wavelet Ricker tersebut.Bentuk sinyalnya adalah sebagai berikut.
Gambar 6. Plot Grafik dari model Ricker wavelet Operasi konvolusi antara sinyal reflektivitas (Gambar 5) dengan sinyal wavelet (Gambar 6) akan menghasilkan sebuah sinyal baru yang kemudian disebut sebagai sinyal model seismik. Ditunjukkan pada Gambar 3. (Setiap kali menjalankan program sangat mungkin mendapatkan sinyal seismik yang berbeda-beda, karena reflektivitas yang dipakai dibuat dengan mengenerate bilangan random)
Gambar 7. Plot Grafik operasi konvolusi Sinyal Reflektifitas dengan Ricker wavelet Sinyal hasil konvolusi tersebut akan dijadikan sebagai model untuk membuat sinyal observasi, dengan cara menambahkan noise terhadap sinyal model tersebut. Hasil penambahan noisenya ditunjukkan pada Gambar 7.
Gambar 7. Plot Grafik Sinyal Observe (sinyal orisinil yang telah diberi noise) Dilakukan kembali hampiran terhadap sinyal observe pada Gambar 7. Membuat sinyal reflektivitas baru yang nilainya berbeda dengan sinyal reflektivitas pertama. Misalkan sinyal yang dibuat adalah sebagai berikut :
Gambar 8. Plot Grafik Reflektifitas yang kedua untuk memulai hampiran
Dari nilai reflektivitas tersebut kembali dilakukan operasi konvolusi dengan sinyal wavelet sehingga menghasilkan sinyal seismik hampiran yang pertama atau pada iterasi ke-0, selanjutnya kita menghitung kuadrat simpangan rata-ratanya atau RMSE (Root Mean Square Error). Bentuk sinyalnya adalah sebagai berikut : Gambar 9. Plot Grafik hampiran dengan operasi konvolusi pada iterasi ke-0 Dilakukan perulangan proses untuk melakukan hampiran hingga RMSE lebih kecil dari nilai tolerasi yaitu eps =1.10 -3 . Hasil yang didapatkan setelah melakukan 64 kali iterasi adalah sebagai berikut :
Gambar 10. Plot Grafik hampiran dengan operasi konvolusi pada iterasi ke-5 s/d iterasi ke-60
Diperoleh hampiran terbaik dengan nilai RMSE < 1.10 -3 adalah pada iterasi ke-64. Ditunjukkan pada plot grafik berikut :
Gambar 11. Plot Grafik hampiran terbaik pada iterasi ke-64 dengan nilai RMSE=0.000929
Pada Gambar 11 di atas terlihat bawha sinyal hampiran sudah hampir rapat dengan sinyal observasi. Hal tersebut menujukkan hampiran atau pemodelan sinyal pada iterasi ke-64 sangat mendekati atau sesuai dengan sinyal observasi.
Berikut adalah hasil running program, diperoleh hasil terbaik pada iterasi ke 64 dengan nilai nilai RMSE sebesar 0.000929
Berikut adalah kode program, menggunakan bahasa pemrograman python2.6 # - *- codi ng: ut f - 8 - *- " "" Cr eat ed on Wed Mar 26 10: 48: 57 2014
@aut hor : di nan_andi wi j ayakusuma " "" i mpor t r andom i mpor t numpy as np i mpor t mat pl ot l i b. pypl ot as pl t f r omsci py i mpor t si gnal
# wavel et r i cker def gener at e_r i cker _wavel et ( f , l engt h=0. 512, dt =0. 0011) : t = np. l i nspace( - l engt h/ 2, ( l engt h- dt ) / 2, l engt h/ dt ) y = ( 1. 0 - 2. 0*( np. pi **2) *( f **2) *( t **2) ) * np. exp( - ( np. pi **2) *( f **2) *( t **2) ) r et ur n t , y
def gener at e_r ef l ek_si gnal ( ) :
Ref _si gnal =[ ] f or i i n r ange( 0, 100) : i f i %4==0: r =( r andom. r andom( ) - 0. 5) *4. 0 el se: r =0 Ref _si gnal . append( r )
pl t . t i t l e( ' Ref l ect i vi t y Si gnal ' ) pl t . pl ot ( Ref _si gnal ) pl t . show( ) #pl t . savef i g( ' Ref l ect i vi t y_Si gnal . PNG' ) r et ur n Ref _si gnal
def gener at e_obser ve_si gnal ( Ref _si gnal ) : obser ve_si gnal =[ ] # Buat Noi se pada si nyal dummy f or i i n r ange( 0, l en( Ref _si gnal ) ) : noi se=( r andom. r andom( ) - 0. 5) *1e- 1 obser ve_si gnal . append( Ref _si gnal [ i ] +noi se) #pl t . savef i g( ' obser ve_si gnal . PNG' ) r et ur n obser ve_si gnal
def mai n( ) : # Buat Si nyal Random Ref _si gnal = gener at e_r ef l ek_si gnal ( )
# Buat Ri cker Wavel et f = 15 t , y = gener at e_r i cker _wavel et ( f )
# Konvol usi Si nyal convol ut i on_si gnal = si gnal . convol ve( Ref _si gnal , y) pl t . t i t l e( ' Convol ut i on Si gnal ' ) pl t . pl ot ( convol ut i on_si gnal ) pl t . show( )
# Ber i kan Noi se dan j adi kan sebagai Obser ve Si gnal obser ve_si gnal = gener at e_obser ve_si gnal ( Ref _si gnal ) conv_obser ve_si gnal = si gnal . convol ve( obser ve_si gnal , y) pl t . t i t l e( ' Obser ve Si gnal ' ) pl t . pl ot ( convol ut i on_si gnal , ' - r ' , conv_obser ve_si gnal , ' - b' ) pl t . l egend( [ ' or i gi nal _si gnal ' , ' obser ve_si gnal ' ] , l oc=' best ' ) pl t . show( )
# Buat ni l ai bar u unt uk mendekat i si nyal new_Ref _si gnal =gener at e_r ef l ek_si gnal ( )
# Hampi r an Si gnal eps=1e- 3 i t er asi =0 pr i nt ' Tugas Kapi t a Sel ekt a Sai ns Komput asi ' pr i nt ' Di nan Andi wi j ayakusuma' pr i nt ' 20913007 \ n' pr i nt ' =====================================' pr i nt ' I t er asi \ t RMSE'
whi l e i t er asi <100000 : f or i i n r ange( l en( new_Ref _si gnal ) ) : di st ance = new_Ref _si gnal [ i ] - obser ve_si gnal [ i ] #pr i nt j ar ak i f di st ance<0: new_Ref _si gnal [ i ] = new_Ref _si gnal [ i ] + 0. 1*np. abs( di st ance) el i f di st ance>0: new_Ref _si gnal [ i ] = new_Ref _si gnal [ i ] - 0. 1*np. abs( di st ance) el se: new_Ref _si gnal [ i ] = new_Ref _si gnal [ i ]
convol ut i on_new=si gnal . convol ve( new_Ref _si gnal , y)
r mse=np. sqr t ( ( 1. 0/ l en( convol ut i on_new) ) *np. sum( ( conv_obser ve_si gnal - convol ut i on_new) *( conv_obser ve_si gnal - convol ut i on_new) ) )
i f r mse < eps: pr i nt ' %i \ t %f ' %( i t er asi , r mse) pl t . t i t l e( ' Hampi r an Si nyal Ter bai k pada i t er asi ke- %i ni l ai r mse=%f ' %( i t er asi , r mse) ) pl t . pl ot ( conv_obser ve_si gnal , ' - b' , convol ut i on_new, ' - r ' ) pl t . l egend( [ ' obser ve si gnal ' , ' i t er at i on si gnal ' ] , l oc=' best ' ) pl t . show( ) #pl t . savef i g( ' si nyal _hampi r an_t er bai k_i t er asi _ke- %i . png' %i t er asi ) pr i nt ' =====================================' br eak el se: i f i t er asi %5==0: pr i nt ' %i \ t %f ' %( i t er asi , r mse) pl t . t i t l e( ' Hampi r an Si nyal pada i t er asi ke- %i , ni l ai r mse=%f ' %( i t er asi , r mse) ) pl t . pl ot ( conv_obser ve_si gnal , ' - b' , convol ut i on_new, ' - r ' ) pl t . l egend( [ ' obser ve si gnal ' , ' i t er at i on si gnal ' ] , l oc=' best ' ) pl t . show( ) #pl t . savef i g( ' si nyal _hampi r an_i t er asi _ke- %i . png' %i t er asi ) i t er asi =i t er asi +1