• 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

Gambar 4.13 Grafik perbandingan debit observasi dengan debit model hasil. simulasi AVSWAT

Rata – rata nilai persentase kesalahan diperoleh dari menghitung selisih prediksi dan hasil persentase berdasarkan rumus pada bab sebelumnya Pada skenario ini, nilai

Gambar 4 adalah grafik debit hasil simulasi model distribusi dengan model komposit yang dibandingkan dengan data pengamatan. Pada model distribusi rerata kesalahan adalah

Dengan menggunakan parameter stokastik hasil perhitungan data tahunan dengan panjang data 512 hari untuk setiap tahunnya seperti yang dihasilkan Gambar 10,

Mean Absolute Deviation (MAD) mengukur ketepatan ramalan dengan merata-ratakan kesalahan dugaan (nilai absolut masing-masing kesalahan). MAD berguna ketika mengukur kesalahan

Untuk keperluan simulasi, nilai peluang harus diubah ke dalam bentuk data kejadian hujan (kh01 dan kh11) yaitu dengan membandingkan nilai peluang tersebut dengan

Pada data nilai RMSE yang digunakan sebagai contoh perwakilan dari hasil uji t antara curah hujan rata-rata TRMM dengan BMKG yang dihubungkan berdasarkan 21 pos

Pemodelan ini juga memberikan gambaran prilaku stokastik dari komponen stokastik yang merupakan selisih antara data hujan harian ( data terukur) dengan model