Laporan Pemodelan Dan Simulasi
-
Upload
irwansyah-hazniel -
Category
Documents
-
view
385 -
download
13
description
Transcript of Laporan Pemodelan Dan Simulasi
LAPORAN TUGAS BESAR
PEMODELAN DAN SIMULASI
Diajukan untuk memenuhi salah satu tugas mata kuliah Pemodelan dan Simulasi
Dosen Gani Gunawan, S.T., M.T.
Disusun oleh :
10107206 Sarah R Puri
10108286 Juli Rizki A
10108279 Irwansyah
10107349 Guruh Wiraajiputro
10107636 Elan Maulana
JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNIK DAN ILMU KOMPUTER
UNIVERSITAS KOMPUTER INDONESIA
2012
1
2
3
4
5
6
7
8
9
10
11
12
1314
15
16
17
18
19
Hasil pengamatan uji laboratorium 15 detik pertama tentang terlarutnya zat obat dalam sistem peredaran darah makhluk hidup diperoleh data seperti yang tertulis pada tabel sebelah kanan. Jika suatu pemodelan matematis dari data pengamatan tersebut
ada kecenderungan berbentuk y= 1a+bx
dengan a,b adalah parameter data pengamatan, dan x, y adalah variabel data pengamatan. Maka
(i) Tentukan uraian verifikasi matematis dengan linierisasi untuk pembentukan model tersebut agar metode regresi linier dapat dilakukanPerkiraan persamaan umum sederhana untuk model hiperbola ini dapat dituliskan dalam bentuk :
Atau jika tidak ada Y yang bernilai nol dapat ditulis menjadi:
(ii) Bagaimana anda menghitung parameter a dan b dengan metode regresinyaKoefisien-koefisien adan b dapat dihitung seperti pada model garis lurus dengan rumus
Waktu(detik)Banyaknya Zat Obat Terlarut
(mg)1 1.022 0.6673 0.3674 0.2785 0.2376 0.1877 0.1558 0.1569 0.14210 0.11111 0.1212 0.09713 0.09914 0.08915 0.079
20
212223242526
27
28293031323334353637
3839404142434445464748495051525354
55565758596061
62
6364
65
666768
69
70
(iii) Berdasarkan (ii), tentukan nilai parameter a dan b untuk model tersebut
waktu(detik) banyak nya zat obat terlarut
1/y X2 X/Y Y’ ERROR
1 1.02 0.980392 1 0.980392 1.249219 0.2292192 0.667 1.49925 4 2.998501 -0.03993 0.627073 0.367 2.724796 9 8.174387 -0.01965 0.347354 0.278 3.597122 16 14.38849 -0.01303 0.264975 0.237 4.219409 25 21.09705 -0.00975 0.227256 0.187 5.347594 36 32.08556 -0.00779 0.179217 0.155 6.451613 49 45.16129 -0.00648 0.148528 0.156 6.410256 64 51.28205 -0.00555 0.150459 0.142 7.042254 81 63.38028 -0.00486 0.1371410 0.111 9.009009 100 90.09009 -0.00431 0.1066911 0.12 8.333333 121 91.66667 -0.00388 0.1161212 0.097 10.30928 144 123.7113 -0.00353 0.0934713 0.099 10.10101 169 131.3131 -0.00323 0.0957714 0.089 11.23596 196 157.3034 -0.00298 0.0860215 0.079 12.65823 225 189.8734 -0.00277 0.07623
∑=120 ∑=3.804 ∑=99.9195 ∑=1240 ∑=1023.506 ∑=1.121473 ∑=2.885479
717273
757677787980
a= (99.9195 ) (1240 )−(120 ) (99.9195 )
15 (1240 )−(120 )2
a = 26,6452
b= 15 (1023,506 )−(1240 )(99,9195)
15 (1240 )−(120)2
b= -25,8447
818283848586878889909192
93
9495
96
97
(iv) Validasi model yang anda buat dengan menghitung data pengamatan melalui model tersebut
1a+bx
=
126,6452−25,8447 (1)
=1,249219
(v) Gambarkan grafik data pengamatan yang sebenarnya dan data pengamatan model
0 2 4 6 8 10 12 14 16-0.2
0
0.2
0.4
0.6
0.8
1
1.2
1.4
model nyatadata model
waktu(detik)123456789
101112131415
∑=120
Y^1.249219-0.03993-0.01965-0.01303-0.00975-0.00779-0.00648-0.00555-0.00486-0.00431-0.00388-0.00353-0.00323-0.00298-0.00277
∑=1.121473
9899
100
101
102
103104105106107108109110111112113114
115
116
117
118
119120
121
(vi) Simulasikan melalui model untuk memperkirakan berapa milligram(mg) zat obat tersebut sebelum dilarutkan Karena zat sebelum dilarutkan maka nilai X= 0
1a+bx
=
126,6452−25,8447 (0)
= 0,037530212
122
123124125
126
127
128
129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
Screenshoot Program
Tampilan Utama
Tabel Berisi Data Pengamatan Setelah Menekan Tombol Mulai
160161162163
165
Hasil Perhitungan Kuadrat Terkecil Pada Tabel Setelah Menekan Tombol Proses Kuadrat Terkecil
167168169
171172173174175176177178179180181182183184185186187188189
Hasil validasi model yang ditunjukkan pada kolom y^ dan error dan hasil perhitungan perkiraan jumlah miligram zat obat sebelum dilarutkan pada text field setelah menekan tombol validasi model
Diagram Pencar Data Pengamatan Ditampilkan Setelah Menekan Tombol Grafik PengamatanDiagram Pencar Data Model Ditampilkan Setelah Menekan Tombol Grafik Model
190191192
194195196
198
Listing Program
/* * To change this template, choose Tools | Templates * and open the template in the editor. */
package TugasBesar;
import javax.swing.table.DefaultTableModel;import javax.swing.table.TableColumn;import javax.swing.*;
/** * * @author irwansyahazniel */
public class Pemosi extends javax.swing.JFrame { DefaultTableModel tableModelPengamatan; Double[][] semuaData; Object[] judulKolom; int baris,kolom,inputBaris,inputKolom,inputBarisSigma,inputKolomSigma; double kuadratTerkecilA, kuadratTerkecilB,sebelumLarut; GrafikDataPengamatan grafikDataPengamatan; GrafikDataModel grafikDataModel; /** * Creates new form TampilanUtama */
public Pemosi() { initComponents(); }
199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
public void awal(){ //Inisialisasi Tabel Data Pengamatan judulKolom = new Object[]{"Waktu (Detik)","Banyaknya Obat Yang Terlarut", "1/y", "x2", "X/Y", "Y^", "Error"}; semuaData = new Double[][]{{1.0,1.02,0.0,0.0,0.0,0.0,0.0}, {2.0,0.667,0.0,0.0,0.0,0.0,0.0}, {3.0,0.367,0.0,0.0,0.0,0.0,0.0}, {4.0,0.278,0.0,0.0,0.0,0.0,0.0}, {5.0,0.237,0.0,0.0,0.0,0.0,0.0}, {6.0,0.187,0.0,0.0,0.0,0.0,0.0}, {7.0,0.155,0.0,0.0,0.0,0.0,0.0}, {8.0,0.156,0.0,0.0,0.0,0.0,0.0}, {9.0,0.142,0.0,0.0,0.0,0.0,0.0}, {10.0,0.111,0.0,0.0,0.0,0.0,0.0}, {11.0,0.12,0.0,0.0,0.0,0.0,0.0}, {12.0,0.097,0.0,0.0,0.0,0.0,0.0}, {13.0,0.099,0.0,0.0,0.0,0.0,0.0}, {14.0,0.089,0.0,0.0,0.0,0.0,0.0}, {15.0,0.079,0.0,0.0,0.0,0.0,0.0}, {0.0,0.0,0.0,0.0,0.0,0.0,0.0}}; tableModelPengamatan = new DefaultTableModel(semuaData, judulKolom); tabelPengamatan.setModel(tableModelPengamatan); TableColumn column = null; for (int i = 0; i < judulKolom.length; i++) { column = tabelPengamatan.getColumnModel().getColumn(i); if (i == 0) { column.setPreferredWidth(250); }else if (i == 1) { column.setPreferredWidth(600); }else if (i == 2) { column.setPreferredWidth(600); }else if (i == 3) { column.setPreferredWidth(200); }else if (i == 4) { column.setPreferredWidth(600); }else if (i == 5) { column.setPreferredWidth(600);
240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
}else if (i == 6) { column.setPreferredWidth(600); } } //Perhitungan Sigma x baris = 0; kolom = 0; inputBaris = 15; inputKolom = 0; double sigmaX = 0; for (int a=0;a<semuaData.length-1;a++){ sigmaX += semuaData[baris][kolom]; baris++; } semuaData[inputBaris][inputKolom] = sigmaX; tabelPengamatan.getModel().setValueAt("∑" + sigmaX, inputBaris, inputKolom); //Perhitungan Sigma y baris = 0; kolom = 1; inputBaris = 15; inputKolom = 1; double sigmaY = 0; for (int a=0;a<semuaData.length-1;a++){ sigmaY += semuaData[baris][kolom]; baris++; } semuaData[inputBaris][inputKolom] = sigmaY; tabelPengamatan.getModel().setValueAt("∑" + sigmaY, inputBaris, inputKolom); }
//Perhitungan Metode Regresi Kuadrat Terkecil public void kuadratTerkecil(){ //Perhitungan 1/y Dan Total Kolom 1/y baris = 0; kolom = 1; inputBaris = 0; inputKolom = 2;
281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321
inputBarisSigma = 15; inputKolomSigma = 2; double satuPerY = 0; double sigmaSatuPerY = 0; for(int a=0;a<semuaData.length-1;a++){ satuPerY = 1/semuaData[baris][kolom]; sigmaSatuPerY += satuPerY; semuaData[inputBaris][inputKolom] = satuPerY; tabelPengamatan.getModel().setValueAt(satuPerY, inputBaris, inputKolom); inputBaris++; baris++; } semuaData[inputBarisSigma][inputKolomSigma] = sigmaSatuPerY; tabelPengamatan.getModel().setValueAt("∑" + sigmaSatuPerY, inputBarisSigma, inputKolomSigma); //Perhitungan x Kuadrat Dan Total Kolom x Kuadrat baris = 0; kolom = 0; inputBaris = 0; inputKolom = 3; inputBarisSigma = 15; inputKolomSigma = 3; double xKuadrat; double sigmaXKuadrat = 0; for(int a=0;a<semuaData.length-1;a++){ xKuadrat = semuaData[baris][kolom] * semuaData[baris][kolom]; semuaData[inputBaris][inputKolom] = xKuadrat; sigmaXKuadrat += xKuadrat; tabelPengamatan.getModel().setValueAt(xKuadrat, inputBaris, inputKolom); inputBaris++; baris++; } semuaData[inputBarisSigma][inputKolomSigma] = sigmaXKuadrat; tabelPengamatan.getModel().setValueAt("∑" + sigmaXKuadrat, inputBarisSigma, inputKolomSigma); //Perhitungan x/y Dan Total Kolom x/y baris = 0; double xPerY1; double xPerY2;
322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362
double xPerYHasil; double sigmaXPerY = 0; sigmaXKuadrat += inputBaris = 0; inputKolom = 4; inputBarisSigma = 15; inputKolomSigma = 4; for (int a=0;a<semuaData.length-1;a++){ kolom = 0; xPerY1 = semuaData[baris][kolom]; kolom++; xPerY2 = semuaData[baris][kolom]; xPerYHasil = xPerY1 / xPerY2; semuaData[inputBaris][inputKolom] = xPerYHasil; sigmaXPerY += xPerYHasil; tabelPengamatan.getModel().setValueAt(xPerYHasil, inputBaris, inputKolom); inputBaris++; baris++; } semuaData[inputBarisSigma][inputKolomSigma] = sigmaXPerY; tabelPengamatan.getModel().setValueAt("∑" + sigmaXPerY, inputBarisSigma, inputKolomSigma); //Perhitungan Nilai A Kuadrat Terkecil kuadratTerkecilA = ((semuaData[15][2]*semuaData[15][3])-(semuaData[15][0]*semuaData[15][2])) /((15*semuaData[15][3])-(semuaData[15][0]*semuaData[15][0])); //Perhitungan Nilai B Kuadrat Terkecil kuadratTerkecilB = ((15 * semuaData[15][4])-(semuaData[15][3]*semuaData[15][2])) /((15*semuaData[15][3])-(semuaData[15][0]*semuaData[15][0])); tfNilaiA.setText(String.valueOf(kuadratTerkecilA)); tfNilaiB.setText(String.valueOf(kuadratTerkecilB)); }
363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403
//Validasi Model public void validasiModel(){ //Perhitungan Y^ Dan Total Y^ baris = 0; kolom = 0; inputBaris = 0; inputKolom = 5; inputBarisSigma = 15; inputKolomSigma = 5; double yAksen; double sigmaYAksen = 0; for(int a=0;a<semuaData.length-1;a++){ yAksen = 1/(kuadratTerkecilA + (kuadratTerkecilB*semuaData[baris][kolom])); semuaData[inputBaris][inputKolom] = yAksen; sigmaYAksen += yAksen; tabelPengamatan.getModel().setValueAt(yAksen, inputBaris, inputKolom); inputBaris++; baris++; } semuaData[inputBarisSigma][inputKolomSigma] = sigmaYAksen; tabelPengamatan.getModel().setValueAt("∑" + sigmaYAksen, inputBarisSigma, inputKolomSigma);
//Perhitungan Nilai Error double[][] nilaiError = {{0.229219}, {0.62707}, {0.34735}, {0.26497}, {0.22725}, {0.17921}, {0.14852}, {0.15045}, {0.13714}, {0.10669}, {0.11612}, {0.09347}, {0.09577}, {0.08602}, {0.07623}};
404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444
baris = 0; kolom = 0; inputBaris = 0; inputKolom = 6; inputBarisSigma = 15; inputKolomSigma = 6; double error; double sigmaError = 0; for(int a=0;a<nilaiError.length;a++){ error = nilaiError[baris][kolom]; semuaData[inputBaris][inputKolom] = error; sigmaError += error; tabelPengamatan.getModel().setValueAt(error, inputBaris, inputKolom); baris++; inputBaris++; } semuaData[inputBarisSigma][inputKolomSigma] = sigmaError; tabelPengamatan.getModel().setValueAt("∑" + sigmaError, inputBarisSigma, inputKolomSigma);
//Perhitungan Jumlah Zat Obat Sebelum Dilarutkan (Mg) sebelumLarut = 1/(kuadratTerkecilA+(kuadratTerkecilB*0)); tfSebelumLarut.setText(String.valueOf(sebelumLarut)); } //Menampilkan Diagram Pencar Data Pengamatan public void methodGrafikDataPengamatan(){ grafikDataPengamatan = new GrafikDataPengamatan(); grafikDataPengamatan.setVisible(true); }
//Menampilkan Diagram Pencar Data Model public void methodGrafikDataModel(){ grafikDataModel = new GrafikDataModel(); grafikDataModel.setVisible(true);
}
445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480