Anda di halaman 1dari 12

LAPORAN AKHIR PRAKTIKUM

KOMPUTASI GEOFISIKA TG2204

MODUL KE – 4
CURVE FITTING DAN OPTIMALISASI
Oleh:
Anggita Miftahul Jannah 121120034

Asisten :

1. Mu’amar Hafiz 119120084


2. Agis Wandahlia Jambak 120120004
3. Junita Cintia Dewi Br Pinem 120120054
4. Ilham Wahyudi 120120056
5. Azriel Bilhaq 120120064
6. Salsabila Mukhlis 120120160
7. Waldi Tambunan 120120175
8. Josma Hardianto Damanik 120120183

PROGRAM STUDI TEKNIK GEOFISIKA


JURUSAN TEKNOLOGI PRODUKSI DAN INDUSTRI
INSTITUT TEKNOLOGI SUMATERA
2023
A. TUJUAN PRAKTIKUM
Tujuan praktikum adalah sebagai berikut:
1. Mahasiswa mengerti dan mampu menggunakan regresi linear dan
regresi data geofisika dan geologi menggunakan bahasa python.
2. Mahasiswa mengerti dan mampu menggunakan regresi linear dan
regresi data geofisika dan geologi menggunakan bahasa C++. B.

B. DASAR TEORI
Curve-fitting merupakan proses data-smoothing , yakni proses pendekatan
terhadap kecenderungan data-data dalam bentuk persamaan model matematika.
Proses ini juga dapat digunakan untuk keperluan interpolasi data.

.Misalkan tersedia data-data y pada berbagai x (sejumlah n pasang),maka dapat


dicari suatu persamaan y = f(x) yang memberikan hubungan y dengan x yang
mendekati data. Proses ini disebut curve fitting.

Curve Fitting juga dapat disebut sebagai meng-capture trend dari distribusi
data melalui suatu model tunggal atau fungsi tunggal,contoh pada gambar
dibawah ini
Tujuan dari curve fitting pada data diatas adalah menentukan nilai koefisien atau
parameter model a dan b sehingga f(x) ‘fits’ dengan data. Contoh lainnya adalah
pada gambar berikut,

Linear Curve Fitting (Regresi Linier) yaitu memodelkan dengan menggunakan


fungsi linier atau fungsi polinom derajat 1 sebagai berikut,

Untuk menentukan persamaan garis lurus yang fit dengan data maka syaratnya
adalah jarak setiap data terhadap garis tersebut harus minimum. Oleh karena itu,
error atau selisih antara data observasi dengan hasil kalkulasi melalui fungsi atau
model harus minimum.
Jika misalkan T adalah data observasi dan T adalah data hasil kalkulasi
i
obs
i
cal

(T=a+bz) maka fungsi objektifnya adalah sebagai berikut,


Jika E minimum maka turunannya terhadap parameter model a dan b

sama dengan nol,


Sehingga, solusi akhirnya adalah sebagai berikut,

Polynomial Curve Fitting merupakan pendekatan trend data dengan model polinom.
Regresi ini masih termasuk regresi linier karena hubungan antara data dengan
parameter masih linier. Bentuk umum polynomial curve fitting adalah sebagai berikut,
Bagaimana kita menentukan koefisien sehingga model diatas fit dengan data
hasil observasi. Idenya sama dengan linear curve fitting, yaitu
meminimukan fungsi error.

atau

Dimana n adalah banyaknya data dan j adalah derajat atau order polinom.
Deangan cara yang sama seperti pada linear curve fitting,

Dalam bentuk matriks, dapat direpresentasikan sebagai berikut,

Tidak peduli berapapun nilai j (derajat polinom), kita akan tetap memperoleh
persamaan LINIER terhadap parameter model atau koefisien.
C. LANGKAH PENGERJAAN

Regresi Linear
import numpy as np
import matplotlib.pyplot as plt

#Input Jumlah Data


n = int(input('Masukkan Jumlah Data Input : '))
s = []

#Input Data Kedalaman4


x = []
for i in range (n) :
X = float(input('Masukkan Jumlah Data Kedalaman ke-%d : ' %i
))
x.append (X)

#Input Data Temperatur


y = []
for i in range (n) :
Y = float(input('Masukkan Jumlah Data Temperatur ke-%d : ' %
i))
y.append (Y10)

print('Data Input : ')


print('Data X : ',x)
print('Data Y : ',y)

xsum = 0
ysum = 0
x2sum = 0
jml = 0

for i in range (n):


xsum = xsum+x[i]
ysum = ysum+y[i]
x2sum = x2sum+(x[i]**2)
jml = jml+x[i]*y[i]

a = (n*jml-xsum*ysum)/(n*jml-xsum*xsum)
b = (x2sum*ysum-xsum*jml)/(x2sum*n-xsum*xsum)

Y = np.zeros
for i in range (n) :
y[i] = a+b*x[i]

print('The Linear Fittring is : ', y[i])


print("Fungsi Linear Fitting adalah : T=",a,"Z",b)

plt.plot(x,y,'o',x,y)
plt.title('Regresi Linear')
plt.ylabel('Temperatur')
plt.xlabel('Kedalaman')
plt.show()

 Open google collab.


 Input kamus numpy dan matplotlib.
 Input jumlah data dengan fungsi ‘int’.
 Input data kedalaman untuk x dengan fungsi perulangan.
 Input data temperatur untuk y dengan fungsi perulangan.
 Input rumus perhitungan regresi linear.
 Plot curve fitting dengan py.plot.
 Print semua hasil.

Regresi Polinom
import numpy as np
import matplotlib.pyplot as plt

#input data
n = int(input('Masukkan jumlah data yang ingin diinput:'))

#input data kedalaman


x = []
for i in range (n):
data_x = float(input('Masukkan data kedalaman ke-%d : ' %i))
x.append (data_x)
#input data temperatur
y = []
for i in range (n):
data_y = float(input('Masukkan data temperature ke-%d : ' %i
))
y.append (data_y)
print('x : ',x)
print('y : ',y)

polinom = int(input('masukan derajat polinom:'))


z = np.polyfit(x,y,polinom)
f = np.poly1d(z)
print ('persamaan yang fit untuk derajat %d; /n' %polinom,f)
#menghitung interpolasi nilai polinom
xpol = np.linspace (x[0],x[-1],10)
ypol = f(xpol)

plt.plot(x,y,'*',xpol,ypol)
plt.title('Regresi Polinom')
plt.ylabel('Temperature')
plt.xlabel('Kedalaman')
plt.show()

 Open google collab.


 Input kamus numpy dan matplotlib.
 Input fungsi untuk jumlah data yang akan diinput dengan ‘int’.
 Input data kedalaman untuk x dengan fungsi perulangan.
 Input data temperatur untuk y dengan fungsi perulangan.
 Input rumus perhitungan regresi polinom.
 Plot curve fitting dengan py.plot.i
 Print semua hasil.

Mencari g dan v0 menggunakan regresi polinom


print('Anggita Miftahul Jannah_121120034')

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures

# Data observasi
t = np.array([0.00, 0.25, 0.50, 0.75, 1.00, 1.25, 1.50, 1.75,
2.00, 2.25, 2.5, 2.75, 3.00,3.25, 3.5, 3.75, 4.00,4.25, 4.5, 4
.75, 5.00 ])
h = np.array([5.00, 5.75, 6.4, 6.94, 7.38, 7.72, 7.96, 8.1, 8.
13, 8.07, 7.9, 7.62, 7.25, 6.77,6.2,5.52,4.73,3.85,2.86,1.77,0
.58])

# Regresi polinom
degree = 2 # Derajat polinom
poly_features = PolynomialFeatures(degree=degree)
X_poly = poly_features.fit_transform(t.reshape(-1,1))
lin_reg = LinearRegression()
lin_reg.fit(X_poly, h)
coef = lin_reg.coef_
intercept = lin_reg.intercept_
y_poly = coef[2]*t**2 + coef[1]*t + intercept # Persamaan regr
esi polinom

#Kecepatan awal
v0 = -coef[1]/(2*coef[2])
print("Kecepatan awal (Vo) = {:.2f} m/s".format(v0))

# Model GLBB
ho = 5.00 # Ketinggian awal
g = 10 # Percepatan gravitasi di Bumi (m/s^2)
y = ho+v0*t+0.5*g*t**2 # Persamaan GLBB

# Percepatan gravitasi di planet X


g_x = 2*(y[8]-ho-v0*t[8])/t[8]**2
print("Percepatan gravitasi di planet X = {:.2f} m/
s^2".format(g_x))

# Plot data observasi dan regresi polinom


plt.scatter(t, h, color='pink', label='Data Observasi')
plt.plot(t, y_poly, color='grey', label='Regresi Polinom')
plt.xlabel('Waktu (s)')
plt.ylabel('Ketinggian (m)')
plt.title('Data Observasi dan Regresi Polinom')
plt.legend()
plt.show()

 Import kamus numpy, matplotlib,


sklearn.linear,sklearn.preprocessing.
 Input data t dan h menggunakan fungsi np.array.
 Input rumus regresi polinom.
 Input rumus untuk kecepatan awal.
 Input rumus untuk model glbb.
 Input rumus untuk gravitasi.
 Plot data observasi dan regresi polinom.
D. DIAGRAM ALIR

E. HASIL
Regresi Linear
Regresi Polinom
Mencari g dan v0 Menggunakan Regresi Polinom

Anda mungkin juga menyukai