• Tidak ada hasil yang ditemukan

Regresi dan Interpolasi

N/A
N/A
Protected

Academic year: 2021

Membagikan "Regresi dan Interpolasi"

Copied!
10
0
0

Teks penuh

(1)

Regresi dan Interpolasi

Modul #3 Praktikum

AS2205 Astronomi Komputasi

Oleh

Dr. Muhamad Irfan Hakim

Program Studi Astronomi

Fakultas Matematika dan Ilmu Pengetahuan Alam

Institut Teknologi Bandung

(2)

Daftar Isi

Daftar Isi i 1 Pendahuluan 1 2 Praktikum 4 2.1 Interpolasi Newton . . . 4 2.2 Regresi. . . 5 i

(3)

Bab 1

Pendahuluan

Untuk pekerjaan komputasi regresi dan interpolasi kali ini, ada beberapa hal yang perlu kita perhatikan:

1. Pekerjaan pertama praktikum ini adalah interpolasi, pekerjaan kedua adalah regresi linear dan kuadratik.

2. Pada interpolasi Newton, proses perhitungan interpolasi terdiri atas dua algo-ritma

(a) algoritma perhitungan koefisien interpolan Newton m ← len(xData) # jumlah titik data

a ← yData.copy() # salin koordinat-y dari data for k in range(1, m):

for i in range(k, m):

a[i] ← (a[i] - a[k-1])/(xData[i] - xData[k-1]) atau

m ← len(xData) # jumlah titik data

a ← yData.copy() # salin koordinat-y dari data for k in range(1, m):

a[k:m] ← (a[k:m]-a[k-1])/(xData[k:m]-xData[k-1]) (b) algoritma perhitungan interpolan Newton

n ← len(xData) - 1 # derajat maksimum polinom p ← a[n] # nilai awal polinom

for k in range(1, n + 1):

p ← a[n - k] + (x - xData[n - k])*p

3. Untuk dapat memanfaatkan modul python secara maksimal, modul array dan arangedapat dimanfaatkan. Contoh:

from numpy import array,arange

cx = array([2., 3., 4.]) # deklarasi cx sebagai array

(4)

Bab 1. Pendahuluan

# arange = array range, mirip dengan pemanfaatan range # namun dapat menggunakan bilangan riil

for x in arange(0.0, 1.0+0.1, 0.1):

print(x) # cek!!

Ini dapat dimanfaatkan misalnya untuk tabulasi fungsi, atau plot data. 4. Pada interpolasi, variabel xData dan yData perlu dipasok sebagai input. Akan

dipilih input dengan cara baca file. Misalkan file “data.csv” (6 baris): 0.15 4.79867 2.30 4.49013 3.15 4.22430 4.85 3.47313 6.25 2.66674 7.95 1.51909

File ini dapat dibaca sebagai berikut (silakan coba): import numpy as np

fdata = open("data.csv", "r") # buka data.csv u/ dibaca m = input(’Number of data, m = ’) # jumlah baris di data.csv xData = np.zeros(m) # nilai awal nol u/ xData yData = np.zeros(m) # nilai awal nol u/ yData for j in range(0, m):

# data kolom-1 dimulai dari byte 0, dibaca 4 karakter # data kolom-2 dimulai dari byte 5, dibaca 7 karakter

# tiap baris ada 12 karakter (termasuk karakter ganti baris # (invisible character)). Maka, pembacaan berikutnya dimulai # dari byte 13 (dan seterusnya).

fdata.seek(0+13*j); x = fdata.read(4); xData[j] = x fdata.seek(5+13*j); y = fdata.read(7); yData[j] = y fdata.close() # jangan lupa tutup file

# print(xData) # u/ debug # print(yData) # u/ debug

5. Untuk regresi, diperlukan solusi SPL. Dengan melihat rujukan modul prakti-kum sebelumnya, solusi via algoritma milik numpy dapat dilihat dalam contoh di bawah ini:

# Solusi numerik SPL: # BA = C

(5)

Bab 1. Pendahuluan

# menggunakan algoritma SPL dari numpy import numpy as np

from numpy.linalg import * # matriks B untuk contoh B = np.array([

[ 2., 3., -1.], [ 4., 4., -3.], [-2., 3., -1.] ])

# matriks C untuk contoh C = np.array([5., 3., 1.])

A = np.linalg.solve(B, C) # solusi # print(A) # u/ debug

(6)

Bab 2

Praktikum

2.1

Interpolasi Newton

Lakukan langkah-langkah berikut:

1. Siapkan file “viscos0.csv” (7 baris) di bawah ini (dengan editor sederhana atau misalnya dengan spreadsheet Excel). Ini adalah relasi temperatur terhadap viskositas kinematik pada suatu fluida.

0.0 1.790 21.1 1.130 37.8 0.696 54.4 0.519 71.1 0.338 87.8 0.321 100.0 0.296

2. Untuk dapat melihat hasil yang lebih baik dalam grafik, plot data dan inter-polasi akan dilakukan. Keseluruhan modul-modul yang diperlukan dipanggil sebagai berikut:

import matplotlib.pyplot as plt import numpy as np

from numpy import array,arange

3. Secara ringkas, ada beberapa urutan blok pada program yang harus Anda kerjakan

(a) blok pemanggilan modul (lihat sebelumnya)

(b) blok buka file, baca data, simpan data, dan tutup file (pelajari contoh sebelumnya)

(c) blok perhitungan koefisien interpolan (d) blok penyiapan plot, contoh:

(7)

Bab 2. Praktikum 2.2. Regresi

plt.grid(True) # ya, pakai grid plt.xlabel(’label sumbu x’) # temperatur plt.ylabel(’label sumbu y’) # viskositas plt.xlim(min(minx, 0.),1.1*maxx) # min & max plt.ylim(min(miny, 0.),1.1*maxy) # u/ plot

(e) blok perhitungan interpolan Newton yang dibuat bersarang dalam loop untuk tabulasi atau plot menggunakan arange. Contoh:

for x in arange(minx, maxx + h, h):

# algoritma ASLINYA mulai dari baris di bawah ini p = a[n] # nilai awal polinom for k in range(1, n + 1):

p = a[n - k] + (x - xData[n - k])*p # SAMPAI DI SINI

y = p

plt.plot(x,y,’b.’) # black ’b’ plot w/ dot ’.’

(f) Jangan lupa, plot titik data dari file (kali ini pakai range), dan tunjukkan grafik

for j in range(0,m):

# red ’r’ plot w/ circle ’o’

plt.plot(xData[j], yData[j],’ro’,linewidth=5) plt.title(’Tulis judul grafik bila perlu’)

plt.show()

2.2

Regresi

Untuk regresi (linear, polinomial), lakukan debugging blok demi blok pada program berikut, lalu berikan ulasan, manakah hasil regresi yang lebih baik?

import matplotlib.pyplot as plt import numpy as np

from numpy import array,arange from math import *

from numpy.linalg import *

####################################################### # kinematic viscosity of water varies with temperatur T # T <--> xData # viscosity <--> yData ####################################################### fdata = open("viscos0.csv", "r") m = input(’Number of data, m = ’) xData = np.zeros(m)

(8)

Bab 2. Praktikum 2.2. Regresi

yData = np.zeros(m)

sumx = 0.; sumx2 = 0.; sumx3 = 0.; sumx4 = 0. sumy = 0.; sumxy = 0.; sumx2y = 0.

st = 0.; sr1 = 0.; sr2 = 0. # 2.2 11.098 # sample data

for j in range(0,m):

fdata.seek(0+11*j); xdt = fdata.read(3); xData[j] = xdt fdata.seek(4+11*j); ydt = fdata.read(6); yData[j] = ydt sumx += float(xdt) sumx2 += float(xdt)*float(xdt) sumx3 += float(xdt)*float(xdt)*float(xdt) sumx4 += float(xdt)*float(xdt)*float(xdt)*float(xdt) sumy += float(ydt) sumxy += float(xdt)*float(ydt) sumx2y += float(xdt)*float(xdt)*float(ydt) fdata.close() xmean = sumx/m ymean = sumy/m # print(m) # print(sumx) # print(sumx2) # print(sumx3) # print(sumx4) # print(sumy) # print(sumxy) # print(sumx2y) # linear regression

a1 = (m*sumxy - sumx*sumy)/(m*sumx2 - sumx*sumx) a0 = ymean - a1*xmean

# quadratic regression B = np.array([

[m, sumx, sumx2], [sumx, sumx2, sumx3], [sumx, sumx3, sumx4] ])

C = np.array([sumy, sumxy, sumx2y]) A = np.linalg.solve(B, C)

print(’[A] = ’) print(A)

(9)

Bab 2. Praktikum 2.2. Regresi

for j in range(0,m):

st += (yData[j] - ymean)*(yData[j] - ymean)

sr1 += (yData[j] - a0 - a1*xData[j])*(yData[j] - a0 - a1*xData[j]) sr2 += (yData[j] - A[0] - A[1]*xData[j] - A[2]*xData[j])*\

(yData[j] - A[0] - A[1]*xData[j] - A[2]*xData[j]) syx1 = sqrt(sr1/(m - 2)) syx2 = sqrt(sr2/(m - 3)) r12 = (st - sr1)/st r22 = (st - sr2)/st n = m - 1 minx = min(xData[0],xData[n]) maxx = max(xData[0],xData[n]) miny = min(yData[0],yData[n]) maxy = max(yData[0],yData[n]) print(’---’) print(’ xi yi’) print(’---’) for j in range(0,m):

print(’%.1f %.3f’ % (xData[j], yData[j])) print(’---’) print(’a[0] = %+.5f’ % a0) print(’a[1] = %+.5f’ % a1) print(’syx1 = %+.5f’ % syx1) print(’syx2 = %+.5f’ % syx2) print(’r1^2 = %+.5f’ % r12) print(’r2^2 = %+.5f’ % r22) plt.grid(True) plt.xlabel(’label sumbu x’) plt.ylabel(’label sumbu x’) plt.xlim(min(minx, 0.),1.1*maxx) plt.ylim(min(miny, 0.),1.1*maxy) h = input(’plot interval, h = ’) der = input(’linear (1) / quadratic (2) ? der = ’) ################################# # ################################# if der==1: for x in arange(minx,maxx+h,h): y1 = a0 + a1*x plt.plot(x,y1,’b.’)

(10)

Bab 2. Praktikum 2.2. Regresi

plt.title(’judul’) elif der==2:

for x in arange(minx,maxx+h,h): y2 = A[0] + x*(A[1] + A[2]*x) plt.plot(x,y2,’b+’)

plt.title(’judul’) for j in range(0,m):

plt.plot(xData[j], yData[j],’ro’,linewidth=5) plt.show()

Referensi

Dokumen terkait

Admin berfungsi sebagai seorang manajer sistem yang tugas nya merubah, menghapus dan menambah data pada menu aplikasi booking taksi berbasis android menggunakan

Dissastifier (hygine factors) ialah faktor-faktor yang terbukti menjadi sumber ketidakpuasan, terdiri antara lain: penghasilan, pengawasan, hubungan pribadi,

Parfum Laundry Kota Lubuklinggau Beli di Toko, Agen, Distributor Surga Pewangi Laundry Terdekat/ Dikirim dari Pabrik.. BERIKUT INI TARGET MARKET PRODUK

Mengingat gaya kepemimpinan yang baik karena dapat menyesuikan dengan keadaan lingkungan sehingga dengan tetap tegas dan cerdas, motivasi kerja pegawai yang tinggi dan promosi

bertiga seperti mempunyai dunia masing-masing.. Perceraian merupakan hasil keputusan orang tua yang disebabkan oleh suatu konflik yang tak ditemukan jalan

Pengaruh kesehatan emotional dan kecerdasan spiritual terhadap kepuasan kerja auditor dalam kantor akuntan public di surabaya.. Skripsi tidak

Hasil analisis AHP secara keseluruhan industri batik Semarang yang dilihat melalui aspek produksi, aspek distribusi, aspek permintaan pasar, dan aspek sosial

Dengan banyak nya jalur angkot, sehingga sistem ini dirancang untuk mendukung pengguna dalam mencari informasi seputar rute angkot terpendek dari posisi awal sampai ke tempat