Anda di halaman 1dari 21

LAPORAN PRAKTIKUM

INVERSI GEOFISIKA TG 3004

MODUL KE – 5
INVERSI NON LINEAR

Oleh:
Winna Sebayang 120120017

Asisten :
Alifah Iftinan 119120042
Andika Bonardo Sipahutar 119120122
Bernard Cavin Ronlei 119120087
Kiki Harfianza 119120111
Mu'amar Hafiz 119120084
Nisa Nur Azizah 119120027

PROGRAM STUDI TEKNIK GEOFISIKA


JURUSAN TEKNOLOGI PRODUKSI DAN INDUSTRI
INSTITUT TEKNOLOGI SUMATERA
2022/2023
I. Tujuan Praktikum
a. Mampu menyelesaikan persamaan inversi dalam bidang geofisika yang
menggunakan metode grid search dan monte carlo
b. Mampu menganalisa fungsi dari inversi non linear dengan metode grid
search dan monte carlo

II. Dasar Teori


2.1 Pencarian Sistematik
Metode inversi non-linier melalui linierisasi atau pendekatan linier termasuk
dalam kelompok metode yang sering disebut sebagai pendekatan lokal (local
search approach). Hal ini mengingat pencarian solusi dilakukan hanya
berdasarkan informasi mengenai kecenderungan fungsi obyektif di sekitar model
yang sedang ditinjau (model awal atau model hasil modifikasi pada suatu iterasi
tertentu). Informasi tersebut umumnya hanya berupa gradien fungsi obyektif yang
dapat memberikan petunjuk ke arah mana solusi atau model dengan nilai fungsi
obyektif minimum kemungkinan besar berada. Perhitungan gradien fungsi
obyektif hanya melibatkan turunan orde pertama dengan mengabaikan suku-suku
orde lebih tinggi (orde-2 atau lebih). Hal tersebut dapat menimbulkan masalah
konvergensi. Penyelesaian inversi non-linier dengan pendekatan linier
memerlukan model awal yang sudah cukup dekat dengan solusi. Untuk itu
informasi "a priori" dalam bentuk model awal yang baik sangat diperlukan. Solusi
inversi dapat konvergen menuju ke minimum lokal yang bukan solusi optimum.
Pendekatan linier suatu permasalahan inversi non-linier sering kurang memadai.
Fungsi obyektif non-linier dapat memiliki minimum lebih dari satu dimana
hampir semua nilai minimum tersebut hanya bersifat minimum lokal, bukan
minimum global yang diharapkan. Semakin tidak linier suatu fungsi dan semakin
banyak jumlah parameter model, maka semakin kompleks bentuk fungsi
obyektifnya. Dalam konteks inversi, fungsi obyektif sering digambarkan secara
matematis sebagai suatu "permukaan" pada ruang berdimensi M yang disebut
ruang model, di mana M adalah jumlah parameter model. Pada metode pencarian
sistematik setiap grid merepresentasikan satu sampel model yang harus dihitung
responsnya untuk memperoleh harga fungsi obyektif yang berasosiasi dengan
model tersebut. Oleh karena itu teknik pencarian sistematik seperti ini sering
disebut pula sebagai teknik grid search. Informasi mengenai harga fungsi obyektif
untuk semua grid pada ruang model dapat digunakan untuk menentukan solusi,
yaitu model dengan harga fungsi obyektif minimum.
2.2 Pencarian Acak
Pada metode pencarian global, pola fungsi obyektif sebenarnya dapat
diperkirakan berdasarkan harga fungsi obyektif pada beberapa sampel model yang
dipilih secara acak (random) dari ruang model. Jumlah sampel model yang
digunakan jauh lebih sedikit dibandingkan jumlah sampel model pada metode
pencarian sistematik. Dengan demikian pendekatan tersebut dapat meningkatkan
efisiensi metode pencarian sistematik. Pemilihan model pada metode pencarian
acak (random search) sesuai namanya dilakukan secara acak. Setiap model dalam
ruang model memiliki peluang yang sama untuk dipilih sebagai sampel model.
Bilangan acak dibangkitkan dengan probabilitas uniform antara 0 dan 1 yang
kemudian dipetakan pada interval harga parameter model. Perhitungan
pemodelan kedepan dilakukan untuk model yang terpilih yang jumlahnya tidak
terlalu besar jika dibandingkan dengan jumlah keseluruhan model yang mungkin
pada ruang model. Metode ini sering disebut sebagai metode Monte-Carlo karena
mengambil analogi perjudian yang umumnya bersifat acak.

Gambar 2.1 Kontur fungsi objektif hasil interpolasi 50 titik yang tersebar
secara acak.
Jika jumlah parameter model adalah M dan setiap parameter didiskretisasi secara
homogen menjadi N harga maka jumlah model yang mungkin dalam ruang model
menjadi N^M. Pada metode monte carlo , jumlah sample acak harus berkorelasi.
III. Langkah Pengerjaan
3.1 Langkah Kerja
1. Buka python atau studio visual code
2. Import modul yang akan digunakan.
3. Input Vavg dan nilai Tobservasi
4. Definisikan ruang model
5. Input nilai L yang diinginkan
6. Looping pencarian model solusi yang menghasilakan misfit minimum
7. Hitung RMS Error dan Nilai Tcal
8. Plot titik hiposenter dan error.

3.2 Diagram Alir


3.2.1 Problem 1 Penentuan Lokasi Hiposenter Gempa dengan Inversi
Non Linear Grid Search
3.2.2 Problem 2 Penentuan Lokasi Hiposenter Gempa dengan Inversi
Non Linear Monte Carlo
3.2.3 Problem 3 Pemodelan ke Depan dan Inversi Sederhana pada
Metode Gayaberat Menggunakan Pendekatan Linear
IV. Hasil dan Pembahasan
4.1 Hasil
4.1.1 Problem 1
• L= 5

• L = 10

• L = 100
• L = 500

4.1.2 Problem 2
• L=5

• L = 10
• L = 100

• L = 500

4.1.3 Problem 3
• Kurva Respon gravity terhadap jarak

• Kurva Hubungan RMS Error dengan Iterasi

4.2 Pembahasan
Pada praktikum modul 5 ini dengan judul inversi non linear dengan
pendekatan global menggunakan 2 metode. Pendekatan global adalah metode
pendekatan inversi yang dilakukan dengan mengevaluasi secara sistematik,
dimana Teknik ini menggunakan 2 metode yaitu metode grid search dan
monte carlo. Metode Grid search adalah metode pendekatan global yang
dilakukan secara sistematis, sedangkan metode monte carlo adalah metode
pendekatan global yang dilakukan secara acak/random. Pada hasil praktikum
dengan metode grid search dengan lebar grid sebesar 5, diperoleh hasil bahwa
titik gridnya ada sebanyak 5 dan hasilnya belum kompleks, serta RMS
Errornya kecil, yaitu sebesar 2. Untuk lebar grid sebesar 10, diperoleh hasil
bahwa titik grid untuk mencapai titik awal dengan titik akhir ada 10 titik, hasil
belum terlalu kompleks, dan rms errornya sebesar 20. Untuk lebar grid sebesar
100 diperoleh hasil bahwa titik grid sudah tidak terhitung namun diperkirakan
juga 100, hasil sudah mulai terlihat smooth dan kompleks, dan rms errornya
sebesar melebihi angka 400. Untuk lebar grid sebesar 500, hasil sudah snagat
smooth dan sangat kompleks, namun rms errornya sangat besar yaitu sebesar
4000. Hal ini dapat disimpulkan bahwa semakin kecil nilai lebar gridnya (L)
maka titik grid yang dihasilkan sesuai atau sama dengan lebar gridnya, dan
semakin besar nilai lebar grid, maka akan semakin smooth dan kompleks
model yang dihasilkan namun rms errornya juga semakin besar.
Pada hasil praktikum dengan metode monte carlo dengan lebar grid 5
diperoleh hasil bahwa rms errornya sebesar 2, untuk lebar grid sebesar 10
diperoleh rms error sebesar 5, dan untuk lebar grid sebesar 100, diperoleh rms
error sebesar 20, serta untuk lebar grid sebesar 500 diperoleh rms error sebesar
10, sehingga dapat disimpulkan bahwa untuk metode monte carlo, rms error
tidak berbanding lurus dengan lebar grid dikarenakan metode monte carlo
melakukan pencarian secara acak/random. Namun untuk model yang
dihasilkan, semakin besar lebar grid, maka semakin smooth juga model yang
dihasilkan Ketika nilai N bernilai besar, maka ruang model/toitik yang
digunakan semakin banyak, dan sebaliknya Ketika N bernilai kecil, maka
ruang model yang digunakan juga semakin kecil.
Pada problem tiga melakukan inversi non linear dengan pendekatan
linear dan monte carlo, lalu hasil dari keduanya dibandingkankan menurut
output yang dihasilkan. Disini kita disuruh untuk mencari data respon gravity
yang mana data yang akan digunakan berupa data sintetis berdasarkan
persamaan matematis yang sudah ada. Menggunakan parametr X dan Z
dengan dua cara pendekatan, pada metode monte carlo setiap dijalankan hasil
yang kita dapatkan selalu berbeda. Maka dilakukan trial and error untuk
mendapatkan hasil yang mendekati dengan linear. Sebab perhitungan dengan
metode monte carlo yang digunakan perhitungannya dilakukan secara acak
dan hasil yang didapatkan juga acak, maka beberapa hasil yang muncul tidak
terlalu akurat dengan yang linear

V. Kesimpulan
Berdasarkan praktikum modul 5 tentang Inversi Non Linier :
1. Metode grid seacrh dan monte carlo keduanya dapat digunakan untuk
menyelesaikan permasalahan inversi non linear.
2. Perhitungan dengan metode grid search dilakuakn pada semua runag model
sedangkan monte carlo dilakukan secara acak pada masing-masing ruang
model sehingga titik error yang didaptkan kecil.
DAFTAR PUSTAKA

Grandis, Hendra. 2009. Pengantar Pemodelan Inversi Geofisika. Bhumi Printin: Bandung

Meju, A Max.1994. Geophysical Data Analysis: Understanding Inverse Problems Theory


and Practice. Society of Exploration Geophysicists (SEG)

Qiang, Jian-ke, Xue Han, dan Shi-kun Dai. 2013. “3D DC Resistivity Inversion with
Topography Based on Regularized Conjugate Gradient Method”. International
Journal of Geophysics, Vol

Silva, J.B.C. 1986. Reduction to The Pole as an Inverse Problem and Its Application to
Low Latitude Anomalies. Geophysics. 51, 369 - 382.

Supriyanto, M.Sc. 2007. Analisis Data Geofisika:Memahami Teori Inversi. Departemen


Fisika FMIPA: Univeristas Indonesia
LAMPIRAN
• Problem 1

# B_1120120017_Winna Sebayang
# Inversi B
#Grid Search

import numpy as np
import matplotlib.pyplot as plt
from numpy.linalg import inv

#Diketahui
a = 0
b= 1
c = 7
Vavg = 4
x = [0, 0, 7, 1]
z = [0, 1, 7, 0]
n = len(x)
#True Hyposenter
x0= (a+c)/2
z0=5

# Forward modelling untuk Menghitung Waktu Tempuh Gelombang


t = []
for i in range (n):
t.append(((1/Vavg) * np.sqrt((z[i]- z0)**2 + (x[i] - x0)**2
)))

mean = np.mean(t)
p = np.random.normal(1)
noise = p * 0.03 * (mean)
tobs = t
tobs[3] = ((1/Vavg) * np.sqrt((z[i]- z0)**2 + (x[i] - x0)**2) + (p
* 0.5 * (np.mean(t))))
#tobs = np.reshape(tobs,(len(tobs),1))
Xsts = [20,50,40,10]
Ysts = [10,25,50,40]
#Definisikan Ruang Model
L = 100 #Lebar Grid
X0 = np.linspace(0,50,L)
Y0 = np.linspace(0,50,L)
#Proses Looping Dalam Pencarian Model Solusi yang Menghasilkan
Misfit Minimum
P = 10 #Nilai Awal Taksiran Misfit Minimum (dalam sekon), setiap
misfit yang diatas 10 gak dimasukkan dalam hasil
HypoX = []
HypoY = []
Erms = []

for i in range(len(Y0)): #mencari dari nilai Y


for j in range(len(X0)):
tcal = []
Dt = []
for k in range(len(Xsts)):
tcal=(np.sqrt((X0[j] - Xsts[k])**2 + (Y0[i] -
Ysts[k])**2) / Vavg)
Dt.append((tobs[k]-tcal)**2)

misfit = np.sqrt(np.mean(Dt))
if misfit < P:
HypoX.append(X0[j])
HypoY.append(Y0[i])
Erms.append(misfit)
P = misfit
else : pass #diluar dari syarat yang ditentukan maka akan
dilewati

cmin = np.min(Erms)
cmax = np.max(Erms)
c = Erms

Hypo = np.array([HypoX,HypoY])
time= np.reshape(Dt, (len(Dt),1))
print('Nilai Delai Time', time)
print(Hypo)
print('Dt =', Dt)
print("NILAI TCAL: ", tcal)

plt.figure()
Xgrid, Ygrid = np.meshgrid(X0, Y0)
plt.scatter(Xgrid.ravel(),Ygrid.ravel(), s=0.5)
plt.plot(HypoX,HypoY,'-r')
plt.plot(HypoX[0],HypoY[0],'*c',label='awal')
plt.plot(HypoX[len(HypoX)-1],HypoY[len(HypoY)-
1],'*y',label='akhir')
plt.plot(Xsts,Ysts,'v',label='stasiun')
plt.xlabel('Koordinat X', fontsize=14)
plt.ylabel('Koordinat Y', fontsize=14)
plt.legend()

# Membuat plot RMS error dengan skala warna relatif koordinat


plt.figure(figsize=(8, 6))
plt.scatter(Xgrid.ravel(),Ygrid.ravel(), s=0.5)
plt.scatter(HypoX, HypoY, c=Erms, cmap='jet', vmin=cmin,
vmax=cmax)
plt.plot(Xsts,Ysts,'v',label='stasiun')
plt.plot(HypoX[len(HypoX)-1],HypoY[len(HypoY)-
1],'*y',label='akhir')
plt.colorbar()
plt.title('Hiposenter', fontsize=16)
plt.xlabel('Koordinat X', fontsize=14)
plt.ylabel('Koordinat Y', fontsize=14)
plt.legend()
plt.show()

• Problem 2

import numpy as np
import matplotlib.pyplot as plt
from numpy.linalg import inv

#True Hipocenter
x0 = 3.5
z0 = 5
to = 0

#Posisi Stattion
x = [0, 0, 7, 1]
z = [0, 1, 7, 0]
n = len(x)

Vavg = 4
Xsts = [20,50,40,10]
Ysts = [10,25,50,40]

# Forward modelling untuk Menghitung Waktu tobs


t = []
for i in range (n):
t.append(((1/Vavg) * np.sqrt((z[i]- z0)**2 + (x[i] - x0)**2
)))

mean = np.mean(t)
p = np.random.normal(1)
noise = p * 0.03 * (mean)
tobs = t
tobs[3] = ((1/Vavg) * np.sqrt((z[i]- z0)**2 + (x[i] - x0)**2) + (p
* 0.5 * (np.mean(t))))
print('Nilai tobs adalah : ', tobs)

# Definisikan ruang model


N = 500
X0 =np.random.uniform(low = 0, high = 50, size=[N, 1])
Y0 =np.random.uniform(low = 0, high = 50, size=[N, 1])

#Lakukan looping pencarian model soluai yang menghasilkan misfit


minimum
# Tebakan awal
xo = 0
yo = 0
dt = []
for i in range(len(Xsts)):
for k in range(len(Ysts)):
tcal = (np.sqrt((Ysts[i] - yo) ** 2 + (Xsts[i] -xo) ** 2)
/ Vavg)
dt.append((tobs[k]-tcal)**2)

P = np.sqrt(np.mean(dt))

HypoX = []
HypoY = []

Erms = []

for i in range (len(Y0)):


for j in range (len(X0)):
Dt = []
Tcal = []
for k in range (len(Xsts)):
tcal = (np.sqrt((X0[j]-Xsts[k])**2 + (Y0[i]-
Ysts[k])**2)/Vavg)
Tcal.append(tcal)
Dt.append((tobs[k]-tcal)**2)
misfit = np.sqrt(np.mean(Dt))
if misfit < P:
HypoX.append(X0[j])
HypoY.append(Y0[i])
Erms.append(misfit)
P = misfit
else : pass

cmin = np.min(Erms)
cmax = np.max(Erms)
c = Erms

Hypo = np.array([HypoX,HypoY])
time= np.reshape(Dt, (len(Dt),1))
print('Nilai Delai Time', time)
print(Hypo)
print('Dt =', Dt)
print("NILAI TCAL: ", tcal)

plt.figure()
Xgrid, Ygrid = np.meshgrid(X0, Y0)
plt.scatter(Xgrid.ravel(),Ygrid.ravel(), s=0.5)
plt.plot(HypoX,HypoY,'-g')
plt.plot(HypoX[0],HypoY[0],'*r',label='awal')
plt.plot(HypoX[len(HypoX)-1],HypoY[len(HypoY)-
1],'*y',label='akhir')
plt.plot(Xsts,Ysts,'v',label='stasiun')
plt.xlabel('Koordinat X', fontsize=14)
plt.ylabel('Koordinat Y', fontsize=14)
plt.title('Metode Monte Carlo')
plt.legend()

# Membuat plot RMS error dengan skala warna relatif koordinat


plt.figure()
plt.scatter(Xgrid.ravel(),Ygrid.ravel(), s=0.83)
plt.scatter(HypoX, HypoY, c=Erms, cmap='hot', vmin=cmin,
vmax=cmax)
plt.plot(Xsts,Ysts,'v',label='stasiun')
plt.plot(HypoX[len(HypoX)-1],HypoY[len(HypoY)-
1],'*g',label='akhir')
plt.colorbar()
plt.title('RMS Error', fontsize=16)
plt.xlabel('Koordinat X', fontsize=14)
plt.ylabel('Koordinat Y', fontsize=14)
plt.legend()
plt.show()

• Problem 3

import numpy as np
import matplotlib.pyplot as plt
from numpy.linalg import inv

rho = 2300
Po = [40, 20]
X = 5
G = 6.74e-11
R = 5
K = G * (4 / 3) * np.pi
Z = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0]
gx = []
for i in range(50):
gx.append(((K * ((R) ** 3) * rho) / ((X[i] - Po[0]) ** 2 +
(Po[1]) ** 2)) * 1e+5)
gx = np.reshape(gx, (50, 1))

Mo = [9, 14]
Erms = []
for niter in range(15):
gcal = []
dgcal_xo = []
dgcal_zo = []
for i in range(50):
gcal.append(((K * ((R) ** 3) * rho) / ((X[i] - Mo[0]) ** 2
+ (Mo[1]) ** 2)) * 1e+5)
dgcal_xo.append( (((K * (R) ** 3) * rho) * 2 * (X[i] -
Mo[0]) / (((X[i] - Mo[0]) ** 2 + (Mo[1]) ** 2) ** 2)) * 1e+5)
dgcal_zo.append((((K * (R) ** 3) * rho) * -2 * Mo[1] /
(((X[i] - Mo[0]) ** 2 + (Mo[1]) ** 2) ** 2)) * 1e+5)
dgcal_zo.append((((K * (R) ** 3) * rho) * -2 * Mo[1] /
(((X[i] - Mo[0]) ** 2 + (Mo[1]) ** 2) ** 2)) * 1e+5)
gcal = np.reshape(gcal, (50, 1))
J = np.zeros((50, 2))
for i in range(50):
J[i][0] = dgcal_xo[i]
J[i][1] = dgcal_zo[i]
Msav = Mo
Msav = np.reshape(Msav, (2, 1))
Mo = np.mat(Msav) + np.mat(inv(np.mat(J.transpose()) *
np.mat(J))) * np.mat(J.transpose()) * (np.mat(gx) - np.mat(gcal))

dt = gx - gcal
Erms.append(np.sqrt(np.average(dt ** 2)))

M1 = [9.0000, 26.9868, 38.3905, 38.2620, 37.6730, 35.5659,


31.2770, 29.7994, 31.2770, 31.2770]
M2 = [14.0000, 17.4488, 3.0608, 4.7607, 7.0953, 9.5734, 10.6223,
9.9968, 10.6223, 10.6223]
radius = 5
xcenter = Po[0]
ycenter = Po[1]
theta = np.arange(0, 2 * np.pi, 0.01)
x = radius * np.cos(theta) + xcenter
y = radius * np.sin(theta) + ycenter
y2 = []
x2 = []
for i in range(len(M1)):
xcenter2 = M1[i]
ycenter2 = M2[i]
x2.append(5 * np.cos(theta) + xcenter2)
y2.append(5 * np.sin(theta) + ycenter2)

print('calculate rms eror', dt)


plt.plot(x, y, linewidth=10, label='True Position')
plt.plot(x2, y2, '.y', label='Update Model')
plt.plot(X, Z, '*r')
plt.plot(M1, M2, '-r')
plt.plot(M1, M2, 'or', markersize=2)
plt.xlabel('distance(m)')
plt.ylabel('depth(m)')
plt.figure()
plt.plot(X, gx)
plt.xlabel('distance(m)')
plt.ylabel('Respon Gravity (mGal)')
plt.figure()
plt.plot(Erms)
plt.title('Erms Vs Iterasi')
plt.xlabel('N Iterasi')
plt.ylabel('Erms')
plt.show()

Anda mungkin juga menyukai