KELOMPOK 4 - Kuis Inversi Pendekatan Non-Linier
KELOMPOK 4 - Kuis Inversi Pendekatan Non-Linier
4
Adellya Syawjesil 03411840000001
Nisya Aviani 03411840000009
Nur Azizah Syarifah 03411840000051
Kartika Wijaya 03411840000052
Kevin Daniel C. Munthe 03411840000053
Afiyah Khaulah 03411840000054
Analisis Script MATLAB
01 Gravity 02 Hippo
03 SP 04 VES
01
Gravity
Script MATLAB Gravity
SCRIPT PENJELASAN
clc • clc digunakan untuk menghapus layar di command window
%Definisi parameter model gravitasi • Untuk mendefinisikan model gravitasi dibutuhkan nilai
konstanta gravitasi, R merupakan jarak antara dambell
dengan bola kecil (jarak antara kedua pusat massa)
kons_G = 6.67*10^(-11); %nilai G = 6.67*10^-11
R = 70; %jarak R yang diketahui • rho merupakan kontras densitas batuan yang porinya terisi
minyak dan air dengan batuan reservoir yang terisi fluida
rho_model=100; injeksi
%menentukan posisi PUSAT model • Posisi awal lintasan dimulai pada x sebesar 500 dengan awal
kedalaman sebesar 250
x0= 500; % posisi x awal sebesar 500
• Posisi lintasan x yang dihitung mulai dari 0 sampai 950
z0= 250; % posisi depth yang diketahui sebesar 250 dengan internal setiap 50. Sedangkan pada kedalaman, z
lintasan berupa matriks 0 berukuran banyaknya Panjang dari
posisi lintasan x dikali satu
xlin = 0:50:950;
zlin = zeros(length(xlin),1);
Script MATLAB Gravity
SCRIPT PENJELASAN
%perhitungan Data nilai g_obs(rumus dasar dari script ini) • Untuk mencari nilai gravitasi observasi menggunakan
matriks nol dengan ukuran jumlah panjang posisi
lintasan x dikali 1
g_obs=zeros(length(xlin),1);
%Plot data observasi awal dan juga model bawah yang digunakan • Beberapa hasil plot dimasukkan ke dalam satu tempat
dengan ukuran 2 x 2
subplot(2,2,1)
• Hasil plot urutan pertama merupakan Observasi awal
plot(xlin,g_obs,'or','MarkerFaceColor','r') anomali gravitasi dengan membandingkan jarak
terhadap anomali gravitasi
xlabel('Jarak (m)');
rectangle('Position',[px py d
d],'Curvature',[1,1],'FaceColor','r');
daspect([1,1,1]);
ylim([0,500]);
xlim([0,1000]);
set(gca,'ydir','reverse');
xlabel('jarak (m)');
ylabel('kedalaman (m)');
g_cal(i)=kons_G*(4/3*pi*(R^3)*z0_model*rho_model)*10^5 /...
((xlin(i)- x0_model)^2+(zlin(i)-z0_model)^2)^(3/2);
Script MATLAB Gravity
SCRIPT PENJELASAN
%sudah dalam mGal • Pembuatan inversi jacobi dengan kondisi standar
deviasi absolut misfit lebih besar sama dengan 0.00001,
end sedangkan pembuatan matriks jacobi dengan indeks
%menghitung misfit satu sampai banyaknya panjang posisi lintasan x dan
pengondisian lainnya dan sudah dalam satuan mgal
dg_misfit = g_obs - g_cal;
eps=std(abs(dg_misfit)); • Plot urutan ke – 4 merupakan pemodelan prediksi
bawah permukaan yang terdampak gangguan dengan
e_plot(iterasi)=eps; perbandingan parameter jarak maksimum 1000
terhadap kedalaman maksimum 500
%membuat kondisi IF untuk inversi jacobi
if (std(abs(dg_misfit))) >=0.00001
(3*z0_model*(xlin(i)-x0_model))*10^5/...
((xlin(i)-x0_model)^2+(zlin(i)-z0_model)^2)^(5/2);
%sudah dalam Mgal
derivative_z(i)=kons_G*(4/3*pi*(R^3)*rho_model)*...
(zlin(i)^2 + zlin(i)*z0_model + xlin(i)^2 -
Script MATLAB Gravity
SCRIPT PENJELASAN
2*xlin(i)*x0_model...
- 2*z0_model^2 + x0_model^2)*10^5 / ...
((xlin(i)-x0_model)^2+(zlin(i)-z0_model)^2)^(5/2); %sudah dalam
mGal
end
J=ones(length(xlin),2);
J(:,1)=derivative_x';
J(:,2)=derivative_z';
%menghitung PERTURBASI MODEL
dm_perturbasi= inv(J'*J)*J'*dg_misfit;
x0_pertu=x0_model + dm_perturbasi(1);
z0_pertu=z0_model + dm_perturbasi(2);
%plot model prediksi bawah permukaan ter-pertubasi
subplot(2,2,4)
d = R*2;
px = x0_pertu-R;
Script MATLAB Gravity
SCRIPT PENJELASAN
py = z0_pertu-R;
rectangle('Position',[px py d
d],'Curvature',[1,1],'EdgeColor','b');
daspect([1,1,1]);
ylim([0,500]);
xlim([0,1000]);
set(gca,'yDir','reverse');
xlabel('jarak (m)');
ylabel('kedalaman (m)');
title('model prediksi')
iterasi=iterasi+1;
end
end
Script MATLAB Gravity
SCRIPT PENJELASAN
%plot data kalkulasi dan std dari misfit • Plot urutan ke – 2 merupakan data kalkulasi gravitas
dan standar deviasi absolut misfit dengan
subplot(2,2,2); membandingkan dan menyatukan plot posisi lintasan
plot(xlin,g_cal,'ob','MarkerFaceColor','g') terhadap nilai gravitas terkalibrasi, posisi lintasan
terhadap nilai gravitasi terobservasi pada jarak sebagai
hold on sb.x dan anomali gravitasi sebagai y.
plot (xlin,g_obs,'-r');
xlabel('jarak (m)');
plot([1:1:(length(e_plot))],e_plot,'Color','m','LineStyle','-
','LineWidth',2);
xlabel('Iterasi');
ylabel('Std Misfit');
title('Grafik Misfit');
Hasil Running Script
Grafik 1 Grafik 2
02
Hiposenter
Script MATLAB Hiposenter
SCRIPT PENJELASAN
clc; • Input nilai parameter pada pusat hiposenter berupa
clear all; koordinat, dan cepat rambat gelombang rata-rata.
%Parameter parameter yang diketahui pada pusat Hiposenter
xhipo = 200; • Input nilai koordinat x dan y pada stasiun, dengan z diset nol
yhipo = 400; karena berada di atas permukaan.
zhipo = 1000;
v_avg = 7.8;
%koordinat yang diketahui pada stasiun pengukuran
x = [300 700 1350 1800];
y = [1200 200 450 650 ];
z = zeros(1,4);
(&'()&*(
SCRIPT PENJELASAN
%Membuat Prediksi Model • Membuat prediksi model
iterasi=1;
eps=1; • Untuk eps lebih besar dari 0.00001, dan iterasi sebanyak
while eps>= 0.00001 satu,nilai koordinat model adalah 1600,1600, dan 500
if iterasi == 1
xo_model=1600;
yo_model=1600; • Selain itu digunakan nilai koordinat pertubasi.
zo_model=500;
else
xo_model=xo_pertu;
yo_model=yo_pertu;
zo_model=zo_pertu;
end
• Plotting gambar 2
figure(2);
plot([1:1:(length(e_plot))],e_plot,'Color','m',... • Dihasilkan grafik misfit.
'Linestyle','-','LineWidth',2);
xlabel('Iterasi');
ylabel('Std Misfit');
title('Grafik Misfit');
%end
GRAFIK
03
SELF-
POTENTIAL
Script MATLAB Self-Potensial
SCRIPT PENJELASAN
clc • clc = membersihkan layar
close all • close all = menutup semua jendela workplace
clear all • clear all = membersihkan variabel terdahulu
% nomer 1 • Langkah pertama yang dilakukan
%h1=20;q1=1.5;the1=25;k1=200; • h1=kedalaman titik 1; q1=factor geometri 1; the1=sudut
%mobs=[h1;q1;the1;k1] %model observasi polarisasi; dan k1=besaran momen dipole listrik di titik
%n=numel(x); 1; merupakan variable dalam model observasi
%for i=1:n; • Model observasi terdiri atas matriks kolom
%v(i)=sp(k1,x(i),the1,h1,q1); • matriks v tebuat menggunakan fungsi SP
%end
data=xlsread('datasp.xls',1,'A1:B62');%manggil data dari
excel • Memanggil data lapangan SP dari file excel dengan
x=data(:,1); %kolom 1 variable x merupakan data pada kolom pertama pada
v=data(:,2); %u/ kolom 2 excel dan variable v mengambil data pada kolom kedua
n=numel(x); %number of array elemen (banyaknya data x) pada excel.
• Variabel n menggunakan fungsi numel yang berarti
banyak data dari variable dalam kurungnya yaitu x
SCRIPT PENJELASAN
% nomer 2 • Langkah kedua memasukkan model
%m=[k,theta,z,q]
mold=[9763;-150.75;20.76;1]; • Variabel yang dipakai ialah k= besaran momen dipole; theta=
for ii=1:n; sudut polarisasi; z=kedalaman; dan q=factor geometri untuk
v1(ii)=sp(mold(1),x(ii),mold(2),mold(3),mold(4));%input model horizontal silinder
variabel u/ fungsi sp
end
figure • Memanggil fungsi SP dengan memasukkan nilai model
plot(x,v,'xb','linewidth',2); sebagai nilai k, theta, z, q dan nilai x
hold on;
plot(x,v1,'-r','linewidth',2) • Plotting gambar forward modelling
grid on
legend ('Data lapangan','Pendekatan awal') • Input nilai k dengan banyak data pada model
k=numel(mold);
• 𝐴 = 𝑈𝑆𝑉 )
observed = roa;
calculated = roa4;
h = legend('obs','cal',1);
format bank;
m
rr = [0,r];
tt = [0,cumsum(t),max(t)*10];
subplot(1,2,2),
stairs(rr,tt,'k-');
rrr = [0,rinitial];
ttt = [0,cumsum(tinitial),max(t)*10];
hold on;
subplot(1,2,2),
stairs(rrr,ttt,'k--');
set(gca,'Ydir','reverse');
set(gca,'Xscale','log');
ylim([0 50]);
xlim([0 1000]);
xlabel('Resistivity (Ohm-m)');
ylabel('Depth (m)');
rms = norm(roa4-roa) /sqrt(length(roa));
SCRIPT PENJELASAN
%Function Jacobian% • Fungsi jacobian digunakan untuk mengkalkulasi turunan parsial dari parameter numerikal
function[A]=jacobian(ab2,x,r,t,lr,lt,roa,roa1) dengan menggunakan interval dan membentuk matriks jacobian
par=0.1;
r2=r;
for i2=1:1r
r2(i2)=(r(i2)*par)+r(i2);
for ii=1:length(x)
s=ab2(ii);
[g]=VES1dmod(r2,t,s)
roa2(ii,:)=g;
end
A1(:,i2)=[(roa2-roa1)/(r(i2)*par)]*r(i2)./roa;
r2=r;
end
t2=t;
for i3=1:1t
t2(i3)=(t(i3)*par)+t(i3);
for ii=1:length(x)
s=ab2(ii);
[g]=VES1dmod(r,t2,s);
roa3(ii,:)=g;
end
A2(:,i3)=[(roa3-roa1)/(t(i3)*par)]*t(i3)./roa;
t2=t;
end
A=[A1 A2]
return
SCRIPT PENJELASAN
%Function VES1dmod% • Fungsi VES1dmod mengkalkulasi apparent resistivity data dari resistifitas, ketebalan, dan
function[g]=VES1dmod(r,t,s) AB/2 untuk konfigurasi elektroda Schlumberger dengan menggunakan filter koefisien.
q=13;
f=10;
m=4.438;
x=0;
e=exp(0.5*log(10)/m);
h=2*q-2;
u=s*exp(-f*log(10)m-x);
l=length(r);
n=1;
for i=1:n+h
w=1;
v=r(1);
while w>1
w=-1;
aa=tanh(t(w)/u);
v=(v+r(w)*aa)/(1+v*aa/r(w));
end
a(i)=v;
u=u*e;
end
i=1;
g=105*a(i)-262*a(i+2)+416*a(i+4)-
746*a(i+6)+1605*a(i+8);
g=g-4390*a(i+10)+13396*a(i+12)-27841*a(i+14);
g=g+16448*a(i+16)+8183*a(i+18)+2525*a(i+20);
g=(g+336*a(i+22)+225*a(i+24))/10000;
return
Terima Kasih!
Ada pertanyaan?