• Tidak ada hasil yang ditemukan

Pengamatan Data Curah Hujan: Pemodelan Dan Simulasi

N/A
N/A
Protected

Academic year: 2021

Membagikan "Pengamatan Data Curah Hujan: Pemodelan Dan Simulasi"

Copied!
57
0
0

Teks penuh

(1)

LAPORAN TUGAS BESAR MATA KULIAH

LAPORAN TUGAS BESAR MATA KULIAH

PEMODELAN DAN SIMULASI

PEMODELAN DAN SIMULASI

PENGAMATAN DATA CURAH HUJAN

PENGAMATAN DATA CURAH HUJAN

Dosen : Gani Gunawan, S.T, M.T.

Dosen : Gani Gunawan, S.T, M.T.

Oleh:

Oleh:

10112645 - Mohamad Saeful Ihsan

10112645 - Mohamad Saeful Ihsan

10112378

10112378

 –  – 

 Julio Febryanto

 Julio Febryanto

10112448

10112448

 –  – 

 Iqbal Aditya Pangestu

 Iqbal Aditya Pangestu

10112396

10112396

 –  – 

 Bayu Setiaji

 Bayu Setiaji

10111097

10111097

 –  – 

 Put

 Put

ri Nurul Sa’adahri Nurul Sa’adah

10112794

10112794

 –  – 

 Brivio Costovic

 Brivio Costovic

10112777

10112777

 –  – 

 Ragil Ardhiansyah

 Ragil Ardhiansyah

Kelompok: 3

Kelompok: 3

Kelas: MOSI-11

Kelas: MOSI-11

PROGRAM STUDI TEKNIK INFORMATIKA

PROGRAM STUDI TEKNIK INFORMATIKA

FAKULTAS TEKNIK DAN ILMU KOMPUTER

FAKULTAS TEKNIK DAN ILMU KOMPUTER

UNIVERSITAS KOMPUTER INDONESIA

UNIVERSITAS KOMPUTER INDONESIA

2015

2015

(2)
(3)

DAFTAR ISI

DAFTAR ISI

DAFTAR

DAFTAR ISI ...

ISI ...

...

...

... 1

... 1

1.

1.

Uraian

Uraian Jawaban

Jawaban ...

...

...

...

...

... 2

.... 2

1.1.

1.1.

Verifikasi

Verifikasi Matematis

Matematis dengan

dengan Linearisasi ...

Linearisasi ...

...

...

... 2

2

1.2.

1.2.

Parameter

Parameter

aa

dan

dan

bb

dengan

dengan Metoda

Metoda Regresi ...

Regresi ...

...

... 2

... 2

1.3.

1.3.  Nilai Parameter

 Nilai Parameter

aa

dan

dan

bb

...

...

...

...

...

... 4

4

1.4.

1.4.

Validasi

Validasi Model

Model ...

...

...

...

... 5

... 5

1.5.

1.5.

Grafik

Grafik data

data pengamatan

pengamatan ...

...

...

...

...

... 6

6

1.6.

1.6.

Hasil

Hasil Model

Model ...

...

...

...

...

... 7

.... 7

2.

2.

Listing

Listing Program

Program ...

...

...

...

...

... 8

.... 8

3.

(4)

1.

1. Uraian Jawaban

Uraian Jawaban

1.1. Verifikasi Matematis dengan

1.1. Verifikasi Matematis dengan Linearisasi

Linearisasi

Berdasarkan data yang telah diperoleh dan dapat tentukan bahwa data tersebut

Berdasarkan data yang telah diperoleh dan dapat tentukan bahwa data tersebut

merupakan model exponensial.

merupakan model exponensial.

   

   



Untuk memudahkan perhitungan a dan b maka ditulis

Untuk memudahkan perhitungan a dan b maka ditulis ::







   +

+ 

 

 

Dimisalkan:

Dimisalkan:





 lloogg 





 lloogg 





 lloog

g

Sehingga diperoleh :

Sehingga diperoleh :





 



+

+ 





1.2. Menghitung parameter

1.2. Menghitung parameter

aa

dan

dan

bb

dengan Metoda Regresi

dengan Metoda Regresi

Untuk mendapatkan nilai

Untuk mendapatkan nilai





 dan

 dan





 dapat dilakukan dengan metode regresi sebagai

 dapat dilakukan dengan metode regresi sebagai

 berikut.

 berikut.

 

 ∑

∑   

=

=

  

− ∑

∑   .

=

=

  . ∑

=

=





 ∑

∑  

 



=

=

− ((∑

∑  

=

=

 

))







 ∑

∑  

  .. log

log 



=

=

− ∑

∑   .

=

=

  . ∑

=

=

 

 

 ∑

∑  

 



=

=

− ((∑

∑  

=

=

 

))



Dengan

Dengan





  −

 − 





(5)





∑ log

log







∑ 



Kembalikan nilai dengan

Kembalikan nilai dengan

  1 0

  1 0

(

(



))

Akan diperoleh

Akan diperoleh





 lloogg 

Kembalikan dengan nilai

Kembalikan dengan nilai

  1 0

  1 0





Berikut ini merupakan hasil perhitungan dalam bentuk tabel menggunakan metoda regresi

Berikut ini merupakan hasil perhitungan dalam bentuk tabel menggunakan metoda regresi

x

xii yyii   log(ylog(yii) ) xxii * log(y * log(yii) ) xxii22

1

1

2.175

2.175

0.33745926129066

0.33745926129066

0.33745926129066

0.33745926129066

1

1

2

2

3.787

3.787

0.578295305120

0.57829530512083

83

1.1565906102417

1.1565906102417

4

4

3

3

6.7

6.7

0.82607480270083

0.82607480270083

2.4782244081025

2.4782244081025

9

9

4

11.711

1.0685939809767

4.2743759239066

16

4

11.711

1.0685939809767

4.2743759239066

16

5

20.495

1.3116479226525

6.5582396132626

25

5

20.495

1.3116479226525

6.5582396132626

25

6

6

35.904

35.904

1.55514283524

1.55514283524

9.3308570114403

9.3308570114403

36

36

7

62.789

1.7978835663847

12.585184964693

49

7

62.789

1.7978835663847

12.585184964693

49

8

109.96

2.0412347311714

16.329877849371

64

8

109.96

2.0412347311714

16.329877849371

64

9

9

192.419

192.419

2.284247953293

2.284247953293

20.558231579637

20.558231579637

81

81

10

10

336.75

336.75

2.527307604395

2.527307604395

25.27307604395

25.27307604395

100

100

11

589.3

11

589.3

2.7703364410951

2.7703364410951

30.473700852

30.473700852047

047

121

121

12

1031

12

1031

3.0132586652835

3.0132586652835

36.159103983402

36.159103983402

144

144

13

13

1800.95

1800.95

3.2555016556149

3.2555016556149

42.321521522994

42.321521522994

169

169

14

14

3157.987

3157.987

3.4994103378826

3.4994103378826

48.991744730356

48.991744730356

196

196

15

15

5525.766

5525.766

3.742392489871

3.742392489871

56.135887348065

56.135887348065

225

225

Σx Σxii = = 120 120 Σy Σyii = = 12887.693 12887.693 Σlog(y Σlog(yii) =) = 30.608787552973 30.608787552973 Σx Σxii * log(y * log(yii) =) = 312.96407570276 312.96407570276 Σx Σxii22 = = 1240 1240

(6)

1.3. Menentukan nilai

1.3. Menentukan nilai Paramet

Parameter

er

aa

dan

dan

bb

Dari tabel regresi diatas dapat dicari b

Dari tabel regresi diatas dapat dicari b

ii

 dengan rumus berikut

 dengan rumus berikut





 ∑

∑  

  .. log

log 



=

=

− ∑

∑   .

=

=

  . ∑

=

=

 

 

 ∑

∑  

 



=

=

− ((∑

∑  

=

=

 

))







15

15 ∗ 312

∗ 312.9

.964

6407

0757

5702

0276

76 −

− 12

1200 ∗∗ 30

30.6

.608

0878

7875

7552

5293

93

1155 ∗∗ 11224400 −

− 1144440000





 0.2

0.24319

43192054

2054567

56778

78





 lloogg 

maka untuk mendapatkan nilai b dapat dilakukan dengan cara berikut

maka untuk mendapatkan nilai b dapat dilakukan dengan cara berikut

  1 0

  1 0





  1 0

  1 0

.

. 

 

 .

. 











setelah mendapatkan nilai b, kita dapat mencari nilai a, dengan rumus berikut

setelah mendapatkan nilai b, kita dapat mencari nilai a, dengan rumus berikut





∑ log

log







∑ 







30.60878755293

30.60878755293

15

15

0.

0.24

24319

319205

20545

45677

67788 ∗∗ 12

1200

15

15





 0.0

0.09504

9504940

9400322

0322654

654

untuk mendapatkan nilai a, maka kembalikan nilai a

untuk mendapatkan nilai a, maka kembalikan nilai a

ii

dengan cara

dengan cara

  1 0

  1 0

(

(



))

  1 0

  1 0

.

.

 

 .. 









(7)

Sehingga didapat model sebagai berikut :

  1.24456 ∗ 1.75062

1.4. Validasi Model

Tabel dibawah ini merupakan hasil perhitungan data dari model yang dibuat.

Dengan melihat selisih antara nilai data simulasi dan sebenarnya kita dapat

menghitung persentase kesalahan dari model. Menghitung presentasi kesalahan dapat

dilakukan dengan

 

  

   

∗ 100%

 

0.994503

859.1795

∗ 100%

Hasil Nilai Error = 0.001158 %

Waktu Pengamatan

Minggu ke

-Curah Hujan

Error

Data Sebenarnya Data Simulasi

1

2.175

2.1789208512254

0.003921

2

3.787

3.8144639031664

0.027464

3

6.7

6.6776793936211

0.022321

4

11.711

11.690083643727

0.020916

5

20.495

20.464902182617

0.030098

6

35.904

35.826280983781

0.077719

7

62.789

62.718228392956

0.070772

8

109.96

109.79582766438

0.164172

9

192.419

192.21084653374

0.208153

10

336.75

336.48828294414

0.261717

11

589.3

589.063346843

0.236653

12

1031

1031.2264770642

0.226477

13

1800.95

1805.2863969514

4.336397

14

3157.987

3160.3717005946

2.384701

15

5525.766

5532.6120568936

6.846057

RataRata X

i

 =

859.1795

RataRata e =

0.994503

(8)

1.5.Grafik data pengamatan

Berikut adalah grafik berdasarkan data sebenarnya

(9)

Dan dibawah ini merupakan grafik perbandingan dari keduanya

1.6. Hasil Model

Untuk menghitung data ke-16 kita menggunakan model dibawah ini.

  1.24456 ∗ 1.75062

Maka nilai x diganti dengan angka 16 sehingga menghasilkan Y = 9685,505084.

Berdasarkan hasil simulasi dapat kita perkirakan bahwa curah hujan akan semakin ekstrim

dilihat dari hasil perhitungan simulasi yang semakin mengingkat.

(10)

2. Listing Program

index.php

<?php session_start();?> <?php error_reporting(0); include "excel_reader.php"; $x = array('1', '2' ,'3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15'); $y = array('2.175', '3.787', '6.7', '11.711', '20.495', '35.904', '62.789', '109.96', '192.419', '336.75', '589.3', '1031', '1800.95', '3157.987', '5525.766'); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8">

<title>Tugas Besar MOSI</title>

<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="description" content="">

<meta name="author" content=""> <!-- Le styles -->

<link href="assets/css/bootstrap.css" rel="stylesheet"> <style type="text/css"> body { padding-top: 60px; padding-bottom: 40px; } .overline{ text-decoration: overline; } .total{

border-top: 1px solid black; }

</style>

<link href="assets/css/bootstrap-responsive.css" rel="stylesheet"> </head>

<body>

<?php include('menu.php');?> <div class="container">

<h3>Tabel Hasil Pengamatan Data Curah Hujan </h3> <table class="table table-bordered">

<thead>

<tr align="center">

<th>Waktu Pengamatan<br>(Minggu ke-)</th> <th>Curah Hujan<br>(mm<sup>3</sup>)</th> </tr>

<thead> <?php

for($i=0; $i<15; $i++) {

(11)

?> <tr> <td align="center"><?=$x[$i]?></td> <td><?=$y[$i]?></td> </tr> <?php } ?> </table> <h3>Tabel Regresi</h3> <table class="table table-bordered"> <thead> <tr> <th>x<sub>i</sub></th> <th>y<sub>i</sub></th> <th>log(y<sub>i</sub>)</th> <th>x<sub>i</sub> * log(y<sub>i</sub>)</th> <th>x<sub>i</sub><sup>2</sup></th> </tr> <thead> <?php $sigma_waktu = 0; $sigma_curahhujan = 0; $sigma_logy = 0; $sigma_xlogy = 0; $sigma_xkuadrat = 0; $_SESSION['array_waktu'] = array(); $_SESSION['array_curahhujan'] = array(); $_SESSION['data_real'] = array(); $_SESSION['simulasi'] = array(); for ($i=0; $i<=14; $i++)

{ $waktu = $x[$i]; array_push($_SESSION['array_waktu'], $x[$i]); $curah_hujan = $y[$i]; array_push($_SESSION['array_curahhujan'], $y[$i]); ?> <tr> <td><?php echo $waktu; ?></td> <td><?php echo $curah_hujan; ?></td>

<td><?php echo $log_curah = log($curah_hujan,10); ?></td>

<td><?php echo $perkalian_log = $waktu*log($curah_hujan,10); ?></td> <td><?php echo $waktu_kuadrat = pow($waktu, 2); ?></td>

</tr> <?php

$sigma_waktu += $waktu;

$sigma_curahhujan += $curah_hujan; $sigma_logy = $sigma_logy + $log_curah; $sigma_xlogy = $sigma_xlogy + $perkalian_log;

$sigma_xkuadrat = $sigma_xkuadrat + $waktu_kuadrat; }

?> <tr>

<th class="total">&Sigma;x<sub>i</sub> = <?php echo $sigma_waktu; ?></th> <th class="total">&Sigma;y<sub>i</sub> = <?php echo $sigma_curahhujan; ?></th>

(12)

<th class="total">&Sigma;log(y<sub>i</sub>) = <?php echo $sigma_logy; ?></th>

<th class="total">&Sigma;x<sub>i</sub> * log(y<sub>i</sub>) = <?php echo $sigma_xlogy; ?></th> <th class="total">&Sigma;x<sub>i</sub><sup>2</sup> = <?php echo $sigma_xkuadrat; ?></th> </tr> </table> <br> <?php $jumlahdata = 15;

$b_aksen = ((15 * $sigma_xlogy) - ($sigma_waktu * $sigma_logy)) / ((15 * $sigma_xkuadrat) - pow($sigma_waktu,2));

$b = pow(10, $b_aksen);

$a_aksen = ($sigma_logy / 15) - (($b_aksen * $sigma_waktu) / 15); $a = pow(10, $a_aksen);

?> <br> <table class="table"> <tr>

<th>Hasil Perhitungan parameter a dan b</th> </tr>

<tr>

<td valign="top" > <?php

$button_b1 = '<a class="btn " data-content="" rel="popover_b1" href="#" data-original-title="RUMUS">b &nbsp;</a>';

$button_b2 = '<a class="btn " data-content="" rel="popover_b2" href="#" data-original-title="RUMUS">b &nbsp;</a>';

$button_a1 = '<a class="btn " data-content="" rel="popover_a1" href="#" data-original-title="RUMUS">a &prime;</a>';

$button_a2 = '<a class="btn " data-content="" rel="popover_a2" href="#" data-original-title="RUMUS">a &nbsp;</a>';

echo $button_b1." = ".$b_aksen."<br>"; echo $button_b2." = ".$b."<br>";

echo $button_a1." = ".$a_aksen."<br>"; echo $button_a2." = ".$a."<br>";

$eksponen1 = exp($b1);

//echo $string_persamaan1 = "f(x) = ".number_format($b1,3)." . n <sup>".number_format(abs($a1),3)."</sup>"; ?> </td> </tr> </table> <br><br>

<h3>Tabel Data Curah Hujan Hasil Simulasi</h3> <table class="table table-bordered">

<tr>

<th>Waktu Pengamatan<br>(Minggu ke-)</th> <th>Curah Hujan<br>(mm<sup>3</sup>)</th>

</tr> <?php

(13)

$data_real = $_SESSION['array_curahhujan'][$i]; $_SESSION['data_real'][$i] = (float)$data_real; $persamaan = $a*pow($b, $_SESSION['array_waktu'][$i]); $_SESSION['simulasi'][$i] = $persamaan; ?> <tr> <td><?php echo $_SESSION['array_waktu'][$i]; ?></td> <td><?php echo $_SESSION['simulasi'][$i]; ?></td> </tr> <?php } ?> </table> <footer>

<p>&copy; Tugas Besar MOSI 12 - Kelompok 3</p> </footer> </div> <!-- /container --> <script src="assets/js/jquery.js"></script> <script src="assets/js/bootstrap-alert.js"></script> <script src="assets/js/bootstrap-tab.js"></script> <script src="assets/js/bootstrap-tooltip.js"></script> <script src="assets/js/bootstrap-popover.js"></script> <script src="assets/js/bootstrap-button.js"></script> <script src="assets/js/bootstrap-collapse.js"></script> <script> $("a[rel=popover_b1]").popover({ html: true, trigger: 'hover', }); $("a[rel=popover_b2]").popover({ html: true, trigger: 'hover', }); $("a[rel=popover_a1]").popover({ html: true, trigger: 'hover' }); $("a[rel=popover_a2]").popover({ html: true, trigger: 'hover' }); </script> </body> < html>

(14)

menu.php

 proses.php

<div class="navbar navbar-fixed-top"> <div class="navbar-inner">

<div class="container">

<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <span class="icon-bar"></span>

<span class="icon-bar"></span> <span class="icon-bar"></span> </a>

<a class="brand" href="#">Model Curah Hujan</a> <div class="nav-collapse">

<ul class="nav">

<li class="active"><a href="index.php">Home</a></li> <li><a href="custom.php">Data Custom</a></li> <li><a href="grafik.php">Grafik</a></li>

<li><a href="animasi.php">Animasi</a></li> <li><a href="clear.php">Clear All</a></li> </ul> </div><!--/.nav-collapse --> </div> </div> </div> <style> .total{

border-top: 1px solid black; } </style> <?php include "excel_reader2.php"; ?> <table> <tr> <td>WAKTU (Minggu)</td> <td>Curah Hujan</td> <td>Waktu (2)</td> <!-- <td>Curah (2)</td> --> <td>waktu x curah<td> </tr> <?php

$data = new Spreadsheet_Excel_Reader($_FILES['userfile']['tmp_name']); $baris = $data->rowcount($sheet_index=0); $sigma_waktu = 0; $sigma_curahhujan = 0; $sigma_kuadratwaktu = 0; $sigma_kuadratcurah = 0; $sigma_perkalian = 0; $parameter = 4; $array_waktu = array(); $array_curahhujan = array(); for $i=2; $i<=$baris; $i++

(15)

$waktu = $data->val($i, 1); array_push($array_waktu, $data->val($i, 1)); $curah_hujan = $data->val($i, 2); array_push($array_curahhujan, $data->val($i, 2)); ?> <tr> <td><?php echo $waktu; ?></td> <td><?php echo $curah_hujan; ?></td>

<td><?php echo $kuadrat_waktu = $waktu*$waktu; ?></td>

<!-- <td><?php echo $kuadrat_curahhujan = $curah_hujan*$curah_hujan; ?></td> --> <td><?php echo $perkalian = $waktu*$curah_hujan; ?></td>

</tr> <?php $sigma_waktu += $waktu; $sigma_curahhujan += $curah_hujan; $sigma_kuadratwaktu += $kuadrat_waktu; $sigma_kuadratcurah += $kuadrat_curahhujan; $sigma_perkalian += $perkalian; } ?> <tr>

<td class="total"><?php echo $sigma_waktu; ?></td> <td class="total"><?php echo $sigma_curahhujan; ?></td> <td class="total"><?php echo $sigma_kuadratwaktu; ?></td>

<!-- <td class="total"><?php echo $sigma_kuadratcurah; ?></td> -->

<td class="total"><?php echo $sigma_perkalian; ?></td> <td class="total"><?php echo $jumlahdata = $i-2; ?></td> </tr>

</table> <br> <?php

$a = (($sigma_perkalian) ($sigma_waktu*$sigma_curahhujan)) / (($sigma_kuadratwaktu) -($sigma_waktu*$sigma_waktu)); $x = $sigma_waktu / $jumlahdata; $y = $sigma_curahhujan /$jumlahdata; //$b = number_format($y,3) - (number_format($a,3)*$x); $b = sqrt(number_format($y,3)/(number_format($a,3))); $sigma_error = 0 ;

echo "a = ".number_format($a,3)."<br>"; echo "b = ".number_format($b,3)."<br>"; echo "X = ".$x."<br>";

echo "Y = ".number_format($y,3)."<br>";

echo $string_persamaan = "f(x) = ".number_format($a,3)."* (n) +".number_format(abs($b),3).""; ?>

<br><br> <table>

<tr>

<td>Waktu</td>

<td>Curah Hujan Data Penelitian</td> <td>Curah Hujan Data Model</td> </tr>

(16)

tes.php

<?php for($i=0 ;$i<$jumlahdata;$i++){ $persamaan = $a*($array_curahhujan[$i]) + ($b* (-1)); ?> <tr> <td><?php echo $array_waktu[$i]; ?></td> <td><?php echo $array_curahhujan[$i]; ?></td> <td><?php echo number_format($persamaan,3) ?></td> <td><?php $selisih_error= abs($array_curahhujan[$i]-$persamaan); echo number_format($selisih_error,3) ; ?></td> </tr> <?php $sigma_error+= $selisih_error ; } ?> <tr> <td> </td> <td> </td> <td> </td> <td><?php echo number_format($sigma_error,3) ; ?></td> </tr> <table> <html> <head> <?php

//deklarasi variabel x & y

$x = array('1', '2' ,'3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15');

$y = array('2.175', '3.787', '6.7', '11.711', '20.495', '35.904', '62.789', '109.96', '192.419', '336.75', '589.3', '1031', '1800.95', '3157.987', '5525.766');

?>

<script language="javascript" type="text/javascript" src="flot/jquery.js"></script> <script language="javascript" type="text/javascript" src="flot/jquery.flot.js"></script> <style> #plot{ width:300px; height:300px; } </style> <script type="text/javascript"> var data = [[1, 2.175], [2, 3.787], [3, 6.7], [4, 11.711], [5, 20.495]]; var dataset = [{

label : "Curah hujan hasil pengamatan", data : data }]; var options = { series:{ lines:{show:false}, points:{ radius:5, show:true

(17)

} } };

$(document).ready(function(){

$.plot($("#plot"), dataset, options); });

</script> </head> <body>

<!--Buat tabel data real-->

<h3 align="center">Tabel Hasil Pengamatan Curah Hujan</h3> <table border="1" align="center">

<tr align="center">

<th>Waktu Pengamatan<br>(Minggu ke-)</th> <th>Curah Hujan<br>(mm<sup>3</sup>)</th> </tr>

<?php

//menampilkan data real for($i=0; $i<15; $i++) { ?> <tr> <td align="center"><?=$x[$i]?></td> <td><?=$y[$i]?></td> </tr> <?php } ?> </table>

<!--Membuat Tabel Regresi--> <br>

<h3 align="center">Tabel Regresi</h3> <table border="1" align="center">

<tr align="center"> <th>x<sub>i</sub></th> <th>y<sub>i</sub></th> <th>log(y<sub>i</sub>)</th> <th>x<sub>i</sub> * log(y<sub>i</sub>)</th> <th>x<sub>i</sub><sup>2</sup></th> </tr> <?php //deklarasi variabel $sigma_logy = 0; $sigma_xlogy = 0; $sigma_xkuadrat = 0; $sigma_x = array_sum($x); $sigma_y = array_sum($y); //menampilkan nilai tabel regresi

for($i=0; $i<15; $i++) { ?> <tr> <td><?=$x[$i]?></td> <td><?=$y[$i]?></td> <td><?=log($y[$i],10)?></td> <td><?=$x[$i]*log($y[$i],10)?></td>

(18)

<td><?=pow($x[$i], 2)?></td> </tr>

<?php

$sigma_logy = $sigma_logy + log($y[$i],10);

$sigma_xlogy = $sigma_xlogy + ($x[$i] * log($y[$i],10)); $sigma_xkuadrat = $sigma_xkuadrat + pow($x[$i], 2); } ?> <tr> <td>&Sigma;x<sub>i</sub> = <?=$sigma_x?></td> <td>&Sigma;y<sub>i</sub> = <?=$sigma_y?></td> <td>&Sigma;log(y<sub>i</sub>) = <?=$sigma_logy?></td>

<td>&Sigma;x<sub>i</sub> * log(y<sub>i</sub>) = <?=$sigma_xlogy?></td> <td>&Sigma;x<sub>i</sub><sup>2</sup> = <?=$sigma_xkuadrat?></td> </tr> </table> <!--Menghitung a dan b--> <?php $jumlahdata = $i-2;

$b_aksen = (($jumlahdata * $sigma_xlogy) - ($sigma_x * $sigma_logy)) / (($jumlahdata * $sigma_xkuadrat) - pow($sigma_x,2));

$b = pow(10, $b_aksen);

$a_aksen = ($sigma_logy / $jumlahdata) - (($b_aksen * $sigma_x) / $jumlahdata); $a = pow(10, $a_aksen);

?> <br>

<h3 align="center">Perhitungan parameter a dan b</h3> <p align="center"> b' = <?=$b_aksen?><br> b = <?=$b?><br><br> a' = <?=$a_aksen?><br> a = <?=$a?><br> </p>

<!--Menampilkan tabel data curah hujan yang dihitung oleh parameter a dan b--> <h3 align="center">Tabel Data Curah Hujan Hasil Simulasi</h3>

<table border="1" align="center"> <tr align="center">

<th>Waktu Pengamatan<br>(Minggu ke-)</th> <th>Curah Hujan<br>(mm<sup>3</sup>)</th> </tr>

<?php

//menampilkan data real for($i=0; $i<15; $i++) { ?> <tr> <td align="center"><?=$x[$i]?></td> <td><?=$a*pow($b, $x[$i])?></td> </tr> <?php } ?> </table>

(19)

grafik.php

<!--Menampilkan scattering plot--> <div id="plot"></div> </body> </html> <?php session_start();?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8">

<title>Pemodelan Dan Simulasi</title>

<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="description" content="">

<meta name="author" content=""> <!-- Le styles -->

<link href="assets/css/bootstrap.css" rel="stylesheet"> <style type="text/css"> body { padding-top: 60px; padding-bottom: 40px; } .overline{ text-decoration: overline; } </style>

<link href="assets/css/bootstrap-responsive.css" rel="stylesheet"> </head>

<body>

<?php include('menu.php');?> <div class="container">

<div id="grafik" style="width: 800px; height: 400px; margin: 0 auto"></div> <?php /* echo json_encode($_SESSION['persamaan']); echo json_encode($_SESSION['array_curahhujan']);*/ ?> <footer> <p>&copy; Kelompok 3</p> </footer> </div> <!-- /container --> <script src="assets/js/jquery.js"></script>

<script type="text/javascript" src="assets/js/highcharts.js"></script> <script type="text/javascript">

var chart;

$(document).ready(function() { chart = new Highcharts.Chart({

(20)

custom.php

renderTo: 'grafik' }, xAxis: { min: -0.5, max: 20 }, yAxis: { min: -10 }, title: { text: 'Grafik' }, series: [{ type: 'scatter', name: 'Data Real',

data: <?php echo json_encode($_SESSION['data_real']); ?>, marker: { radius: 4 } }, { type: 'scatter', name: 'Simulasi',

data: <?php echo json_encode($_SESSION['simulasi']); ?>, marker: { radius: 4 } }] }); }); </script> <?php ?> </body> </html> <?php session_start();?> <?php error_reporting(0); include "excel_reader.php"; ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8">

<title>Tugas Besar MOSI</title>

<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="description" content="">

<meta name="author" content=""> <!-- Le styles -->

<link href="assets/css/bootstrap.css" rel="stylesheet">

(21)

body { padding-top: 60px; padding-bottom: 40px; } .overline{ text-decoration: overline; } .total{

border-top: 1px solid black; }

</style>

<link href="assets/css/bootstrap-responsive.css" rel="stylesheet"> </head>

<body>

<?php include('menu.php');?> <div class="container">

<form method="post" enctype="multipart/form-data" >

Silakan Pilih Data: <input name="userfile" type="file"> <input name="upload" type="submit" value="Import"> </form>

<?php if(isset($_POST) && $_POST['upload'] === "Import"){ ?> <br />

<h3>Tabel Regresi</h3> <table class="table table-bordered"> <thead> <tr> <th>x<sub>i</sub></th> <th>y<sub>i</sub></th> <th>log(y<sub>i</sub>)</th> <th>x<sub>i</sub> * log(y<sub>i</sub>)</th> <th>x<sub>i</sub><sup>2</sup></th> </tr> <thead> <?php

$data = new Spreadsheet_Excel_Reader($_FILES['userfile']['tmp_name']); $baris = $data->rowcount($sheet_index=0); $sigma_waktu = 0; $sigma_curahhujan = 0; $sigma_logy = 0; $sigma_xlogy = 0; $sigma_xkuadrat = 0; $_SESSION['array_waktu'] = array(); $_SESSION['array_curahhujan'] = array(); $_SESSION['data_real'] = array(); $_SESSION['simulasi'] = array(); for ($i=2; $i<=$baris; $i++)

{ $waktu = $data->val($i, 1); array_push($_SESSION['array_waktu'], $data->val($i, 1)); $curah_hujan = $data->val($i, 2); array_push($_SESSION['array_curahhujan'], $data->val($i, 2)); ?> <tr>

(22)

<td><?php echo $waktu; ?></td>

<td><?php echo $curah_hujan; ?></td>

<td><?php echo $log_curah = log($curah_hujan,10); ?></td>

<td><?php echo $perkalian_log = $waktu*log($curah_hujan,10); ?></td> <td><?php echo $waktu_kuadrat = pow($waktu, 2); ?></td>

</tr> <?php

$sigma_waktu += $waktu;

$sigma_curahhujan += $curah_hujan; $sigma_logy = $sigma_logy + $log_curah; $sigma_xlogy = $sigma_xlogy + $perkalian_log;

$sigma_xkuadrat = $sigma_xkuadrat + $waktu_kuadrat; }

?> <tr>

<th class="total">&Sigma;x<sub>i</sub> = <?php echo $sigma_waktu; ?></th> <th class="total">&Sigma;y<sub>i</sub> = <?php echo $sigma_curahhujan; ?></th> <th class="total">&Sigma;log(y<sub>i</sub>) = <?php echo $sigma_logy; ?></th>

<th class="total">&Sigma;x<sub>i</sub> * log(y<sub>i</sub>) = <?php echo $sigma_xlogy; ?></th> <th class="total">&Sigma;x<sub>i</sub><sup>2</sup> = <?php echo $sigma_xkuadrat; ?></th> </tr> </table> <br> <?php $jumlahdata = $i-2;

$b_aksen = ((15 * $sigma_xlogy) - ($sigma_waktu * $sigma_logy)) / ((15 * $sigma_xkuadrat) - pow($sigma_waktu,2));

$b = pow(10, $b_aksen);

$a_aksen = ($sigma_logy / 15) - (($b_aksen * $sigma_waktu) / 15); $a = pow(10, $a_aksen);

?> <br> <table class="table"> <tr>

<th>Hasil Perhitungan parameter a dan b</th> </tr>

<tr>

<td valign="top" > <?php

$button_b1 = '<a class="btn " data-content="" rel="popover_b1" href="#" data-original-title="RUMUS">b &nbsp;</a>';

$button_b2 = '<a class="btn " data-content="" rel="popover_b2" href="#" data-original-title="RUMUS">b &nbsp;</a>';

$button_a1 = '<a class="btn " data-content="" rel="popover_a1" href="#" data-original-title="RUMUS">a &prime;</a>';

$button_a2 = '<a class="btn " data-content="" rel="popover_a2" href="#" data-original-title="RUMUS">a &nbsp;</a>';

echo $button_b1." = ".$b_aksen."<br>"; echo $button_b2." = ".$b."<br>";

echo $button_a1." = ".$a_aksen."<br>"; echo $button_a2." = ".$a."<br>";

(23)

//echo $string_persamaan1 = "f(x) = ".number_format($b1,3)." . n <sup>".number_format(abs($a1),3)."</sup>"; ?> </td> </tr> </table> <br><br>

<h3>Tabel Data Curah Hujan Hasil Simulasi</h3> <table class="table table-bordered">

<tr>

<th>Waktu Pengamatan<br>(Minggu ke-)</th> <th>Curah Hujan<br>(mm<sup>3</sup>)</th>

</tr> <?php

for($i=0 ;$i<$jumlahdata; $i++){

$data_real = $_SESSION['array_curahhujan'][$i]; $_SESSION['data_real'][$i] = $data_real;

$persamaan = $a*pow($b, $_SESSION['array_waktu'][$i]); $_SESSION['simulasi'][$i] = $persamaan; ?> <tr> <td><?php echo $_SESSION['array_waktu'][$i]; ?></td> <td><?php echo $_SESSION['simulasi'][$i]; ?></td> </tr> <?php } ?> </table> <?php }?> <footer>

<p>&copy; Tugas Besar MOSI 12 - Kelompok 3</p> </footer> </div> <!-- /container --> <script src="assets/js/jquery.js"></script> <script src="assets/js/bootstrap-alert.js"></script> <script src="assets/js/bootstrap-tab.js"></script> <script src="assets/js/bootstrap-tooltip.js"></script> <script src="assets/js/bootstrap-popover.js"></script> <script src="assets/js/bootstrap-button.js"></script> <script src="assets/js/bootstrap-collapse.js"></script> <script> $("a[rel=popover_b1]").popover({ html: true, trigger: 'hover', }); $("a[rel=popover_b2]").popover({ html: true, trigger: 'hover', });

(24)

clear.php

excel_reader.php

html: true, trigger: 'hover' }); $("a[rel=popover_a2]").popover({ html: true, trigger: 'hover' }); </script> </body> </html> <?php session_start(); session_destroy(); header("location:index.php"); ?> <?php define('NUM_BIG_BLOCK_DEPOT_BLOCKS_POS', 0x2c); define('SMALL_BLOCK_DEPOT_BLOCK_POS', 0x3c); define('ROOT_START_BLOCK_POS', 0x30); define('BIG_BLOCK_SIZE', 0x200); define('SMALL_BLOCK_SIZE', 0x40); define('EXTENSION_BLOCK_POS', 0x44); define('NUM_EXTENSION_BLOCK_POS', 0x48); define('PROPERTY_STORAGE_BLOCK_SIZE', 0x80);

(25)

define('BIG_BLOCK_DEPOT_BLOCKS_POS', 0x4c); define('SMALL_BLOCK_THRESHOLD', 0x1000); // property storage offsets

define('SIZE_OF_NAME_POS', 0x40); define('TYPE_POS', 0x42);

define('START_BLOCK_POS', 0x74); define('SIZE_POS', 0x78);

define('IDENTIFIER_OLE', pack("CCCCCCCC",0xd0,0xcf,0x11,0xe0,0xa1,0xb1,0x1a,0xe1));

function GetInt4d($data, $pos) {

$value = ord($data[$pos]) | (ord($data[$pos+1]) << 8) | (ord($data[$pos+2]) << 16) |

(ord($data[$pos+3]) << 24); if ($value>=4294967294) { $value=-2; } return $value; } // http://uk.php.net/manual/en/function.getdate.php function gmgetdate($ts = null){

$k = array('seconds','minutes','hours','mday','wday','mon','year','yday','weekday','month',0); return(array_comb($k,split(":",gmdate('s:i:G:j:w:n:Y:z:l:F:U',is_null($ts)?time():$ts))));

}

// Added for PHP4 compatibility

function array_comb($array1, $array2) { $out = array();

foreach ($array1 as $key => $value) { $out[$value] = $array2[$key]; }

return $out; }

function v($data,$pos) {

return ord($data[$pos]) | ord($data[$pos+1])<<8; }

class OLERead {

var $data = '';

function OLERead(){ }

function read($sFileName){

// check if file exist and is readable (Darko Miljanovic) if(!is_readable($sFileName)) { $this->error = 1; return false; } $this->data = @file_get_contents($sFileName); if (!$this->data) { $this->error = 1; return false; } if (substr($this->data, 0, 8) != IDENTIFIER_OLE) { $this->error = 1; return false;

(26)

}

$this->numBigBlockDepotBlocks = GetInt4d($this->data, NUM_BIG_BLOCK_DEPOT_BLOCKS_POS);

$this->sbdStartBlock = GetInt4d($this->data, SMALL_BLOCK_DEPOT_BLOCK_POS); $this->rootStartBlock = GetInt4d($this->data, ROOT_START_BLOCK_POS);

$this->extensionBlock = GetInt4d($this->data, EXTENSION_BLOCK_POS);

$this->numExtensionBlocks = GetInt4d($this->data, NUM_EXTENSION_BLOCK_POS); $bigBlockDepotBlocks = array();

$pos = BIG_BLOCK_DEPOT_BLOCKS_POS; $bbdBlocks = $this->numBigBlockDepotBlocks; if ($this->numExtensionBlocks != 0) {

$bbdBlocks = (BIG_BLOCK_SIZE - BIG_BLOCK_DEPOT_BLOCKS_POS)/4; }

for ($i = 0; $i < $bbdBlocks; $i++) {

$bigBlockDepotBlocks[$i] = GetInt4d($this->data, $pos); $pos += 4;

}

for ($j = 0; $j < $this->numExtensionBlocks; $j++) {

$pos = ($this->extensionBlock + 1) * BIG_BLOCK_SIZE;

$blocksToRead = min($this->numBigBlockDepotBlocks - $bbdBlocks, BIG_BLOCK_SIZE / 4 - 1);

for ($i = $bbdBlocks; $i < $bbdBlocks + $blocksToRead; $i++) { $bigBlockDepotBlocks[$i] = GetInt4d($this->data, $pos); $pos += 4;

}

$bbdBlocks += $blocksToRead;

if ($bbdBlocks < $this->numBigBlockDepotBlocks) {

$this->extensionBlock = GetInt4d($this->data, $pos); } } // readBigBlockDepot $pos = 0; $index = 0; $this->bigBlockChain = array();

for ($i = 0; $i < $this->numBigBlockDepotBlocks; $i++) {

$pos = ($bigBlockDepotBlocks[$i] + 1) * BIG_BLOCK_SIZE; //echo "pos = $pos";

for ($j = 0 ; $j < BIG_BLOCK_SIZE / 4; $j++) {

$this->bigBlockChain[$index] = GetInt4d($this->data, $pos); $pos += 4 ; $index++; } } // readSmallBlockDepot(); $pos = 0; $index = 0; $sbdBlock = $this->sbdStartBlock;

(27)

$this->smallBlockChain = array(); while ($sbdBlock != -2) {

$pos = ($sbdBlock + 1) * BIG_BLOCK_SIZE; for ($j = 0; $j < BIG_BLOCK_SIZE / 4; $j++) {

$this->smallBlockChain[$index] = GetInt4d($this->data, $pos); $pos += 4; $index++; } $sbdBlock = $this->bigBlockChain[$sbdBlock]; } // readData(rootStartBlock) $block = $this->rootStartBlock; $pos = 0; $this->entry = $this->__readData($block); $this->__readPropertySets(); } function __readData($bl) { $block = $bl; $pos = 0; $data = ''; while ($block != -2) {

$pos = ($block + 1) * BIG_BLOCK_SIZE;

$data = $data.substr($this->data, $pos, BIG_BLOCK_SIZE); $block = $this->bigBlockChain[$block]; } return $data; } function __readPropertySets(){ $offset = 0;

while ($offset < strlen($this->entry)) {

$d = substr($this->entry, $offset, PROPERTY_STORAGE_BLOCK_SIZE);

$nameSize = ord($d[SIZE_OF_NAME_POS]) | (ord($d[SIZE_OF_NAME_POS+1]) << 8);

$type = ord($d[TYPE_POS]);

$startBlock = GetInt4d($d, START_BLOCK_POS); $size = GetInt4d($d, SIZE_POS);

$name = '';

for ($i = 0; $i < $nameSize ; $i++) { $name .= $d[$i];

}

$name = str_replace("\x00", "", $name); $this->props[] = array (

'name' => $name, 'type' => $type,

'startBlock' => $startBlock, 'size' => $size);

if ((strtolower($name) == "workbook") || ( strtolower($name) == "book")) { $this->wrkbook = count($this->props) - 1;

}

if ($name == "Root Entry") {

(28)

} $offset += PROPERTY_STORAGE_BLOCK_SIZE; } } function getWorkBook(){ if ($this->props[$this->wrkbook]['size'] < SMALL_BLOCK_THRESHOLD){ $rootdata = $this->__readData($this->props[$this->rootentry]['startBlock']); $streamData = ''; $block = $this->props[$this->wrkbook]['startBlock']; $pos = 0; while ($block != -2) {

$pos = $block * SMALL_BLOCK_SIZE;

$streamData .= substr($rootdata, $pos, SMALL_BLOCK_SIZE); $block = $this->smallBlockChain[$block];

}

return $streamData; }else{

$numBlocks = $this->props[$this->wrkbook]['size'] / BIG_BLOCK_SIZE; if ($this->props[$this->wrkbook]['size'] % BIG_BLOCK_SIZE != 0) { $numBlocks++; } if ($numBlocks == 0) return ''; $streamData = ''; $block = $this->props[$this->wrkbook]['startBlock']; $pos = 0; while ($block != -2) {

$pos = ($block + 1) * BIG_BLOCK_SIZE;

$streamData .= substr($this->data, $pos, BIG_BLOCK_SIZE); $block = $this->bigBlockChain[$block]; } return $streamData; } } } define('SPREADSHEET_EXCEL_READER_BIFF8', 0x600); define('SPREADSHEET_EXCEL_READER_BIFF7', 0x500); define('SPREADSHEET_EXCEL_READER_WORKBOOKGLOBALS', 0x5); define('SPREADSHEET_EXCEL_READER_WORKSHEET', 0x10); define('SPREADSHEET_EXCEL_READER_TYPE_BOF', 0x809); define('SPREADSHEET_EXCEL_READER_TYPE_EOF', 0x0a); define('SPREADSHEET_EXCEL_READER_TYPE_BOUNDSHEET', 0x85); define('SPREADSHEET_EXCEL_READER_TYPE_DIMENSION', 0x200); define('SPREADSHEET_EXCEL_READER_TYPE_ROW', 0x208); define('SPREADSHEET_EXCEL_READER_TYPE_DBCELL', 0xd7); define('SPREADSHEET_EXCEL_READER_TYPE_FILEPASS', 0x2f); define('SPREADSHEET_EXCEL_READER_TYPE_NOTE', 0x1c); define('SPREADSHEET_EXCEL_READER_TYPE_TXO', 0x1b6); define('SPREADSHEET_EXCEL_READER_TYPE_RK', 0x7e); define('SPREADSHEET_EXCEL_READER_TYPE_RK2', 0x27e); define('SPREADSHEET_EXCEL_READER_TYPE_MULRK', 0xbd);

(29)

define('SPREADSHEET_EXCEL_READER_TYPE_MULBLANK', 0xbe); define('SPREADSHEET_EXCEL_READER_TYPE_INDEX', 0x20b); define('SPREADSHEET_EXCEL_READER_TYPE_SST', 0xfc); define('SPREADSHEET_EXCEL_READER_TYPE_EXTSST', 0xff); define('SPREADSHEET_EXCEL_READER_TYPE_CONTINUE', 0x3c); define('SPREADSHEET_EXCEL_READER_TYPE_LABEL', 0x204); define('SPREADSHEET_EXCEL_READER_TYPE_LABELSST', 0xfd); define('SPREADSHEET_EXCEL_READER_TYPE_NUMBER', 0x203); define('SPREADSHEET_EXCEL_READER_TYPE_NAME', 0x18); define('SPREADSHEET_EXCEL_READER_TYPE_ARRAY', 0x221); define('SPREADSHEET_EXCEL_READER_TYPE_STRING', 0x207); define('SPREADSHEET_EXCEL_READER_TYPE_FORMULA', 0x406); define('SPREADSHEET_EXCEL_READER_TYPE_FORMULA2', 0x6); define('SPREADSHEET_EXCEL_READER_TYPE_FORMAT', 0x41e); define('SPREADSHEET_EXCEL_READER_TYPE_XF', 0xe0); define('SPREADSHEET_EXCEL_READER_TYPE_BOOLERR', 0x205); define('SPREADSHEET_EXCEL_READER_TYPE_FONT', 0x0031); define('SPREADSHEET_EXCEL_READER_TYPE_PALETTE', 0x0092); define('SPREADSHEET_EXCEL_READER_TYPE_UNKNOWN', 0xffff); define('SPREADSHEET_EXCEL_READER_TYPE_NINETEENFOUR', 0x22); define('SPREADSHEET_EXCEL_READER_TYPE_MERGEDCELLS', 0xE5); define('SPREADSHEET_EXCEL_READER_UTCOFFSETDAYS' , 25569); define('SPREADSHEET_EXCEL_READER_UTCOFFSETDAYS1904', 24107); define('SPREADSHEET_EXCEL_READER_MSINADAY', 86400); define('SPREADSHEET_EXCEL_READER_TYPE_HYPER', 0x01b8); define('SPREADSHEET_EXCEL_READER_TYPE_COLINFO', 0x7d); define('SPREADSHEET_EXCEL_READER_TYPE_DEFCOLWIDTH', 0x55); define('SPREADSHEET_EXCEL_READER_TYPE_STANDARDWIDTH', 0x99); define('SPREADSHEET_EXCEL_READER_DEF_NUM_FORMAT', "%s"); /* * Main Class */ class Spreadsheet_Excel_Reader {

// MK: Added to make data retrieval easier var $colnames = array();

var $colindexes = array(); var $standardColWidth = 0; var $defaultColWidth = 0; function myHex($d) { if ($d < 16) return "0" . dechex($d); return dechex($d); }

function dumpHexData($data, $pos, $length) { $info = "";

for ($i = 0; $i <= $length; $i++) {

$info .= ($i==0?"":" ") . $this->myHex(ord($data[$pos + $i])) . (ord($data[$pos + $i])>31? "[" . $data[$pos + $i] . "]":'');

}

return $info; }

(30)

function getCol($col) { if (is_string($col)) { $col = strtolower($col); if (array_key_exists($col,$this->colnames)) { $col = $this->colnames[$col]; } } return $col; }

// PUBLIC API FUNCTIONS //

---function val($row,$col,$sheet=0) { $col = $this->getCol($col);

if (array_key_exists($row,$this->sheets[$sheet]['cells']) && array_key_exists($col,$this->sheets[$sheet]['cells'][$row])) { return $this->sheets[$sheet]['cells'][$row][$col]; } return ""; } function value($row,$col,$sheet=0) { return $this->val($row,$col,$sheet); } function info($row,$col,$type='',$sheet=0) { $col = $this->getCol($col); if (array_key_exists('cellsInfo',$this->sheets[$sheet]) && array_key_exists($row,$this->sheets[$sheet]['cellsInfo']) && array_key_exists($col,$this->sheets[$sheet]['cellsInfo'][$row]) && array_key_exists($type,$this->sheets[$sheet]['cellsInfo'][$row][$col])) { return $this->sheets[$sheet]['cellsInfo'][$row][$col][$type]; } return ""; } function type($row,$col,$sheet=0) { return $this->info($row,$col,'type',$sheet); } function raw($row,$col,$sheet=0) { return $this->info($row,$col,'raw',$sheet); } function rowspan($row,$col,$sheet=0) { $val = $this->info($row,$col,'rowspan',$sheet); if ($val=="") { return 1; } return $val; } function colspan($row,$col,$sheet=0) { $val = $this->info($row,$col,'colspan',$sheet); if ($val=="") { return 1; } return $val; } function hyperlink($row,$col,$sheet=0) { $link = $this->sheets[$sheet]['cellsInfo'][$row][$col]['hyperlink']; if ($link) { return $link['link']; }

(31)

return ''; } function rowcount($sheet=0) { return $this->sheets[$sheet]['numRows']; } function colcount($sheet=0) { return $this->sheets[$sheet]['numCols']; } function colwidth($col,$sheet=0) {

// Col width is actually the width of the number 0. So we have to estimate and come close return $this->colInfo[$sheet][$col]['width']/9142*200; } function colhidden($col,$sheet=0) { return !!$this->colInfo[$sheet][$col]['hidden']; } function rowheight($row,$sheet=0) { return $this->rowInfo[$sheet][$row]['height']; } function rowhidden($row,$sheet=0) { return !!$this->rowInfo[$sheet][$row]['hidden']; }

// GET THE CSS FOR FORMATTING // ========================== function style($row,$col,$sheet=0,$properties='') { $css = ""; $font=$this->font($row,$col,$sheet); if ($font!="") { $css .= "font-family:$font;"; } $align=$this->align($row,$col,$sheet); if ($align!="") { $css .= "text-align:$align;"; } $height=$this->height($row,$col,$sheet); if ($height!="") { $css .= "font-size:$height"."px;"; } $bgcolor=$this->bgColor($row,$col,$sheet); if ($bgcolor!="") { $bgcolor = $this->colors[$bgcolor]; $css .= "background-color:$bgcolor;"; } $color=$this->color($row,$col,$sheet); if ($color!="") { $css .= "color:$color;"; } $bold=$this->bold($row,$col,$sheet); if ($bold) { $css .= "font-weight:bold;"; } $italic=$this->italic($row,$col,$sheet); if ($italic) { $css .= "font-style:italic;"; } $underline=$this->underline($row,$col,$sheet);

(32)

if ($underline) { $css .= "text-decoration:underline;"; } // Borders $bLeft = $this->borderLeft($row,$col,$sheet); $bRight = $this->borderRight($row,$col,$sheet); $bTop = $this->borderTop($row,$col,$sheet); $bBottom = $this->borderBottom($row,$col,$sheet); $bLeftCol = $this->borderLeftColor($row,$col,$sheet); $bRightCol = $this->borderRightColor($row,$col,$sheet); $bTopCol = $this->borderTopColor($row,$col,$sheet); $bBottomCol = $this->borderBottomColor($row,$col,$sheet); // Try to output the minimal required style

if ($bLeft!="" && $bLeft==$bRight && $bRight==$bTop && $bTop==$bBottom) { $css .= "border:" . $this->lineStylesCss[$bLeft] .";";

} else {

if ($bLeft!="") { $css .= "border-left:" . $this->lineStylesCss[$bLeft] .";"; } if ($bRight!="") { $css .= "border-right:" . $this->lineStylesCss[$bRight] .";"; } if ($bTop!="") { $css .= "border-top:" . $this->lineStylesCss[$bTop] .";"; } if ($bBottom!="") { $css .= "border-bottom:" . $this->lineStylesCss[$bBottom] .";"; }

}

// Only output border colors if there is an actual border specified

if ($bLeft!="" && $bLeftCol!="") { $css .= "border-left-color:" . $bLeftCol .";"; } if ($bRight!="" && $bRightCol!="") { $css .= "border-right-color:" . $bRightCol .";"; } if ($bTop!="" && $bTopCol!="") { $css .= "border-top-color:" . $bTopCol . ";"; }

if ($bBottom!="" && $bBottomCol!="") { $css .= "border-bottom-color:" . $bBottomCol .";"; } return $css; } // FORMAT PROPERTIES // ================= function format($row,$col,$sheet=0) { return $this->info($row,$col,'format',$sheet); } function formatIndex($row,$col,$sheet=0) { return $this->info($row,$col,'formatIndex',$sheet); } function formatColor($row,$col,$sheet=0) { return $this->info($row,$col,'formatColor',$sheet); } // CELL (XF) PROPERTIES // ==================== function xfRecord($row,$col,$sheet=0) { $xfIndex = $this->info($row,$col,'xfIndex',$sheet); if ($xfIndex!="") { return $this->xfRecords[$xfIndex]; } return null; } function xfProperty($row,$col,$sheet,$prop) { $xfRecord = $this->xfRecord($row,$col,$sheet);

(33)

if ($xfRecord!=null) { return $xfRecord[$prop]; } return ""; } function align($row,$col,$sheet=0) { return $this->xfProperty($row,$col,$sheet,'align'); } function bgColor($row,$col,$sheet=0) { return $this->xfProperty($row,$col,$sheet,'bgColor'); } function borderLeft($row,$col,$sheet=0) { return $this->xfProperty($row,$col,$sheet,'borderLeft'); } function borderRight($row,$col,$sheet=0) { return $this->xfProperty($row,$col,$sheet,'borderRight'); } function borderTop($row,$col,$sheet=0) { return $this->xfProperty($row,$col,$sheet,'borderTop'); } function borderBottom($row,$col,$sheet=0) { return $this->xfProperty($row,$col,$sheet,'borderBottom'); } function borderLeftColor($row,$col,$sheet=0) { return $this->colors[$this->xfProperty($row,$col,$sheet,'borderLeftColor')]; } function borderRightColor($row,$col,$sheet=0) { return $this->colors[$this->xfProperty($row,$col,$sheet,'borderRightColor')]; } function borderTopColor($row,$col,$sheet=0) { return $this->colors[$this->xfProperty($row,$col,$sheet,'borderTopColor')]; } function borderBottomColor($row,$col,$sheet=0) { return $this->colors[$this->xfProperty($row,$col,$sheet,'borderBottomColor')]; } // FONT PROPERTIES // =============== function fontRecord($row,$col,$sheet=0) { $xfRecord = $this->xfRecord($row,$col,$sheet); if ($xfRecord!=null) { $font = $xfRecord['fontIndex']; if ($font!=null) { return $this->fontRecords[$font]; } } return null; } function fontProperty($row,$col,$sheet=0,$prop) { $font = $this->fontRecord($row,$col,$sheet); if ($font!=null) { return $font[$prop]; } return false; } function fontIndex($row,$col,$sheet=0) {

(34)

return $this->xfProperty($row,$col,$sheet,'fontIndex'); } function color($row,$col,$sheet=0) { $formatColor = $this->formatColor($row,$col,$sheet); if ($formatColor!="") { return $formatColor; } $ci = $this->fontProperty($row,$col,$sheet,'color'); return $this->rawColor($ci); } function rawColor($ci) {

if (($ci <> 0x7FFF) && ($ci <> '')) { return $this->colors[$ci]; } return ""; } function bold($row,$col,$sheet=0) { return $this->fontProperty($row,$col,$sheet,'bold'); } function italic($row,$col,$sheet=0) { return $this->fontProperty($row,$col,$sheet,'italic'); } function underline($row,$col,$sheet=0) { return $this->fontProperty($row,$col,$sheet,'under'); } function height($row,$col,$sheet=0) { return $this->fontProperty($row,$col,$sheet,'height'); } function font($row,$col,$sheet=0) { return $this->fontProperty($row,$col,$sheet,'font'); }

// DUMP AN HTML TABLE OF THE ENTIRE XLS DATA // =========================================

function dump($row_numbers=false,$col_letters=false,$sheet=0,$table_class='excel') { $out = "<table class=\"$table_class\" cellspacing=0>";

if ($col_letters) { $out .= "<thead>\n\t<tr>"; if ($row_numbers) { $out .= "\n\t\t<th>&nbsp</th>"; } for($i=1;$i<=$this->colcount($sheet);$i++) {

$style = "width:" . ($this->colwidth($i,$sheet)*1) . "px;"; if ($this->colhidden($i,$sheet)) {

$style .= "display:none;"; }

$out .= "\n\t\t<th style=\"$style\">" . strtoupper($this->colindexes[$i]) . "</th>"; } $out .= "</tr></thead>\n"; } $out .= "<tbody>\n"; for($row=1;$row<=$this->rowcount($sheet);$row++) { $rowheight = $this->rowheight($row,$sheet); $style = "height:" . ($rowheight*(4/3)) . "px;";

(35)

if ($this->rowhidden($row,$sheet)) { $style .= "display:none;"; } $out .= "\n\t<tr style=\"$style\">"; if ($row_numbers) { $out .= "\n\t\t<th>$row</th>"; } for($col=1;$col<=$this->colcount($sheet);$col++) { // Account for Rowspans/Colspans

$rowspan = $this->rowspan($row,$col,$sheet); $colspan = $this->colspan($row,$col,$sheet); for($i=0;$i<$rowspan;$i++) { for($j=0;$j<$colspan;$j++) { if ($i>0 || $j>0) { $this->sheets[$sheet]['cellsInfo'][$row+$i][$col+$j]['dontprint']=1; } } } if(!$this->sheets[$sheet]['cellsInfo'][$row][$col]['dontprint']) { $style = $this->style($row,$col,$sheet); if ($this->colhidden($col,$sheet)) { $style .= "display:none;"; }

$out .= "\n\t\t<td style=\"$style\"" . ($colspan > 1?" colspan=$colspan":"") . ($rowspan > 1?" rowspan=$rowspan":"") . ">";

$val = $this->val($row,$col,$sheet); if ($val=='') { $val="&nbsp;"; } else { $val = htmlentities($val); $link = $this->hyperlink($row,$col,$sheet); if ($link!='') {

$val = "<a href=\"$link\">$val</a>"; } } $out .= "<nobr>".nl2br($val)."</nobr>"; $out .= "</td>"; } } $out .= "</tr>\n"; } $out .= "</tbody></table>"; return $out; } // ---// END PUBLIC API

var $boundsheets = array(); var $formatRecords = array(); var $fontRecords = array(); var $xfRecords = array(); var $colInfo = array(); var $rowInfo = array();

(36)

var $sst = array(); var $sheets = array(); var $data;

var $_ole;

var $_defaultEncoding = "UTF-8";

var $_defaultFormat = SPREADSHEET_EXCEL_READER_DEF_NUM_FORMAT; var $_columnsFormat = array();

var $_rowoffset = 1; var $_coloffset = 1; /**

* List of default date formats used by Excel */

var $dateFormats = array ( 0xe => "m/d/Y", 0xf => "M-d-Y", 0x10 => "d-M", 0x11 => "M-Y", 0x12 => "h:i a", 0x13 => "h:i:s a", 0x14 => "H:i", 0x15 => "H:i:s", 0x16 => "d/m/Y H:i", 0x2d => "i:s", 0x2e => "H:i:s", 0x2f => "i:s.S" ); /**

* Default number formats used by Excel */

var $numberFormats = array( 0x1 => "0", 0x2 => "0.00", 0x3 => "#,##0", 0x4 => "#,##0.00", 0x5 => "\$#,##0;(\$#,##0)", 0x6 => "\$#,##0;[Red](\$#,##0)", 0x7 => "\$#,##0.00;(\$#,##0.00)", 0x8 => "\$#,##0.00;[Red](\$#,##0.00)", 0x9 => "0%", 0xa => "0.00%", 0xb => "0.00E+00", 0x25 => "#,##0;(#,##0)", 0x26 => "#,##0;[Red](#,##0)", 0x27 => "#,##0.00;(#,##0.00)", 0x28 => "#,##0.00;[Red](#,##0.00)", 0x29 => "#,##0;(#,##0)", // Not exactly 0x2a => "\$#,##0;(\$#,##0)", // Not exactly 0x2b => "#,##0.00;(#,##0.00)", // Not exactly 0x2c => "\$#,##0.00;(\$#,##0.00)", // Not exactly 0x30 => "##0.0E+0"

);

(37)

0x01 => "#FFFFFF", 0x02 => "#FF0000", 0x03 => "#00FF00", 0x04 => "#0000FF", 0x05 => "#FFFF00", 0x06 => "#FF00FF", 0x07 => "#00FFFF", 0x08 => "#000000", 0x09 => "#FFFFFF", 0x0A => "#FF0000", 0x0B => "#00FF00", 0x0C => "#0000FF", 0x0D => "#FFFF00", 0x0E => "#FF00FF", 0x0F => "#00FFFF", 0x10 => "#800000", 0x11 => "#008000", 0x12 => "#000080", 0x13 => "#808000", 0x14 => "#800080", 0x15 => "#008080", 0x16 => "#C0C0C0", 0x17 => "#808080", 0x18 => "#9999FF", 0x19 => "#993366", 0x1A => "#FFFFCC", 0x1B => "#CCFFFF", 0x1C => "#660066", 0x1D => "#FF8080", 0x1E => "#0066CC", 0x1F => "#CCCCFF", 0x20 => "#000080", 0x21 => "#FF00FF", 0x22 => "#FFFF00", 0x23 => "#00FFFF", 0x24 => "#800080", 0x25 => "#800000", 0x26 => "#008080", 0x27 => "#0000FF", 0x28 => "#00CCFF", 0x29 => "#CCFFFF", 0x2A => "#CCFFCC", 0x2B => "#FFFF99", 0x2C => "#99CCFF", 0x2D => "#FF99CC", 0x2E => "#CC99FF", 0x2F => "#FFCC99", 0x30 => "#3366FF", 0x31 => "#33CCCC", 0x32 => "#99CC00", 0x33 => "#FFCC00", 0x34 => "#FF9900", 0x35 => "#FF6600", 0x36 => "#666699", 0x37 => "#969696", 0x38 => "#003366",

(38)

0x39 => "#339966", 0x3A => "#003300", 0x3B => "#333300", 0x3C => "#993300", 0x3D => "#993366", 0x3E => "#333399", 0x3F => "#333333", 0x40 => "#000000", 0x41 => "#FFFFFF", 0x43 => "#000000", 0x4D => "#000000", 0x4E => "#FFFFFF", 0x4F => "#000000", 0x50 => "#FFFFFF", 0x51 => "#000000", 0x7FFF => "#000000" );

var $lineStyles = array( 0x00 => "", 0x01 => "Thin", 0x02 => "Medium", 0x03 => "Dashed", 0x04 => "Dotted", 0x05 => "Thick", 0x06 => "Double", 0x07 => "Hair", 0x08 => "Medium dashed", 0x09 => "Thin dash-dotted", 0x0A => "Medium dash-dotted", 0x0B => "Thin dash-dot-dotted", 0x0C => "Medium dash-dot-dotted", 0x0D => "Slanted medium dash-dotted" );

var $lineStylesCss = array( "Thin" => "1px solid", "Medium" => "2px solid", "Dashed" => "1px dashed", "Dotted" => "1px dotted", "Thick" => "3px solid", "Double" => "double", "Hair" => "1px solid",

"Medium dashed" => "2px dashed", "Thin dash-dotted" => "1px dashed", "Medium dash-dotted" => "2px dashed", "Thin dash-dot-dotted" => "1px dashed", "Medium dash-dot-dotted" => "2px dashed", "Slanted medium dash-dotte" => "2px dashed" );

function read16bitstring($data, $start) { $len = 0;

(39)

return substr($data, $start, $len); }

// ADDED by Matt Kruse for better formatting function _format_value($format,$num,$f) {

// 49==TEXT format

// http://code.google.com/p/php-excel-reader/issues/detail?id=7 if ( (!$f && $format=="%s") || ($f==49) || ($format=="GENERAL") ) {

return array('string'=>$num, 'formatColor'=>null); }

// Custom pattern can be POSITIVE;NEGATIVE;ZERO // The "text" option as 4th parameter is not handled $parts = split(";",$format);

$pattern = $parts[0]; // Negative pattern

if (count($parts)>2 && $num==0) { $pattern = $parts[2]; }

// Zero pattern

if (count($parts)>1 && $num<0) { $pattern = $parts[1]; $num = abs($num); } $color = ""; $matches = array(); $color_regex = "/^\[(BLACK|BLUE|CYAN|GREEN|MAGENTA|RED|WHITE|YELLOW)\]/i"; if (preg_match($color_regex,$pattern,$matches)) { $color = strtolower($matches[1]); $pattern = preg_replace($color_regex,"",$pattern); }

// In Excel formats, "_" is used to add spacing, which we can't do in HTML $pattern = preg_replace("/_./","",$pattern);

// Some non-number characters are escaped with \, which we don't need $pattern = preg_replace("/\\\/","",$pattern);

// Some non-number strings are quoted, so we'll get rid of the quotes $pattern = preg_replace("/\"/","",$pattern);

// TEMPORARY - Convert # to 0

$pattern = preg_replace("/\#/","0",$pattern); // Find out if we need comma formatting $has_commas = preg_match("/,/",$pattern); if ($has_commas) { $pattern = preg_replace("/,/","",$pattern); } // Handle Percentages if (preg_match("/\d(\%)([^\%]|$)/",$pattern,$matches)) { $num = $num * 100; $pattern = preg_replace("/(\d)(\%)([^\%]|$)/","$1%$3",$pattern); }

(40)

// Handle the number itself $number_regex = "/(\d+)(\.?)(\d*)/"; if (preg_match($number_regex,$pattern,$matches)) { $left = $matches[1]; $dec = $matches[2]; $right = $matches[3]; if ($has_commas) { $formatted = number_format($num,strlen($right)); } else { $sprintf_pattern = "%1.".strlen($right)."f"; $formatted = sprintf($sprintf_pattern, $num); }

$pattern = preg_replace($number_regex, $formatted, $pattern); } return array( 'string'=>$pattern, 'formatColor'=>$color ); } /** * Constructor *

* Some basic initialisation */

function Spreadsheet_Excel_Reader($file='',$store_extended_info=true,$outputEncoding='') { $this->_ole =new OLERead();

$this->setUTFEncoder('iconv'); if ($outputEncoding != '') {

$this->setOutputEncoding($outputEncoding); }

for ($i=1; $i<245; $i++) {

$name = strtolower(( (($i-1)/26>=1)?chr(($i-1)/26+64):'') . chr(($i-1)%26+65)); $this->colnames[$name] = $i; $this->colindexes[$i] = $name; } $this->store_extended_info = $store_extended_info; if ($file!="") { $this->read($file); } } /**

* Set the encoding method */ function setOutputEncoding($encoding) { $this->_defaultEncoding = $encoding; } /** * $encoder = 'iconv' or 'mb'

* set iconv if you would like use 'iconv' for encode UTF-16LE to your encoding

* set mb if you would like use 'mb_convert_encoding' for encode UTF-16LE to your encoding */

(41)

function setUTFEncoder($encoder = 'iconv') { $this->_encoderFunction = '';

if ($encoder == 'iconv') {

$this->_encoderFunction = function_exists('iconv') ? 'iconv' : ''; } elseif ($encoder == 'mb') { $this->_encoderFunction = function_exists('mb_convert_encoding') ? 'mb_convert_encoding' : ''; } } function setRowColOffset($iOffset) { $this->_rowoffset = $iOffset; $this->_coloffset = $iOffset; } /**

* Set the default number format */

function setDefaultFormat($sFormat) { $this->_defaultFormat = $sFormat; }

/**

* Force a column to use a certain format */

function setColumnFormat($column, $sFormat) { $this->_columnsFormat[$column] = $sFormat; }

/**

* Read the spreadsheet file using OLE, then parse */

function read($sFileName) {

$res = $this->_ole->read($sFileName);

// oops, something goes wrong (Darko Miljanovic) if($res === false) {

// check error code

if($this->_ole->error == 1) { // bad file

die('The filename ' . $sFileName . ' is not readable'); }

// check other error codes here (eg bad fileformat, etc...) } $this->data = $this->_ole->getWorkBook(); $this->_parse(); } /** * Parse a workbook * * @access private * @return bool */ function _parse() { $pos = 0;

Gambar

Tabel dibawah ini merupakan hasil perhitungan data dari model yang dibuat.

Referensi

Dokumen terkait

Dari definisi di atas, dapat dikatakan bahwa pengertian manajemen sumber daya manusia secara garis besar sama yaitu bahwa suatu proses pendayagunaan tenaga kerja

ECONOMIC DISPATCH MENGGUNAKAN QUANTUM-BEHAVED PARTICLE SWARM OPTIMIZATION (QPSO) PADA.. SISTEM

Keberhasilan kriopreservasi akan memungkinkan tersedianya oosit beku sehingga (a) dapat mempermudahkan pengaturan waktu didalam program produksi embrio in vifro

Pada hasil analisis diskriminan dengan menggunakan lima karakter utama tengkorak tersebut, persentase kelompok yang terklasifikasi dengan benar sebesar 91,61%, Populasi Sumatra

Saat kejadian La Niña (SML bernilai negatif) wilayah kabupaten Gorontalo secara umum mengalami peningkatan curah hujan, kondisi ini berpengaruh terhadap awal musim

Kata 'heritage' juga merupakan kata yang unik dan estetik, bukan istilah yang biasa digunakan secara umum di Indonesia sehingga akan mudah membangun persepsi bahwa 'Heritage'

Lalu buatlah pergaulan dengan manusia semacam ini muncul dari kelapangan dadamu dan tenggang rasamu, bukan dengan cara menahan-nahan amarah, dengan dada yang