MODUL KE – 4
CURVE FITTING DAN OPTIMALISASI
Oleh:
Anggita Miftahul Jannah 121120034
Asisten :
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.
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,
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
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,
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
xsum = 0
ysum = 0
x2sum = 0
jml = 0
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]
plt.plot(x,y,'o',x,y)
plt.title('Regresi Linear')
plt.ylabel('Temperatur')
plt.xlabel('Kedalaman')
plt.show()
Regresi Polinom
import numpy as np
import matplotlib.pyplot as plt
#input data
n = int(input('Masukkan jumlah data yang ingin diinput:'))
plt.plot(x,y,'*',xpol,ypol)
plt.title('Regresi Polinom')
plt.ylabel('Temperature')
plt.xlabel('Kedalaman')
plt.show()
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
E. HASIL
Regresi Linear
Regresi Polinom
Mencari g dan v0 Menggunakan Regresi Polinom