Anda di halaman 1dari 19

LAPORAN SEMENTARA

INVERSI GEOFISIKA TG 3004

MODUL KE – 3
INFORMASI “A PRIORI” MODEL REFERENSI, FLATNESS DAN SMOOTHNESS

Oleh:
Muhamad Arif Samsudin 120120158

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. HASIL
➢ Problem 1
1. Tanpa Pembobotan
1.1 Variasi V = 4

Kurva Erms Vs N Iterasi V = 4

Hypocenter Determination V = 4
1.2 Variasi V = 5

Kurva Erms Vs N Iterasi V = 5

Hypocenter Determination V = 5
1.3 Variasi V = 6

Kurva Erms Vs N Iterasi V = 6

Hypocenter Determination V= 6
1.4 Variasi V = 7

Kurva Erms Vs N Iterasi V = 7

Hypocenter Determination V = 7
➢ Problem 2
2. Dengan Pembobotan
2.1 Variasi V = 4

Kurva Erms Vs N Iterasi V = 4

Hypocenter Determination V= 4
2.2 Variasi V = 5

Kurva Erms Vs N Iterasi V = 5

Hypocenter Determination V= 5
2.3 Variasi V = 6

Kurva Erms Vs N Iterasi V = 6

Hypocenter Determination V= 6
2.4 Variasi V = 7

Kurva Erms Vs N Iterasi V = 7

Hypocenter Determination V= 7
➢ Problem 3
3.1 Hasil Perhitungan menggunakan Python
3.2

Tampilan VScode Problem 3

Hasil Perhitungan Problem 3 Menggunakan Python


3.3 Hasil Perhitungan Manual
II. ANALISIS
Pada Problem satu dilakukan Penentuan lokasi hiposenter gempa dengan model referensi
dengan variasi model keccepatan gelombang 1 layer dengan nilai V = 4,5,6,7,8 yang dilakukan
pada pembobotan dan tanpa pembobotan. Hasilnya pada kurva yang memiliki bobot memiliki data
yang mendekati hiposenter sebenarnya sedangkan pada kurva yang tidak memiliki bobot memiliki
jarak yang cukup jauh. Dengan demikian, pengaruh data outlier tersebut perlu kita minimalkan
dampaknya terhadap hasil inversi, yaitu dengan cara memberikan bobot pafda setiap data. Data
outlier diberikan bobot rendah dengan tujuan memerkecil pengaruhnya terhadap hasil inversi. Pada
kasus satu lapisan dimana hanya terdapat satu nilai kecepatan (misal V) maka sinar gelombang
dapat diasumsikan berupa garis lurus, sehingga persamaan untuk menghitung waktu tempuh adalah
sebagai berikut,

Dimana 𝑇𝑜 merupakan waktu asal (origin time), yaitu waktu awal terjadinya rupture dan 𝑆
merupakan jarak yang ditempuh sinar dari sumber gempa ke stasiun yang dihitung melalui
persamaan jarak. jika pada prakteknya data waktu tempuh yang kita observasi terdapat kesalahan,
misal pada saat kita picking waktu tiba gelombang P, karena faktor noise maka kita tidak terlalu
yakin dengan hasil picking kita (onsite pertama dari gelombang P tidak jelas) maka data tersebut
akan menyebakan kesalahan pula pada penentuan posisi hiposenter. Dengan demikian, pengaruh
data outlier tersebut perlu kita minimalkan dampaknya terhadap hasil inversi, yaitu dengan cara
memberikan bobot pafda setiap data. Data outlier diberikan bobot rendah dengan tujuan
memerkecil pengaruhnya terhadap hasil inversi.
Pada problem dua dilakukan Inversi dengan Kondisi Under-determined, Adapun data yang
diperoleh adalah data hasil Suatu pengamatan koefisien refleksi gelombang seismic terhadap sudut
dating (incident angle).

Pada kasus under-determined data tidak cukup memberikan kendala untuk menentukan solusi
atau model secara unik (tunggal). Untuk mengatasi masalah itu, diperlukan informasi tambahan
yang diharapkan dapat memberikan kendala atau batasan terhadap model yang dicari. Pada
contoh regresi garis lurus informasi tersebut misalnya:
- Informasi mengenai titik lain (diperoleh secara independent) yang harus dilalui garis yang
dimaksud sehingga N=M
- Asumsi berdasarkan sumber informasi lainnya mengenai harga salah satu parameter model.
Dengan demikian N=M=1, karena harga salah satu parameter model sudah diketahui
Jika ditinjau permasalahan inversi linier d = Gm dimana N<M (purely under-determined).
Terdapat banyak solusi dengan kesalahan prediksi data E=0. Selama hubungan antara data
dengan parameter model d = Gm bersifat konsisten maka sebenarnya data memberikan informasi
mengenai parameter model, namun belum mampu menentukan model secara unik. Untuk
memperoleh solusi maka kita perlu suatu cara yang dapat menentukan atau memilih secara
objektif salah satu dari tak-hingga solusi dengan E=0. Untuk itu perlu ditambahkan informasi lain
yang tidak ada dalam hubungan d = Gm.
Informasi tambahan yang sering disebut informasi ‘a priori’ merupakan kuantifikasi harapan
mengenai karakteristik solusi yang tidak didasarkan pada data pengukuran. Contohnya adalah
pada regresi garis lurus dengan hanya satu data. Informasi a priori dapat mempersempit daerah
pencarian solusi yang mungkin. Pemilihan informasi a priori harus dilakukan dengan cermat
sehingga solusi yang diperoleh memang dapat menjelaskan data pengamatan dan bukan sebagai
akibat pengaruh informasi a priori yang dominan. Salah satu informasi a priori yang dapat
digunakan dalam penyelesaian masalah inversi purely under-determined adalah asumsi bahwa
solusi yang dicari bersifat sederhana.
Adapun hasil yang didapat dengan python yaitu:

Dan pada perhitungan manual:


A= 0.163
B= -0.362
C= -0.094

Jika dilihat, hasil perhitungan dengan python dan manual memiliki selisih yang tidak terlalu
signifikan, bahkan bisa dapat dikatakan sama. Kriteria norm model minimum dapat mengarah
pada solusi inversi atau model yang dekat dengan nol yang jelas tidak realistis. Meskipun
demikian, penggunaan informasi ‘a priori’ terbukti dapat mengatasi permasalahan inversi linier
underdetermined maupun mixed-determined.
LAMPIRAN
Script problem 1 (Tanpa Bobot)
# Modul 3
# Problem 1 tanpa bobot
# Muhamad Arif Samsudin_120120158

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

# Station Position
x = [0, 10, 20, 30]
z = [0, 0, 0, 0]
n = len(x)

# True Hiposenter
x0 = 12
z0 = 10
t0 = 0

# Model Kecepatan Gelombang 1 layer


v = 7

# Forward modelling untuk menghitung travel time dari hiposenter ke station


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

# Tambahkan noise pada travel time


noise = np.random.rand() * 0.03 * np.mean(t)
ti = t + noise

# Tambahkan data outlier


ti[n-1] = ((1/v) * np.sqrt((z[n-1]- z0)**2 + (x[n-1] - x0)**2 )) +
np.random.rand() * 0.5 * np.mean(t)

# tebakan awal posisi hiposenter


M = [15, 30]
init_position = copy.deepcopy(M)
M1 = []

# Buat Matriks Bobot


W = np.eye(n)

# Menetapkan matrik bobot


W [n-1][n-1] = 0.1
print(W)

xhipo = [init_position[0]]
yhipo = [init_position[1]]
Erms = []

# Inversi Tanpa Bobot Faktor


# Iterasi 1000
for niter in range(1000):
gm = []
dgm_dm1 = []
dgm_dm2 = []
for i in range(n):
gm.append(t0 + (1 / v) * (np.sqrt((x[i] -M[0]) **2 + (z[i] - M[1]) **2)))
dgm_dm1.append((1 / v) * (-1 * (x[i] -M[0])) / (np.sqrt((z[i] - M[1]) **2 +
(x[i] - M[0]) **2)))
dgm_dm2.append((1 / v) * (-1 * (z[i] -M[1])) / (np.sqrt((z[i] - M[1]) **2 +
(x[i] - M[0]) **2)))

J = np.zeros((n, 2))
for i in range(n):
J[i][0] = dgm_dm1[i]
J[i][1] = dgm_dm2[i]
Mo = copy.deepcopy(M)

# Tambah model pertubarsi dari inversi ke Mo


Mo = np.reshape(Mo,(2,1))
ti = np.reshape(ti,(n,1))
gm = np.reshape(gm,(n,1))
Model = np.mat(Mo) + np.mat(inv(np.mat(J.transpose()) * np.mat(J))) *
np.mat(J.transpose())* (np.mat(ti) - np.mat(gm))
M = [Model[0][0], Model[1][0]]
Data = Model.tolist()
xhipo.append(Data[0][0])
yhipo.append(Data[1][0])

# Menghitung rms error


dt = ti - gm
Erms.append(np.sqrt(np.average(dt**2)))
# Print (Xhipo)
plt.plot(15, 30, 'o', label = 'initial position', color ='black')
plt.plot(xhipo , yhipo ,'o', label = 'Hypocenter Inversion')
plt.plot(xhipo , yhipo , label = 'Hypocenter Inversion')
plt.plot(x0, z0, 'o',alpha = 0.5, color = 'red', label='truehypocenter')
plt.title('Hypocenter Determination(With Weighted)_158')
plt.xlabel('x koordinat')
plt.ylabel('z koordinat')
plt.legend()
plt.figure()

plt.plot(Erms)
plt.title('Kurva Erms vs N Iterasi_158')
plt.xlabel('Rms Eror')
plt.ylabel('N Iterasi')
plt.show()

Script 1 (Dengan Bobot)


# Modul 3
# Problem 1 Dengan Bobot
# Muhamad Arif Samsudin_120120158
import numpy as np
import matplotlib.pyplot as plt
import copy
from numpy.linalg import inv
# Station Position
x = [0, 10, 20, 30]
z = [0, 0, 0, 0]
n = len(x)
# Hiposenter
x0 = 12
z0 = 10
t0 = 0
# Model Kecepatan Gelombang 1 layer
v = 7
# Forward modelling untuk menghitung travel time dari hiposenter ke station
t = []
for i in range (n):
t.append((1/v) * np.sqrt((z[i]- z0)**2 + (x[i] -x0)**2 ))
# Tambahkan noise pada travel time
noise = np.random.rand() * 0.03 * np.mean(t)
ti = t + noise
# Tambahkan data outlier
ti[n-1] = ((1/v) * np.sqrt((z[n-1]- z0)*2 + (x[n-1] -x0)**2 )) + np.random.rand()
* 0.5 * np.mean(t)
# tebakan awal posisi hiposenter
M = [15, 30]
init_position = copy.deepcopy(M)
M1 = []
# Buat Matriks Bobot
W = np.eye(n)
# Menetapkan matrik bobot
W [n-1][n-1] = 0.1
print(W)
xhipo = [init_position[0]]
yhipo = [init_position[1]]
Erms = []
# Inversi Tanpa Bobot Faktor
for niter in range(1000):
gm = []
dgm_dm1 = []
dgm_dm2 = []
for i in range(n):
gm.append(t0 + (1 / v) * (np.sqrt((x[i] -M[0]) **2 + (z[i] - M[1]) **2)))
dgm_dm1.append((1 / v) * (-1 * (x[i]- M[0])) / (np.sqrt((z[i] - M[1]) **2 +
(x[i] - M[0]) **2)))
dgm_dm2.append((1 / v) * (-1 * (z[i] - M[1])) / (np.sqrt((z[i] - M[1]) **2 +
(x[i] - M[0]) **2)))
J = np.zeros((n, 2))
for i in range(n):
J[i][0] = dgm_dm1[i]
J[i][1] = dgm_dm2[i]
Mo = copy.deepcopy(M)
# Tambah model pertubarsi dari inversi ke Mo
Mo = np.reshape(Mo,(2,1))
ti = np.reshape(ti,(n,1))
gm = np.reshape(gm,(n,1))
Model = np.mat(Mo) + np.mat(inv(np.mat(J.transpose())*np.mat(W) *np.mat(J))) *
np.mat(J.transpose())*np.mat(W) * (np.mat(ti) - np.mat(gm))
M = [Model[0][0], Model[1][0]]
Data = Model.tolist()
xhipo.append(Data[0][0])
yhipo.append(Data[1][0])
# Menghitung rms error
dt = ti - gm
Erms.append(np.sqrt(np.average(dt**2)))
plt.plot(15, 30, 'o', label = 'initial position', color ='black')
plt.plot(xhipo , yhipo ,'o', label = 'Hypocenter Inversion')
plt.plot(xhipo , yhipo , label = 'Hypocenter Inversion')
plt.plot(x0, z0, 'o',alpha = 0.5, color = 'red', label='truehypocenter')
plt.title('Hypocenter Determination(With Weighted)_158')
plt.xlabel('x koordinat')
plt.ylabel('z koordinat')
plt.legend()
plt.figure()
plt.plot(Erms)
plt.title('Kurva Erms vs N Iterasi_158')
plt.xlabel('Rms Eror')
plt.ylabel('N Iterasi')
plt.show()
Script Problem 2
# Modul 3
# Problem 2
# Muhamad Arif Samsudin_120120158

import numpy as np
import math
#Diketahui
Sudut_Datang1=10
Sudut_Datang2=25
teta1=math.radians(Sudut_Datang1)
teta2=math.radians(Sudut_Datang2)
Sudut=[teta1, teta2]
print('maka sudut teta 1 dan teta 2 adalah',Sudut)
Robs=[0.1523,0.0947]
print('Data koefisien refleksi',Robs)
#Data matrik G
Sx=(math.sin(Sudut[0]))**2
Sy=(math.sin(Sudut[1]))**2
Tx=(math.tan(Sudut[0]))**2
Ty=(math.tan(Sudut[1]))**2
ST1=Sx*Tx
print(ST1)
ST2=Sy*Ty
print(ST2)
d=np.reshape(Robs,(2,1))
print('d=',d)
G=np.zeros((2,3))
for i in range(2):
G[i][0]=1
G[0][1]=Sx
G[1][1]=Sy
G[0][2]=ST1
G[1][2]=ST2
print('G=',G)
#Gunakan rumus Under-Determinan
m=np.mat(G.transpose())*np.linalg.inv(np.mat(G)*np.mat(G.transpose()))*np.mat(d)
m=m.tolist()
A=m[0][0]
B=m[1][0]
C=m[2][0]
print('A=',A)
print('B=',B)
print('C=',C)

Anda mungkin juga menyukai