Anda di halaman 1dari 22

LAPORAN SEMENTARA PRAKTIKUM

INVERSI GEOFISIKA TG 3004

MODUL KE – 4
Inversi Non Linear
Oleh:
David Simanungkalit 120120096

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
2020/2021
Daftar Isi

Daftar Isi .................................................................................................................................... 2


DAFTAR GAMBAR ................................................................................................................ 3
I. Tujuan .................................................................................................................................... 4
II. Dasar Teori ........................................................................................................................... 5
1. Regresi Linear ................................................................................................................... 5
2. Inversi Non-Linear ........................................................................................................... 5
III. Langkah Kerja ................................................................................................................... 8
1. Langkah Kerja .................................................................................................................. 8
2. Diagram Alir ................................................................................................................... 10
IV. Hasil dan Analisis ............................................................................................................. 11
1. Hasil ................................................................................................................................. 11
2. Analisis ............................................................................................................................. 13
V. Kesimpulan ......................................................................................................................... 15
DAFTAR PUSTAKA.............................................................................................................. 16
LAMPIRAN ............................................................................................................................ 17

2
DAFTAR GAMBAR

Gambar 1 (a) Regresi linier pasangan data (x, y). (b) Regresi linier pasangan data yang
dipertukarkan menjadi (x' = y, y' = x). Pada kedua gambar sumbu x adalah sumbu mendatar dan
sumbu y adalah sumbu vertikal. ................................................................................................. 6
Gambar 2 (a) Regresi kurva eksponensial tanpa transformasi variabel. (b) Konversi kurva
regresi eksponensial pada (a) (garis utuh) yang tidak sama dengan hasil regresi garis lurus
terhadap data (xi , log(yi)) (garis putus-putus). .......................................................................... 7
Gambar 3 Diagram Alir ............................................................................................................ 10
Gambar 4 Hasil problem 3 X = [0,97,98,99], M = [15,30], Iterasi = 4 ................................... 11
Gambar 5 Hasil problem 3 X = [0,97,98,99], M = [50,40], Iterasi = 7 ................................... 11
Gambar 6 Hasil problem 3 X = [0,97,98,99], M = [50,40], Iterasi = 1000 ........................... 12
Gambar 7 Hasil problem 1 X = [0,10,20,30], M = [15,30], Iterasi = 4 ................................. 12
Gambar 8 Hasil Gambar problem 2 X = [0,10,20,30], M = [15,30], Iterasi = 4 .................... 12
Gambar 9 Hasil problem 3 X = [0,10,20,30], M = [15,30], Iterasi = 4 ................................ 13

3
I. Tujuan
1. Mampu menyelesaikan persamaan inversi dalam bidang geofisika yang menggunakan
metode inversi non linear dengan pendekatan linear, Gradien dan Newton.
2. Mampu menganalisa fungsi dari inversi non linear dengan pendekatan linear, Gradien
dan Newton.

4
II. Dasar Teori
1. Regresi Linear
Regresi linier pada dasarnya adalah masalah inversi. Mengingat hubungan antara data
dengan parameter model adalah linier maka pemodelan inversinya disebut pula sebagai inversi
linier. Untuk memformulasikan permasalahan inversi secara lebih umum maka parameter atau
variabel yang terlibat dinyatakan dalam notasi vektor atau matriks yang merepresentasikan
variabel dengan banyak komponen atau elemen.

Bila jumlah model parameter lebih sedikit dibandingkan data observasi (M < N),
maka permasalahan inversi ini disebut overdetermined. Umumnya masalah ini diselesaikan
menggunakan pencocokan ( best fit ) terhadap data observasi. Dalam kondisi yang lain dimana
jumlah parameter yang ingin dicari (M) lebih banyak dari pada jumlah datanya (N), maka
masalah inversi ini disebut underdetermined. Dalam kasus ini terdapat sekian banyak model
yang dapat sesuai kondisi datanya. Inilah yang disebut dengan masalah ketidakunikan
pemodelan geofisika.

Pemodelan merupakan proses estimasi model dan parameter model berdasarkan data
yang diamati di permukaan bumi. Model tidak hanya menyatakan representasi kondisi geologi
oleh besaran fisika tapi mencakup hubungan matematis antara parameter model dengan respon
model. Proses perhitungan yang menghasilkan data teoritik dari suatu konfigurasi atau harga
parameter model tertentu disebut proses forward modeling (pemodelan kedepan). Jika respon
suatu model cocok (fit) dengan data lapangan, maka model yang digunakan untuk memperoleh
respon model tersebut dianggap mewakili kondisi bawah permukaan tempat data diukur.

2. Inversi Non-Linear
Dalam formulasi permasalahan inversi perlu ditentukan parameterisasi yang

digunakan dengan memilih variabel yang merepresentasikan data dan parameter model. Hal

tersebut penting mengingat hasil atau solusi inversi sangat bergantung pada pemilihan

parameterisasi. Dengan kata lain, solusi tidak invarian (tidak independen) terhadap perubahan

atau transformasi variabel.

5
Pada kasus inversi linier dengan kesalahan data yang terdistribusi normal (Gaussian)

solusinya invarian terhadap transformasi variabel yang bersifat linier. Dengan kata lain

perubahan parametrisasi data dan parameter model secara linier dapat menghasilkan solusi

yang sama dengan solusi sebelum transformasi. Namun, pada banyak kasus tidak ada

ketentuan yang spesifik mengenai pemilihan parameterisasi sehingga hal tersebut dapat

menimbulkan masalah.

Gambar 1 (a) Regresi linier pasangan data (x, y). (b) Regresi linier pasangan data yang
dipertukarkan menjadi (x' = y, y' = x). Pada kedua gambar sumbu x adalah sumbu
mendatar dan sumbu y adalah sumbu vertikal.

Sebagai contoh kita tinjau regresi linier terhadap pasangan data (1, 1), (2, 2), (3, 3), (4,
5) yang dianggap membentuk satu garis lurus. Jika pasangan data tersebut dianggap sebagai

+1.3 x (Gambar 5.1a, garis penuh). Sebaliknya jika pasangan (x, y) dipertukarkan, yaitu y' =
x dan x' = y sehingga data tersebut dianggap sebagai (x', y') dimana x' adalah variabel bebas,
maka persamaan garis yang diperoleh adalah y' = 0.309 + 0.743 x' (Gambar 5.1b).
45 y'
(Gambar 1a, garis putus-putus). Parameter model (kemiringan garis dan titik potong garis
dengan sumbu vertikal) yang mendefinisikan kedua garis tersebut memiliki perbedaan sekitar
20%.

Salah satu penyebab perbedaan kedua solusi tersebut adalah penerapan asumsi statistik
atau probabilitas yang tidak konsisten. Pada kasus pertama, x sebagai variabel bebas dianggap
diketahui secara eksak, sedangkan y dianggap sebagai variabel acak (random) yang
terdistribusi normal. Pada kasus kedua, x' = y dianggap diketahui secara eksak sedangkan y'
= x merupakan variabel acak dengan distribusi normal. Perbedaan hasil inversi tersebut
6
disebabkan oleh perbedaan pemilihan variabel yang mengandung kesalahan (error) dengan
distribusi Gaussian.

Gambar 2 (a) Regresi kurva eksponensial tanpa transformasi variabel. (b) Konversi kurva
regresi eksponensial pada (a) (garis utuh) yang tidak sama dengan hasil regresi garis lurus
terhadap data (xi , log(yi)) (garis putus-putus).
Salah satu tujuan pemilihan parameterisasi yang berbeda adalah untuk menyelesaikan
Permasalahan menggunakan cara-cara yang telah diketahui. Sebagai contoh adalah
regresi fungsi eksponensial atau fungsi pangkat pada pasangan data (x, y) yang dianggap
merepresentasikan suatu fungsi yi = m1 exp(m2 xi). Melalui transformasi variabel m1' =
log(m1), m2' = m2 dan yi' = log(yi), maka hubungan antara parameter model dengan data dapat
dinyatakan sebagai suatu fungsi linier yi' = m1' + m2' xi yang dapat diselesaikan dengan
menggunakan metode regresi linier sebagaimana telah dibahas sebelumnya. Gambar 2
menunjukkan perbedaan solusi jika regresi dilakukan secara non-linier dan dengan linierisasi
melalui transformasi variabel. Hal ini disebabkan setelah transformasi yi' dianggap terdistribusi
normal sehingga data sebelum transformasi yi dianggap memiliki distribusi non-Gaussian.

7
III. Langkah Kerja
1. Langkah Kerja
 Problem 1
1. Buka Software Visual Studio Code terlebih dahulu
2. Mendefenisikan library (Package) yang akan digunakan terlebih dahulu
3. Menginputkan nilai data yang diinginkan (Hiposenter,Posisi dan
Kecepatan V)
4. Membuat Program untuk mencari nilai dari waktu tempuh gelombang
dan program untuk memasukan noise pada travel time
5. Membuat Program untuk menebak posisi awal hiposenter
6. Membuat Program Inversi Non-Linear dengan Pendekatan Linear.
7. Membuat Program untuk menghitung nilai RMS error.
8. Meplotting data dan menampilkan hasil melalui file external
 Problem 2
1. Buka Software Visual Studio Code terlebih dahulu
2. Mendefenisikan library (Package) yang akan digunakan terlebih dahulu
3. Menginputkan nilai data yang diinginkan (Hiposenter,Posisi dan
Kecepatan V)
4. Membuat Program untuk mencari nilai dari waktu tempuh gelombang
dan program untuk menambahkan noise pada travel time
5. Membuat Program untuk menambahkan data outlier dan posisi awal
hiposenter dan nilai RMS.
6. Membuat Program untuk membuat dan menetapkan matriks Bobot nya.
7. Membuat Program untuk menentukan nilai minimum error.
8. Membuat Program untuk menghitung nilai RMS error.
9. Membuat Program Perulangan (Iterasi) sebanyak yang diinginkan.
10. Membuat program untuk menambahkan model pertubasi
11. Membuat program untuk menambahkan model pertubasi
12. Meplotting data dan menampilkan hasil melalui file external

8
 Problem 3
1. Buka Software Visual Studio Code terlebih dahulu
2. Mendefenisikan library (Package) yang akan digunakan terlebih dahulu
3. Menginputkan nilai-nilai dari parameter yang dibutuhkan
(Hiposenter,Posisi dan Kecepatan V).
4. Membuat Program untuk mencari nilai dari waktu tempuh gelombang
dan program untuk menambahkan noise pada travel time
5. Membuat Program untuk menebak posisi awal hiposenter
6. Membuat Program Inversi Non-Linear dengan Pendekatan Newton.
7. Membuat Program untuk menghitung nilai RMS error
8. Meplotting data dan menampilkan hasil melalui file external

9
2. Diagram Alir

Start

Buka VS COde dengan Phyton

Panggil modul,ldan definisikan


parameter yang akan digunakan

Membuat fungsi meshgrid

Inversi Least-square

Tentukan model dan matriks


jacobian

Hitung RMSE

Print Hasil

Run

End

Gambar 3 Diagram Alir

10
IV. Hasil dan Analisis
1. Hasil

Gambar 4 Hasil problem 3 X = [0,97,98,99], M = [15,30], Iterasi = 4

Gambar 5 Hasil problem 3 X = [0,97,98,99], M = [50,40], Iterasi = 7

11
Gambar 6 Hasil problem 3 X = [0,97,98,99], M = [50,40], Iterasi = 1000

Gambar 7 Hasil problem 1 X = [0,10,20,30], M = [15,30], Iterasi = 4

Gambar 8 Hasil Gambar problem 2 X = [0,10,20,30], M = [15,30], Iterasi = 4

12
Gambar 9 Hasil problem 3 X = [0,10,20,30], M = [15,30], Iterasi = 4

2. Analisis
Permasalahan inversi non-linear berupa regresi fungsi eksponensial dapat diselesaikan
menggunakan metode inversi linear setelah melalui transformasi variable. Secara umum,
transformasi variable tidak selalu dapat digunakan untuk memformulasikan kembali suatu
permasalahan inversi sehingga dapat diselesaikan secara lebih mudah. Karena itu diperlukan
metode yang secara khusus dikembangkan untuk menyelesaikan suatu permasalahan inversi
non-linear. Pada prinsipnya semua formulasi yang telah digunakan untuk menyelesaikan
permasalahan inversi linear dapat diperluas untuk memperoleh solusi inversi non-linear. Secara
umum sebagian besar permasalahan inversi dalam geofisika adalah inversi non-linear.
Meskipun pada beberapa kasus permasalahan inversi dapat dipilih atau dibuat menjadi linear
ataupun non-linear bergantung pada parameterisasi model yang dipilih.

Pada permasalahan 1 metode inversi non linear yang pertama digunakan adalah dengan
pendekatan linier. Dengan menggukan pendeketan linier maka kita bisa mengestimasi letak
hiposenter. Pada metode pendekatan linear terdapat perbedaan antara hasil yang ditampilkan
berdasarkan pengaruh nilai hiposenter yang di input. Nilai M mempengaruhi titik inversi
hiposenternya. Lalu nilai X berpengaruh pada jarak antar titik inversi hiposenternya terhadap
sumbu X. Sedangkan variasi nilai iterasi mempengaruhi kurva RMSE yang didapat, semakin
banyak/besar nilai iterasi yang dipakai maka nilai RMSE nya akan semakin kecil(menurun) dan
sebaliknya jika semakin sedikit/kecil nilai RMSE yang dipakai maka nilai RMSE nya akan
semakin besar.

13
Pada permasalahan kedua inversi non linier menggunakan metode gradien, dengan
menggunakan persamaan matriks jacobian maka akan dihasilkan data dengan kondisi yang
lebih baik. Pada dasarnya antara inversi linier dengan non linier yang berbeda adalah pada
kondisi matriks nya. Dilakukan variasi terhadap nilai E (random noise) yaitu menggunakan 0.1
dan 0.01. Perbedaannya terdapat pada kurva inversi hiposenternya, kurva yang memiliki nilai
E = 0.1 jarak antar titik inversi hiposenternya lebih teratur/lebih rapih sedangkan kurva yang
memiliki nilai E = 0.01 jarak antar titik inversi hiposenternya lebih tidak terarur akan tetapi
akan semakin rapat jarak antar titik inversi hiposenternya. Nilai M mempengaruhi titik inversi
hiposenternya. Lalu nilai X berpengaruh pada jarak antar titik inversi hiposenternya terhadap
sumbu X. Sedangkan variasi nilai iterasi mempengaruhi kurva RMSE yang didapat, semakin
banyak/besar nilai iterasi yang dipakai maka nilai RMSE nya akan semakin kecil(menurun) dan
sebaliknya jika semakin sedikit/kecil nilai RMSE yang dipakai maka nilai RMSE nya akan
semakin besar.

Pada Permasalahan 3 yaitu penentuan lokasi hiposenter gempa dengan inversi non-linear
menggunakan metode Newton. Perbedaan nilai tebakan awal dan jumlah iterasi dapat
mempengaruhi kecepatan dan akurasi konvergensi hasil inversi. Pada nilai tebakan awal (15,
30) dan n = 4, jumlah iterasi yang relatif sedikit menyebabkan proses konvergensi tidak
mencapai titik optimum dan hasil inversi belum konvergen dengan baik. Sehingga, hasil inversi
tidak akurat dan lokasi hiposenter gempa yang diperoleh belum cukup valid. Pada nilai tebakan
awal (50, 40) dan n = 7, jumlah iterasi yang lebih banyak menyebabkan proses konvergensi
lebih baik dibandingkan dengan nilai tebakan awal sebelumnya. Namun, hasil inversi belum
cukup akurat karena belum mencapai titik optimum dan konvergensi masih belum stabil. Pada
nilai tebakan awal (50, 40) dan n = 1000, jumlah iterasi yang sangat banyak membuat proses
konvergensi lebih akurat dan stabil, sehingga titik optimum dapat dicapai dengan baik dan hasil
inversi yang diperoleh lebih valid. Variasi nilai M mempengaruhi titik inversi hiposenternya.
Lalu variasi nilai X berpengaruh pada jarak antar titik inversi hiposenternya terhadap sumbu X.
sedangkan variasi nilai iterasi mempengaruhi kurva RMSE yang didapat, semakin banyak/besar
nilai iterasi yang dipakai maka nilai RMSE nya akan semakin kecil(menurun) dan sebaliknya
jika semakin sedikit/kecil nilai RMSE yang dipakai maka nilai RMSE nya akan semakin besar.

14
V. Kesimpulan
Dari praktikum modeul 4 Inversi Geofisika kalini ini didapat kesimpulan berupa :
1. Metode inversi non-linear seringkali memerlukan waktu komputasi yang lama dan
bisa jadi tidak konvergen, diperlukan pendekatan linear untuk mempercepat proses
inversi dan meningkatkan konvergensi. Maka, untuk menyelesaikan masalah inversi
non linear dalam bidang geofisika , diperlukan metode inversi numerik seperti metode
Gradien dan Newton.
2. Penggunaan pendekatan linear, Gradien dan Newton, dapat mempercepat proses
inversi dan meningkatkan konvergensi, sehingga menghasilkan hasil inversi yang
lebih akurat dan valid.

15
DAFTAR PUSTAKA

[1] Grandis , H. (2002). Pemodelan Inversi Non-Linier dalam Geofisika Menggunakan


Algoritma Rantai Markov. Kontribusi Fisika Indonesia .

[2] Penyusun, T. (2023). Modul 4 Informasi "Inversi Non Linear”. Lampung Selatan: Institut
Teknologi Sumatera.

[3] Grandis, H. (2009). INVERSI GEOFISIKA. Bandung: INVERSI GEOFISIKA INVERSI


GEOFISIKA (HAGI).

[4] Grandis, H., Yudistira, T., 2001, Transformasi data magnetik menggunakan sumber
ekivalen 3-D, Prosiding PIT HAGI ke-26, Jakarta.

[5] Grandis, H. (2009). Pengantar Pemodelan Inversi Geofisika. Bandung: Himpunan Ahli
Geofisika Indonesia (HAGI)

16
LAMPIRAN

PROBLEM 1 :
#120120096_David Simanungkalit

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

# Start Station
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 hyposenter 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.01 * np.mean(t)
ti = t + noise

# Guess the initial position


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

#Inveration with non linear method


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

for niter in range(4):


gm = []

17
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((x[i] - M[0])
** 2 + (z[i] - M[1]) ** 2)))
dgm_dm2.append((1 / V) * (-1 * (z[i] - M[1])) / (np.sqrt((x[i] - M[0])
** 2 + (z[i] - M[1]) ** 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)
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])
dt = ti - gm
Erms.append(np.sqrt(np.average(dt ** 2)))

plt.plot(12, 35, 'o', label='initial position', color='black')


plt.plot(xhipo, yhipo, 'o', label='Hypocenter Inversion', color ='yellow')
plt.plot(xhipo, yhipo, label='Hypocenter Inversion', color='blue')
plt.plot(x0, z0, 'o', alpha=0.5, color='red', label='true hypocenter')
plt.title('Hypocenter Determination_David Simanungkalit_120120096')
plt.xlabel('X koordinat')
plt.ylabel('Y koordinat')
plt.legend()
plt.figure()
plt.plot(Erms)
plt.title('Kurva Erms vs N Iterasi_David Simanungkalit_120120096')
plt.xlabel('Rms Eror')
plt.ylabel('N Iterasi')
plt.show()

PROBLEM 2 :
#120120096_David Simanungkalit

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

# Hiposenter
x0 = 12
z0 = 10
t0 = 0

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

# Model Kecepatan Gelombang 1 layer


Vp = 7

# forward modelling untuk menghitung travel time dari hyposenter ke station


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

# tambahkan noise pada travel time


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

#tambahkan data outlier


ti[n-1] = ((1/Vp) * 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 = []

I = np.eye(2)
E = 0.01*I

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

#Menentukan minimum error


P = 10 #nilai tebakan minimum error
HypoX = []
HypoY = []
X0 = np.arange(0,50,1)
Y0 = np.arange(0,50,1)

#Iterasi 4
for niter in range(4):
gm = []

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

G = np.zeros((n, 2))
for i in range(n):
G[i][0] = dgm_dm1[i]
G[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(G.transpose()) * np.mat(G) +
np.mat(E))) * np.mat(G.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])

# calculate rms eror


dt = ti - gm
Erms.append(np.sqrt(np.average(dt ** 2)))
Erms2 = np.sqrt(np.mean(dt**2))
for i in range (len(X0)):
for G in range(len(Y0)):
if Erms2 < P:
HypoX.append(X0[G])
HypoY.append(Y0[i])
P = Erms2
else: pass

plt.plot(M[0], M[1],'o', label='initial Position', color='black')


plt.plot(xhipo, yhipo, 'o', label='hyposenter inversion')
plt.plot(xhipo, yhipo, label='hyposenter inversion')
plt.plot(x0, z0, 'o', alpha=0.5, color='red', label='True Hypocenter')
plt.title('Hypocenter Determination_David Simanungkalit_120120096')
plt.xlabel('X Coordinate')
plt.ylabel('Y coordinate')
plt.legend()
plt.figure()
plt.plot(Erms)

20
plt.title('Kurva RMS eror vs N Iterasi_David Simanungkalit_120120096')
plt.xlabel('N Iterasi')
plt.ylabel(' RMS Eror')
plt.show()

PROBLEM 3 :
#120120096_David Simanungkalit

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

# Hiposenter
x0 = 12
z0 = 10
t0 = 0

# Posisi Station X=(NIM ditambah 1, 2, 3)


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

#Model Kecepatan Gelombang 1 layer


Vp = 7

# forward modelling untuk menghitung travel time dari hyposenter ke station


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

# tambahkan noise pada travel time


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

# tebakan awal posisi hiposenter


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

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

# Inversi dengan linear metode


# Iterasi 4
for niter in range (4):
gm = []

21
dgm_dm1 = []
dgm_dm2 = []
for i in range (n):
gm.append(t0 + 1/Vp *( np.sqrt((z[i]- M[1])**2 + (x[i] - M[0])**2 )))
dgm_dm1.append((1/Vp) * (-1*(x[i]-M[0])) / ( np.sqrt((z[i]- M[1])**2 +
(x[i] - M[0])**2 )))
dgm_dm2.append((1/Vp) * (-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(gm) - np.mat(ti))
M = [Model[0][0], Model[1][0]]
Data = Model.tolist()
xhipo.append(Data[0][0])
yhipo.append(Data[1][0])

#calculate rms eror


dt = ti - gm
Erms.append(np.sqrt(np.average(dt**2)))

plt.plot(12,30,'o', label= 'initial Position', color ='black')


plt.plot(xhipo,yhipo,'o', label ='hyposenter inversion')
plt.plot(xhipo,yhipo, label ='hyposenter inversion')
plt.plot(x0,z0, 'o', alpha = 0.5, color ='red', label = 'True Hypocenter')
plt.title('Hypocenter Determination NEWTON_David Simanungkalit_120120096')
plt.xlabel('X Coordinate')
plt.ylabel('Y coordinate')
plt.legend()
plt.figure()
plt.plot(Erms)
plt.title('Kurba RMS eror vs N Iterasi_David Simanungkalit_120120096')
plt.xlabel('N Iterasi')
plt.ylabel(' RMS Eror')
plt.show()

22

Anda mungkin juga menyukai