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
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.
• 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
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
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.
# 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
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 = []
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()
• 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]
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)
P = np.sqrt(np.mean(dt))
HypoX = []
HypoY = []
Erms = []
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()
• 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)))