Anda di halaman 1dari 37

KELOMPOK

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

clear all • clear all merupakan perintah untuk menghapus data di


memori MATLAB.

%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);

for i=1:length(xlin) • Indeks yang digunakan yaitu 1 sampai panjang posisi


lintasan x
g_obs(i)=kons_G*(4/3*pi*(R^3)*z0*rho_model*10^5 / ...
• Dengan statement yang digunakan, perhitungan
((xlin(i)-x0)^2+(zlin(i)-z0)^2)^(3/2)); %satuan dalam mGal gravitasi observasi dilakukan menggunakan substitusi
masing-masing nilai pada indeks
end

%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)');

ylabel('Gravity Anomaly (mGal)');

title('Observasi awal anomali gravity');


Script MATLAB Gravity
SCRIPT PENJELASAN
%script penge-Plotkan g observasi lebih lanjut... • Hasil plot urutan ketiga merupakan model bawah
permukaan dengan membandingkan jarak dengan
subplot(2,2,3) maksimum 1000 m terhadap kedalaman dengan
d= R*2; maksimum 500 m

px= x0-R; • Dengan urutan kedalaman dibalik sehingga posisi 0


py=z0-R; berada diatas seperti pada pengukuran asli

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)');

title('model bawah permukaan');


Script MATLAB Gravity
SCRIPT PENJELASAN
%lakukan prediksi model awal • Dengan pengulangan 1 dan ketelitian relatif juga 1,
digunakan fungsi while – end
iterasi=1;
eps=1; • Dengan kondisi ketelitian lebih besar dari 0.0025,
pengulangan ~ 1, posisi awal lintasan dan kedalaman
while eps >= 0.0025 awal = 100, ditambahkan syarat posisi lintasan awal
if iterasi==1 dan kedalaman awal samadengan posisi lintasan dan
kedalaman perturbasi
x0_model=100;
z0_model=100; • Perturbasi merupakan gerakan kompleks subjek besar
dengan kekuatan selain daya tarik gravitasi dari tubuh
else besar tunggal (subjek, ketahanan (suasana, daya Tarik))
lainnya
x0_model=x0_pertu;
z0_model=z0_pertu; • Perhitungan data gravitasi kalibrasi menggunakan
matriks nol ukuran panjang posisi lintasan x dikali 1
end dalam satuan mgal
%menghitung data g_cal
• Pada perhitungan misfit digunakan selisih nilai gravitasi
g_cal=zeros(length(xlin),1); observasi dengan gravitasi kalibrasi dengan ketelitian
for i=1:length(xlin) relatif menggunakan standar deviasi absolut dari misfit

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

%membuat matriks jacobi


for i=1:length(xlin)
derivative_x(i)=kons_G*(4/3*pi*(R^3)*rho_model)*...

(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)');

ylabel('"Gravity Anomaly (mGal)');


title('Grafik g kalkulasi (ForMod)');
figure(2);

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);

%perhitungan data t observasi • Kalkulasi waktu tempuh observasi


t_obs = zeros(length(x),1);
for i= 1:length(x) • Nilai awal diatur nol
t_obs(i)=sqrt((xhipo-x(i))^2 + (yhipo-y(i))^2 + (zhipo-
z(i))^2)/v_avg;
end • Untuk data t setiap iterasi, rumus yang digunakan yakni t=
(" !"#$ #")% %(&!"#$ #&)% %('!"#$ #')%

(&'()&*(
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

%Perhitungan Data G Calculation • Menghitung waktu tempuh kalkulasi.


t_cal=zeros (length(x),1);
for i=1:length(x) • Nilai awal diatur nol
t_cal(i)=sqrt(((xo_model-x(i))^2 + (yo_model-y(i))^2
+(zo_model-z(i))^2))/v_avg;
end • Untuk data t setiap iterasi, rumus yang digunakan yakni t=
(" +$,(- #")% %(&+$,(- #&)% %('+$,(- #')%
(&'()&*(
SCRIPT PENJELASAN
%menghitung Misfitnya • Perhitungan misfit dengan waktu observasi dikurang waktu
dt_misfit=t_obs - t_cal; kalkulasi
eps=std(abs(dt_misfit));
e_plot(iterasi)=eps; • -1.207e-07, -4.1318e-07, -2.3711e-07, -1.4610e-07

• Eps yakni standar defiasi dari nilai misfit mutlak. Nilainya


1.323e-07
%Perhitungan Jacobbian • Perhitungan jacobian untuk eps lebih besar dari 0.00001
if (std(abs(dt_misfit))) >= 0.00001
for i=1:length(x)
derivative_x(i)=(xo_model-x(i)) / (v_avg*sqrt((xo_model-
• Perhitungan dilakukan untuk turunan t terhadap tiap koordinat
x(i))^2 + (yo_model-y(i))^2 + (zo_model-z(i))^2)); x(i), y(i) dan z(i)
derivative_y(i)=(yo_model-y(i)) / (v_avg*sqrt((xo_model-
x(i))^2 + (yo_model-y(i))^2 + (zo_model-z(i))^2)); • Untuk turunan t terhadap x(i) rumusnya
derivative_z(i)=(zo_model-z(i)) / (v_avg*sqrt((xo_model-
x(i))^2 + (yo_model-y(i))^2 + (zo_model-z(i))^2)); ("! "#$%&#")
end
J=ones(length(x),3);
%'() ("!"#$%&#")*&('!"#$%&#')*&((!"#$%&#()
J(:,1)=derivative_x';
J(:,2)=derivative_y'; • Menghitung matriks jacobian dengan komponen terdiri dari
J(:,3)=derivative_z'; turunan x, y , dan z tadi
%Perhitungan Pertubasi Model
dm_perturbasi = inv(J'*J)*J'*dt_misfit;
xo_pertu=xo_model + dm_perturbasi(1); • Perhitungan model perturbasi dengan rumus 𝐽) 𝐽 #* )
𝐽 mis/it,
yo_pertu=yo_model + dm_perturbasi(2); didapat hasil berupa 0.05792, 0.06825, dan -0.08746
zo_pertu=zo_model + dm_perturbasi(3);
iterasi=iterasi+1;
end • Nilai perturbasi x berupa nilai x model awal ditambah
end komponen matriks pertama dm pertubasi

• Didapat hasil pertubasi x, y, z sebesar 200, 400 dan 1000


SCRIPT PENJELASAN
figure(1); • Plotting gambar 1
plot3(xo_model,yo_model,zo_model,'o',...
'MarkerFaceColor','r','MarkerEdgeColor','r'); • Dihasilkan model prediksi berikut letak hiposenter
grid on;
set(gca,'zdir','reverse');
xlabel('Koordinat X (m)');
ylabel('Koordinat Y (m)');
zlabel('Depth Z (m)');
title('Model Yang Diprediksi');
legend('Titik Hiposenter');

• 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);

function v=sp(k,x,the,h,q); • Fungsi SP terdiri atas variable k= besaran momen dipole;


thed=the*pi/180; theta= sudut polarisasi; z=unit kedalaman; q=factor geometri;
v=k*(x*cos(thed)+h*sin(thed))/((x^2+h^2)^q); dan h=kedalaman deposit yang memiliki anomaly SP
• Input persamaan umum anomaly SP dengan bentuk geometri
tertentu yaitu
𝑥 𝑐𝑜𝑠𝜃 + 𝑧 𝑠𝑖𝑛𝜃
𝑉 𝑥, 𝑧, 𝜃, 𝑞 = 𝑘
(𝑥 + + 𝑧 + ),
Dimana,
z = kedalaman dari permukaan ke pusat tubuh anomali,
θ = sudut polarisasi,
k = momen dipol listrik (besarnya polarisasi), dan
xi (i = 1, ..., N) = posisi koordinat horizontal. (
SCRIPT PENJELASAN
%jacob(k,x,the,h,q); • Input nilai Jacobi menggunakan variable k= besaran momen
Error=[]; dipole; theta= sudut polarisasi; z=unit kedalaman; q=factor
for ii=1:300; geometri; dan h=kedalaman deposit yang memiliki anomaly SP
mn=mold;
for i=1:n; • Input variable Jacobi dengan memanggil fungsi Jacobi
J(i,:)=jacob(mn(1),x(i),mn(2),mn(3),mn(4)); %input menggunakan nilai model dan niali x
variabel jacob
dv(i)=sp(mn(1),x(i),mn(2),mn(3),mn(4));%input variabel SP
% nomer 3 • memanggil fungsi SP dengan memasukkan nilai model dan nilai
delm(i)=v(i)-dv(i); x yang baru
end
Err=(delm*delm'); • Input matriks derivate Jacobi sebagai sebagai pembanding
Error=[Error;Err]; untuk hasil inversi pada perhitungan parameter anomali SP-nya.
deriv=J;
[U,S,V]=svd(J);%singular value decomposition • Menyesuaikan eror terhadap model forward modelling
W=zeros(1,k);
for i=1:k;
W(i)=S(i,i); • Menggunakan fungsi singular value decomposition untuk
end menghasilkan nilai U,S dan V yang kemudian diinput sebagai
dm=svbksb(U,W,V,n,k,delm) variable untuk fungsi svbksb
mold=mold+dm';
% Marquard • Membuat model inversi
% k=(J'*J)+7.e3*eye(4);
% kin=inv(k)*J'*delm';
% mold=mold+kin;
end
minversi=mold;
SCRIPT PENJELASAN
figure • Input gambar observasi dan prediksi. Atau gambar forward
plot(x,v,'xb','linewidth',2); modeling dan gambar hasil kalkulasi
hold on;
plot(x,dv,'-r','linewidth',2) • Input gambar persebaran eror
grid on
legend ('Observasi','Prediksi')
figure
plot(sqrt(Error),'.r','linewidth',2)
xlabel 'Iterasi Ke-'
ylabel 'Error'
grid on
title ('Error hasil inversi')
function j=jacob(k,x,the,h,q); • Fungsi Jacobi terdiri atas variable k= besaran momen dipole;
thed=the*pi/180; theta= sudut polarisasi; z=unit kedalaman; q=factor geometri;
dvdh=k*sin(thed)/((x^2+h^2)^q)- dan h=kedalaman deposit yang memiliki anomaly SP
2*k*(x*cos(thed)+h*sin(thed))/((x^2+h^2)^q)*q*h/(x^2+h^2);
dvdq=-k*(x*cos(thed)+h*sin(thed))/((x^2+h^2)^q)*log(x^2+h^2);
dvdthe=k*(-x*sin(thed)+h*cos(thed))/((x^2+h^2)^q);
dvdk=(x*cos(thed)+h*sin(thed))/((x^2+h^2)^q);
j=[dvdk;dvdthe;dvdh;dvdq];
SCRIPT PENJELASAN
function x=svbksb(u,w,v,m,n,b) • Fungsi RMS (root mean square error)
[mp np]=size(u);
%np=size(v);
+
for j=1:n ∑/
-.* 𝑌 𝑥- − 𝑉(𝑥* , 𝑧, 𝜃, 𝑞)
s=0; 𝑅𝑀𝑆 =
2𝑁 + 1
if(w(j)~=0)
for i=1:m
s=s+u(i,j)*b(i); Dimana Y(xi) adalah nilai anomali SP hasil pengukuran sedangkan V
end adalah nilai anomali SP hasil perhitungan.
%11 continue
s=s/w(j);
end
tmp(j)=s;
end
%12 continue
for j=1:n
s=0;
for jj=1:n
s=s+v(j,jj)*tmp(jj);
end
x(j)=s;
end
return
GRAFIK Forward Modeling
GRAFIK HASIL INVERS DAN FORWARD MODELING
GRAFIK EROR HASIL INVERSE
04
VES
You can enter a subtitle here in
case you need it
Script MATLAB VES
SCRIPT PENJELASAN
close all; • Data ab2 dipanggil. Bidang ekipotensial bumi membentuk koordinat bola sehingga
clear all; kedalaman yang dapat dipenetrasi oleh arus listrik sebesar ab/2.
clc;
format long; • Konfigurasi elektroda yang digunakan pada VES ini adalah konfigurasi
load ab2.txt; schlumberger. Berikut merupakan konfigurasi Schlumberger :
x = ab2(:,1);
roa = ab2(:,2);
2#3 2%3
r = [P1 P2 Pn]; • 𝑟01 = +
, 𝑟14 =
+
, 𝑟05 = 𝑟54 , 𝑟01
t = [t1 tn-1];
m = [r t];
• Nilai resistivitas semu (ρ3 ) memenuhi persamaan berikut
rinitial = r;
tinitial = t;
./
lr = length(r); (2% #3 % )
• ρ3. 01
lt = length(t); 3
kr = 10e-10;
iteration = 1;
maxiteration = 500;
dfit = 1;
SCRIPT PENJELASAN
while iteration<maxiteration • Hubungan antara data apparent resistivity dan ketebalan perlapisan digambarkan oleh
r = m(1:lr); persamaan integral Henkel yang dapat ditulis sebagai berikut :
t = m(1+lr:lr+lt);
for i = 1:length(x) 7
• ρ3 = 𝑠 + ∫6 𝑇 𝜆 𝐽* 𝜆𝑠 𝜆d𝜆
s = ab2(i);
[g] = VES1dmod (r,t,s);
roa1(i,:) = g; • S adalah jarak antar elektroda arus (AB/2 untuk konfigurasi Schlumberger), J1 adalah
End fungsi Bessel orde-satu, dan 𝑇(𝜆) adalah fungsi transformasi resistivitas yang
e1 = [log(roa)-log(roa1)]; dinyatakan oleh formulasi Pekeris (Koefoed and Mallick, 1979):
dd = e1;
misfit1 = e1'*e1; )"23 𝜆 %8" 9:;< 𝜆= "
if misfit1<kr • 𝑇- = 4"23 𝜆 5678 𝜆!"
I = n-1 , … , 1
*%
loglog(x,roa,'k.',x,roa1,'k'); 9"

axis([1 1000 1 1000])


xlabel('AB/2 (m)'); • Yang kemudian persamaan tersebut disederhanakan menjadi : ρ3 = ∑> 𝑇> 𝜆 𝑓>
ylabel('Apparent Resistivity (Ohm-m)');
break
end • Dimana, 𝑓> adalah nilai koefisien filter yang diturunkan oleh Gosh. Dengan demikian
fungsi pemodelan forward modeling VES yang menyatakan resistivitas semu (ρ3 ) sebagai
fungsi dari resistivitas dan ketebalan tiap lapisan ρ> , ℎ> , k = 1, … , n dan n adalah jumlah
lapisan.
SCRIPT PENJELASAN
[A] = jacobian(ab2,x,r,t,lr,lt,roa,roa1); • Solusi the damped least-squares diberikan oleh persamaan berikut :
[U S V] = svd(A,0);
ss = length(S); • ∆𝑝 = (𝐴) 𝐴 + 𝜀 + 𝐼)#* 𝐴) ∆d
say = 1;
k = 0;
while say<ss • Dimana, ∆𝑝 = vektor koreksi parameter, ∆d = vektor perbedaan data, A = matriks
diagS = diag(S); Jacobian, I = matriks identitas, dan 𝜀 = faktor redaman
beta = S(say)*(dfit^(1/say));
if beta<10e-5 • Karena data yang digunakan pada studi ini menggunakan persoalan skala kecil, solusi the
beta = 0.001*say; damped least-squares diselesaikan menggunakan SVD pada inversi.
end
• Sebuah matriks n x n atau n x p, A dapat difaktorkan menjadi produk dari tiga matriks
yang lain, yaitu :

• 𝐴 = 𝑈𝑆𝑉 )

• Faktorisasi ini dikenal sebagai SVD dari A.


SCRIPT PENJELASAN
for i4 = 1:ss • Jika SVD digunakan pada solusi damped least-squares, maka :
SS(i4,i4) = S(i4,i4)/(S(i4,i4)^2+beta);
end • ∆𝑝 = (𝑉𝑆 + 𝑉 ) + 𝜀 + 𝐼)#* 𝑉𝑆𝑈 ) ∆d
dmg = V*SS*U'*dd;
mg = exp(log(m)+dmg');
r = mg(1:lr); • Persamaan diatas kemudian ditambahkan dengan faktor redaman, kemudian diinvers,
t = mg(1+lr:lr+lt); disubstitusi, dan vektor koreksi parameter ditunjukkan sebagai :
for i5 = 1:length(x)
s = ab2(i5); 𝜆1
[g] = VES1dmod (r,t,s); • ∆𝑝 = 𝑉𝑑𝑖𝑎𝑔 % 𝑈 ) ∆d
𝜆1 %?
roa4(i5,:) = g;
end
• Persamaan diatas menyediakan solusi damped last-squares
SCRIPT PENJELASAN
e2 = [log(roa)-log(roa4)]; • Untuk inversi otomatis, umumnya faktor redaman diatur menjadi nilai positif yang besar
misfit2 = e2'*e2; dan memanfaatkan sifat konvergensi awal dari metode penurunan paling curam,
if misfit2>misfit1 kemudian faktor redaman dikalikan dengan faktor yang lebih rendah setiap iterasinya.
('Beta control') Hal ini dilakukan agar metode least-squares mendapatkan hasil yang mendekati solusi.
say = say+1;
k = k+1; • Faktor redaman dideterminasi dengan :
if k == ss-1
iteration = maxiteration; 3
say = ss+1; • 𝜀 = 𝜆2 ∆𝑥 :
end
else • Dimana L merupakan nomer uji yang digunakan untuk faktor redaman pada setiap iterasi.
say = ss+1; 𝜆 merupakan parameter eigenvalue. Istilah ∆𝑥 diberikan oleh :
m = mg;
dfit = (misfit1-misfit2)/misfit1;
" );3 #" )
iteration = iteration+1; • ∆𝑥@ = " );3
a = iteration;
if dfit<kr
iteration = maxiteration; • Dimana 𝑥@#* merupakan nilai misfit yang didapat dari iterasi sebelumnya, sedangkan 𝑥@
say = say+1; adalah nilai misfit yang diperoleh dari iterasi saat ini.
end
end • Kedua persamaan ini digunakan untuk mengatur faktor redaman pada setiap iterasi.
end
SCRIPT PENJELASAN
subplot(1,2,1),
loglog(x,roa,'k.',x,roa4,'k');
axis([1 1000 1 1000])
xlabel('AB/2 (m)');
ylabel('Apparent Resistivity (Ohm-m)');
pause(0.001)
end

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?

Anda mungkin juga menyukai