Anda di halaman 1dari 24

LAPORAN AKHIR PRAKTIKUM

KOMPUTASI GEOFISIKA TG2204

MODUL KE – 4
CURVE FITTING DAN OPTIMALISASI

Oleh:
Johannes Kevin Simanjuntak 119120045

Asisten :
Nugroho Prasetyo, S.T.
Rizki Wulandari, S.T.
Wisnu Prayudha, S.T.
Irma G Pangaribuan 118120119
Muhammad Ichsan 12117143

PROGRAM STUDI TEKNIK GEOFISIKA


JURUSAN TEKNOLOGI PRODUKSI DAN INDUSTRI
INSTITUT TEKNOLOGI SUMATERA
2021
BAB I
TUJUAN

Adapun tujuan dari praktikum ini ialah Mahasiswa mengerti dan mampu
menggunakan regresi linear dan regresi data geofisika dan geologi menggunakan
bahasa python.
BAB II
DASAR TEORI

Jika suatu masalah inversi dapat direpresentasikan kedalam persamaan


d=Gm, maka ia disebut linear. Kita dapat menjalankan prosedur yang sederhana
untuk memperoleh nilai m dari data observasi. Dalam kenyataannya, tidak semua
data observasi berhimpit dengan satu garis lurus. Jika kita mencoba melakukan
fitting terhadap semua titik data observasi kepada satu garis, maka garis yang
didapat disebut garis regresi. Misalnya, ada satu set data observasi yang ditulis
sebagai ( x 1 , y 1 ) , ( x 2 , y 2 ) , … ,(x n , y n ), garis regresi dinyatakan sebagai. [ CITATION
hen09 \l 1033 ]

y=a0 +a1 x

Dan setiap data memenuhi relasi berikut

y i=a0 +a1 xi + ei

dimana e i disebut error, residual, atau sering juga disebut misfit atau
kesalahan prediksi (prediction error). Garis regresi tidak akan berhimpit dengan
setiap data observasi dan biasanya untuk kasus inversi seperti ini selalu
overdetermined. Secara umum, tipe masalah inversi seperti ini diselesaikan
dengan metode least squares. Dengan metode least squares, kita mencoba
meminimalkan error, e i , dengan cara menentukan nilai a 0 dan a 1 sedemikian rupa
sehingga diperoleh jumlah-kuadrat-error, (S), yang minimal.

kita melakukan pendekatan secara linear, dimana fungsi pendekatan-nya


adalah

P ( x i) =a 1 x i+ a0

Problemnya adalah berapakah nilai konstanta a 1 dan a 0 yang sedemikian

rupa. Dengan kata lain, sebisa mungkin y i sampa dengan P ( x i) atau dapat
diformulasikan sebagai
m

∑ yi −¿ P ( x i ) =0 ¿
i=1

∑ yi −¿ ( a1 xi + a0 )=0¿
i=1

Suku yang berada disebelah kiri dinamakan fungsi error (error function),
yaitu

m
E ( a 0 , a1 ) =∑ y i−¿ ( a1 x i +a0 ) ¿
i=1

Semua data yang diperoleh melalui eksperimen, fungsi error-nya tidak


pernah bernilai nol. Jadi, tidak pernah didapatkan garis yang berhimpit dengan
semua titik data ekperimen. Namun demikian, kita masih bisa berharap agar
fungsi error menghasilkan suatu nilai, dimana nilai tersebut adalah nilai yang
paling minimum atau paling mendekati nol. Harapan tersebut diwujudkan oleh
metode least square dengan sedikit modifikasi pada fungsi error-nya sehingga
menjadi

m
E ( a 0 , a1 ) =∑ ¿ ¿
i=1

Agar fungsi error bisa mencapai nilai minimum, maka syarat yang harus
dipenuhi adalah:

∂ E ( a0 , a1 )
=0
∂ a1

dimana i = 0 dan 1, karena dalam kasus ini memang cuma ada a 0a0 dan a 1.
Maka mesti ada dua buah turunan yaitu:

∂ E ( a0 , a1 ) ∂
m

∂ a0
= ∑ ¿¿
∂ a0 i=1

m
2 ∑ ( y ¿ ¿ i−¿ a1 x i−a 0)(−1)=0¿ ¿
i=1

m m
a 0 m+a1 ∑ x i=∑ y i
i=1 i=1
Dan

∂ E ( a0 , a 1 ) ∂
m

∂ a1
= ∑¿¿
∂ a1 i=1

m
2 ∑ ( y ¿ ¿ i−¿ a1 x i−a 0)(−x i )=0 ¿ ¿
i=1

m m m
2
a 0 ∑ x i +a1 ∑ x i =∑ x i y i
i=1 i=1 i=1

Akhirnya didapat solusi persamaan berikut ini


m m m m
2
∑ xi ∑ y i−∑ x i yi ∑ x i
a 0= i=1 i=1 i=1 i=1
m m 2

m (∑ ) (∑ )
i=1
xi2 −
i=1
xi

m m m
m ∑ x i y i−∑ xi ∑ y i
i=1 i=1 i=1
a 1= m m 2

m ( )( )
∑ xi2 −
i=1
∑ xi
i=1

Nilai a0 dan a1 disebut koefisien regresi.

Metode regresi linear dapat didekati dengan operasi matriks. Pendekatan


matrik ini dimulai dari upaya membuat persamaan matrik d = Gm dari persamaan
mode. Unknown parameter, yang hendak dipecahkan, terkandung pada elemen-
elemen vektor m. Jika data yang kita miliki sangat ideal dalam arti tidak ada error
sama sekali, maka m bisa diperoleh sebagai berikut

m=G−1 d

Akan tetapi, pada kenyataannya semua data pengukuran pasti memiliki error
yang besarnya relatif bervariasi. Karenanya, data observasi tak akan pernah fit
secara sempurna dengan model. Itu artinya keberadaan misfit tidak pernah bisa
dihindari. Konsekuensinya, misfit (baca: error) tersebut mesti disertakan pada d =
Gm

d=Gm+ e i
dan selanjutnya, solusi regresi linear diupayakan dengan cara meminimalkan
jumlah kuadrat dari error, e i . Cara ini tak lain berupaya untuk memperoleh misfit
terkecil yaitu jarak perbedaan terkecil antara data survei dan model. Dalam
formulasi matematika, kuadrat error tersebut dinyatakan dengan

q=e T e=( d −Gm )2 (d−Gm)

Dimana simbol T maksudnya adalah operasi transpose. Agar kuadrat error di


atas menghasilkan nilai minimal, maka persamaan di atas, diturunkan terhadap m
dan hasilnya harus sama dengan nol

T T T T T T
∂ q ∂ [ d d−d Gm−m G d+ m G Gm ]
=
∂ mj ∂m j

Sehingga

−d T G−GT d+ G T Gm+mT GT G=0

Akhirnya diperoleh

2 G T Gm=2 G T d

GT Gm=GT d

Persamaan di atas disebut persamaan normal. Dengan persamaan normal,


estimasi unknown parameter yang terkandung pada vektor m ditentukan oleh

−1
m=[ G T G ] G T d

Persamaan di atas disebut unconstrained least squares terhadap masalah


−1
inversi d = Gm. Bagian [ GT G ] GT d dinamakan Generalized Inverse yang
mengolah data d untuk memperoleh parameter model m. [ CITATION Sup07 \l 1033 ]
BAB III
LANGKAH PENGERJAAN
1. Regresi Linear
MENGINPUT BANYAK/JUMLAH DATA

 Pertama import numpy sebagai np, numpy merupakan pustaka untuk


menambah dukungan untuk array dan matriks multi-dimensi yang besar.
 Deklarasikan n sebagai tipe data intreger (data sebagai bilangan bulat),
lalu inputkan “jumlah data yang ingin diinput”
 Selanjutnya, deklarasikan s sebagai data, s=[].

MENGINPUT DATA KEDALAMAN

 Lalu, deklarasikan data x, x = [].


 Kita gunakan perulangan for terhadap i dengan range sebesar n.
 Deklarasi X sebagai tipe data float (data bilangan desimal), lalu input
“masukkan data x ke-%d” data x yang diinput sesuai dengan jumlah data
yang diinput.
 Lalu ketik x.append(X), maksudnya kita menambahkan item terakhir dari
daftar x setara dengan nilai X yang diinput.

MENGINPUT DATA TEMPERATUR

 Lalu, deklarasikan data y, y = [].


 Lalu, lakukan perulangan for terhadap i dengan range sebesar n.
 Selanjutnya, input Y sebagai tipe data float.
 Lalu, ketik y.append(y).
 Lalu, kita output/print data input, data x, dan data y.
 Setelah itu, nyatakan xsum, ysum, x2sum, dan jm1 sama dengan nol.
REGRESI LINEAR

 Selanjutnya, lakukan perulangan for terhadap I dengan range n.


 Lalu kita akan membuat formulasi regresi linear. Pertama nyatakan xsum
= xsum + x[i]
 Lalu, nyatakan lagi ysum = ysum + y[i].
 Lalu, nyatakan lagi x2sum = x2sum + (x[i]**2)
 Lalu, nyatakan jm1 = jm1 + x[i]*y[i]
 Setelah itu, kita akan membuat formulasi a dan b. untuk b, b = (n*jm1 –
xsum*ysum)/(x2sum*n-xsum*xsum)
 Untuk a, a = (x2sum*ysum – xsum*jm1)/(x2sum*n – xsum*xsum)
 Selanjutnya, kita akan membuat persamaan linear. Pertama buat matriks
nol dengan Y = np.zeros(n).
 Lalu, lakukan perulangan for terhadap i dengan range n.
 Buat formulasi y = a + bz dengan Y = a + b*x[i].
 Lalu, print the linier fitting dan fungsi linier fitting.
 Lalu, buat grafing kirva fitting dengan plt.plot(x,y,’o’,x,Y)
 Terahir, untuk menampilkan kurva fitting ketik plt.show().
 Setelah semua program telah diuat, run program. Hal pertama yang
dilakukan setelah program di run adalah memasukkan jumlah data yang
akan diinput, yaitu 10.
 Lalu masukkan data kedalaman, yaitu 5, 16, 25, 40, 50, 60, 70, 80, 90,
100.
 Setelah itu masukkan data temperatut, yaitu 35.4, 50.1, 77.3, 92.3, 137.6,
147, 180.8, 182.7, 188.5, 223.2.
 Setelah semua data telah diinput, maka akan terbentuk data x dan data y
dalam array.
 Untuk hasil linear fitting yang didapat adalah [35.18766763 56.98449183
74.81825708 104.54119917 124.3564939 144.17178862 163.98708335
183.80237808 203.6176728 223.43296753]
 Adapun nilai T yang didapatkan adalah T=25.280020266482737 dan nilai
z=1.9815294726402481.
2. Regresi Polinom
MENGINPUT BANYAK/JUMLAH DATA

 Pertama import numpy sebagai np, numpy merupakan pustaka untuk


menambah dukungan untuk array dan matriks multi-dimensi yang besar.
 Lalu, import matplotlib.pyplot sebagai plt, dimana matplotlib.pyplot
merupakan pustaka untuk dapat menampilkan atau memformulasikan plot
yang kompleks.
 Deklarasikan n sebagai tipe data intreger (data sebagai bilangan bulat),
lalu inputkan “jumlah data yang ingin diinput”

MENGINPUT DATA X

 Deklarasikan x = [].
 Kita gunakan perulangan for terhadap i dengan range sebesar n.
 Deklarasi data_x sebagai tipe data float (data bilangan desimal), lalu input
“masukkan data x ke-%d” data x yang diinput sesuai dengan jumlah data
yang diinput.
 Lalu ketik x.append(data_x), maksudnya kita menambahkan item terakhir
dari daftar x setara dengan nilai data_x yang diinput.

MENGINPUT DATA Y

 Lalu, deklarasikan data y, y = [].


 Lalu, lakukan perulangan for terhadap i dengan range sebesar n.
 Selanjutnya, input data_y sebagai tipe data float.
 Lalu, ketik y.append(data_y).
 Lalu, kita output/print data input, data x, dan data y.
 Deklarasikan polinom sebagai tipe data intreger (data sebagai bilangan
bulat), lalu inputkan “jumlah derajat polinom yang ingin digunakan”

REGRESI POLINOM

 Nyatakan z = np.polyfit(x, y, polinom), polyfit merupakan fungsi numpy


polynomial
 Lalu, nyatakan f = np.poly1d(z), np.poly1d membantu untuk
mendefinisikan fungsi dari polynomial
 Lalu, print persamaan yang fit untuk derajat yang kita iinputkan
sebelumnya.
 Setelah itu, nyatakan x_pol = np.linspace (x[0], x[-1], 50], np.linspace
merupakan fungsi untuk mengembalikan spasi angka secara merata pada
interval.
 Lalu, nyatakan y_pol = f(x_pol)
 Lalu, buat grafing kirva fitting dengan plt.plot(x,y,’o’,x_pol, y_pol)
 Terahir, untuk menampilkan kurva fitting ketik plt.show().
 Setelah semua program telah dibuat, run program. Hal pertama yang
dilakukan saat program di run adalah menginput data sebanyak 5.
 Lalu, kita input data x, yaitu 2, 3, 4, 6, 7
 Lalu, inputkan data y yaitu 12.7, 17.9, 20, 22, 26.
 Setelah itu maka akan keluar data x dan y dalam array.
 Selanjutnya, masukkan persaman derajat polinomnya sebanyak 5
 Maka akan keluar persamaan polinom yaitu -0.001389x + 0.09859x +
2.451x + 17.04x + 11.38.
FLOWCHART REGRESI LINEAR

mulai

Input jumlah data


yang ingin diinput

Input data kedalaman


dan temperatur

Output data kedalaman


dan temperatur

Buat formula regresi


linear

Ouput hasil
linear fitting

Ouput
kurva fitiing

selesai
REGRESI POLINOM

mulai

Input jumlah data


yang ingin diinput

Input data x dan y

Output data x dan y

Buat formula regresi


polinom

Ouput persamaan
polinom fitting

Ouput
kurva fitiing

selesai
BAB IV
HASIL DAN PEMBAHASAN

Dalam kenyataannya, tidak semua data observasi berhimpit dengan satu garis
lurus. Jika kita mencoba fitting terhadap semua titik data observasi kepada suatu
garis, maka garis tersebut dapat disebut sebagai regresi.

Kita sering menghadapi masalah estimasi parameter atau variabel yang mirip
dengan fenomena variasi temperatur terhadap kedalaman. Jika temperatur
bervariasi secara linier terhadap kedalaman maka persamaan matematik yang
merepresentasikan fenomena tersebut adalah persamaan garis lurus. T
(temperatur) sebagai fungsi z (kedalaman), yaitu T = a + b z. Namun,
permasalahan tersebur umumnya dibahas dalam permasalahan regresi garis lurus
ataupun regresi polinom.

Diberikan data kedalaman dan temperature sebagai berikut:

Kedalaman Temperatur
5 35,4
16 50,1
25 77,3
40 92,3
50 137,6
60 147
70 180,8
80 182,7
90 188,5
100 223,2

Dari pemograman yang telah dilakukan, maka didapatkan data hasil fitting
linear yaitu sebagai berikut:

[35.18766763 56.98449183 74.81825708 104.54119917 124.3564939


144.17178862 163.98708335 183.80237808 203.6176728 223.43296753]

Dari hasil kurva fitting di atas, menyatakan bahwa tidak semua hasil
perhitungan atau prediksi temperature cocok (fit) seluruhnya dengan hasil
pengukuran (data) dari lapangan karena adanya error (kesalahan) atau noise.
Namun demikian untuk penyederhanaan masalah semua kesalahan terakumulasi
sebagai selisih antara data pengamatan dengan data perhitungan dapat dianggap
sebagai noise atau error yang harus diminimumkan. Model terbaik atau model
optimum diperoleh jika kesalahan tersebut minimum. Dapat kita lihat dari data
temperature lapangan dan hasil fitting pemograman yang memiliki selisih yang
sangat minimum. Misalnya saja pada data temperature pertama, pada data
lapangan bernilai 35.4, sedangkan pada data fitting pemograman bernilai
35.18766763. dari sini didapat selisih dari kedua nilai adalah hanya 0.2123323.
dari dapat kita lihat bahwa selisih kedua data sangat minimum atau errornya
sangat minimum, sehingga dapat dibentuk garis lurus atau linier.

Dari pemograman ini juga, telah didapatkan nilai parameter model a dan b,
dimana nilai a = 25.280020266482737 dan nilai b = 1.9815294726402481. dari
sini dapat kita bentuk fungsi linear fitting T = a + bz dengan T =
25.280020266482737 + 1.9815294726402481z.
Regresi polinom masih termasuk sebagai regresi linier karena hubungan
antara data dengan parameter model masih linear. Bentuk umum kurva fitting
polinomial adalah sebegai berikut
j
f ( x )=a0 +a1 x+ a2 x 2 +…+ a j x j=a0 + ∑ a k x k
k=1

Adapun data x dan y yang diberikan adalah sebagai berikut


X Y
2 12,7
3 17,9
4 20
6 22
7 26
Disini derajat polinomial yang diberikan adalah 5. Maka dari itu, dari
pemogramaan yang telah dilakukan didapatkan fungsi regresi polinomial adalah
sebagai berikut

f ( x )=−0.001389 x 5 +0.03972 x 4−0.09859 x 3−2.451 x2 +17.04 x−11.38


BAB V
SIMPULAN

Setelah melakukan pemograman Bahasa python untuk curve fitting dan


optimalisasi, di dapatkan kesimpulan yaitu untuk mendapatkan parameter model
pada regresi linear digunakan persamaan berikut

m m m m

∑ xi2 ∑ y i−∑ x i y i ∑ x i
a= i=1 i=1 i=1 i=1
m m 2

m (∑ ) (∑ )
i=1
xi2 −
i=1
xi
m m m
m ∑ x i y i −∑ x i ∑ y i
i=1 i=1 i=1
b= m m 2

m (∑ ) (∑ )
i=1
2
xi −
i=1
xi

Dengan nilai a=25.280020266482737 dan nilai b = 1.9815294726402481.


maka dapat dibentuk persamaan linear yaitu:

T = 25.280020266482737 + 1.9815294726402481z.

Untuk pemograman regresi polinom, didapatkan fungsi polinom yaitu:

f ( x )=−0.001389 x 5 +0.03972 x 4−0.09859 x 3−2.451 x2 +17.04 x−11.38

Adapun persamaan umum kurva fitting polynomial adalah


j
f ( x )=a0 +a1 x+ a2 x 2 +…+ a j x j=a0 + ∑ a k x k
k=1

References
grandis, h. (2009). Pengantar pemodelan Inversi Geofisika. Bandung: Himpunan Ahli
Geofisika Indonesia.

Rodiah. (2018). Komputasi dengan Python. Jakarta: Gunadarma.

Supriyanto. (2007). Analisis Data Geofisika. Depok: Departemen Fisika Fmipa Universitas
Indonesia.

Anda mungkin juga menyukai