STATISTIC INTRODUCTION, HOMEWORK 1

All statistic computations will be using R

Population is all the objects of our observation which some people may call it all specimens or very large set of data values, but sample is small part of population which is a group of n observation actually available as the representative of the population.
A practical definition of random variable by Watts (1991) is “the value of the next observation in an experiment”. Usually, even after finishing an experiment and collecting all the data, we still wandering about things that that could have happened but didn’t. So, random variable is not about actual outcomes, but the possible outcomes. The possible outcomes of a yet-to-be-performed experiment and the possible outcomes of a past experiment whose already-existing value is uncertain might be represented by random variable’s possible values.
Random error, experimental error, and noise generally refer to the inconstancy or disparity in duplicate observations from one experiment to another. If we try to define those, then we can say that random error as that part of our experience or observation that we cannot predict, and noise as a random or more accurately a stochastic process which considered as a phenomenon random because we do not know everything about it. Moreover for experimental error, it is the difference between a measurement and the true value or between two measured values although it is measured by its accuracy and precision.
In the statistical context, error does not imply fault, mistake, or blunder. It refers to variation caused by measurement fluctuations and many other factors that cannot be ignored entirely, but can be minimized in certain cases.

Randomization.
A laboratory receives 200 water specimens from a city water supply each day. This exceeds their capacity so they randomly select 20 per day for analysis. Explain how you would select the sample of n =20 water specimens.
Answer:
There are two ways we can use.
First is simple random sampling method. Every specimens is numbered from 1 to 200 then we can use lottery method or blind-folded to select randomly 20 number as the samples. Because lottery method is easier, then we can use it. We also can select sampling with replacement or without replacement base on our assumption that this data is dependent or independent. In this case, we can assume that the data is independent. So, we choose the 20 sample with replacement.
Second is randomized block designs. This method only can be used if we have more information about where our water specimens come from. We recognize that our sample has several homogeneous subgroups base of its type of water supply. For example, our 200 specimens come from 4 type of water supply which is 50 specimens for every type of water supply. Then we can select 5 specimens randomly using simple random sampling method. Blocking is a strategy for grouping data in our data analysis in order to reduce noise if it is done correctly.

Experimental Errors.
The measured concentration of phosphorus (P) for n =20 identical specimens of wastewater with known concentration of 2 mg/L are:
1.8 2.2 2.1 2.3 2.1 2.2 2.1 2.1 1.8 1.9
2.4 2.0 1.9 1.9 2.2 2.3 2.2 2.3 2.1 2.2
Calculate the experimental errors. Are the errors random? Plot the errors to show their distribution.
Answer:
Sample size is 20
The errors are -0.2 0.2 0.1 0.3 0.1 0.2 0.1 0.1 -0.2 -0.1 0.4 0.0 -0.1 -0.1 0.2 0.3 0.2 0.3 0.1 0.2.
From the calculating and plotting using R, we know that the plot indicates randomness and the errors from true value 2 mg/L are random from -0,2 to 0,45 as shown in the graphic.

STAT1STAT2

Sampling Distributions. 

Below are eight groups of five random samples drawn from a normal distribution which has mean η =10 and standard deviation σ =1. For each sample of five
(i.e., each column), calculate the average, variance, and t statistic and plot them in the form
of Figure 2.11.
1          2          3          4          5          6          7         8
9.1       9.1      8.9      12.1     11.7     11.7     8.4      10.4
9.5       9.0       9.2       7.8       11.1    9.0      10.9     9.7
10.1     10.4     11.2     10.4     10.4    10.6     12.1     9.3
11.9     9.7       10.3     8.6       11.3     9.2       11.2     8.7
9.6       9.4       10.6     11.6     10.6     10.4     10.0     9.1
Answer:
Calculating and plotting are using R.

 > sample=read.table("clipboard",header=T)
 > sample
 group1 group2 group3 group4 group5 group6 group7 group8
 1   9.1   9.1   8.9   12.1   11.7   11.7   8.4   10.4
 2   9.5   9.0   9.2   7.8   11.1   9.0   10.9   9.7
 3   10.1   10.4   11.2   10.4   10.4   10.6   12.1   9.3
 4   11.9   9.7   10.3   8.6   11.3   9.2   11.2   8.7
 5   9.6   9.4   10.6   11.6   10.6   10.4   10.0   9.1
 > summary(sample)
 group1         group2         group3         group4         group5
 Min.   : 9.10   Min.   : 9.00   Min.   : 8.90   Min.   : 7.8   Min.   :10.40
 1st Qu.: 9.50   1st Qu.: 9.10   1st Qu.: 9.20   1st Qu.: 8.6   1st Qu.:10.60
 Median : 9.60   Median : 9.40   Median :10.30   Median :10.4   Median :11.10
 Mean   :10.04   Mean   : 9.52   Mean   :10.04   Mean   :10.1   Mean   :11.02
 3rd Qu.:10.10   3rd Qu.: 9.70   3rd Qu.:10.60   3rd Qu.:11.6   3rd Qu.:11.30
 Max.   :11.90   Max.   :10.40   Max.   :11.20   Max.   :12.1   Max.   :11.70
 group6         group7         group8
 Min.   : 9.00   Min.   : 8.40   Min.   : 8.70
 1st Qu.: 9.20   1st Qu.:10.00   1st Qu.: 9.10
 Median :10.40   Median :10.90   Median : 9.30
 Mean   :10.18   Mean   :10.52   Mean   : 9.44
 3rd Qu.:10.60   3rd Qu.:11.20   3rd Qu.: 9.70
 Max.   :11.70   Max.   :12.10   Max.   :10.40
 > var(sample$group1)
 [1] 1.208
 > var(sample$group2)
 [1] 0.317
 > var(sample$group3)
 [1] 0.933
 > var(sample$group4)
 [1] 3.47
 > var(sample$group5)
 [1] 0.277
 > var(sample$group6)
 [1] 1.222
 > var(sample$group7)
 [1] 1.967
 > var(sample$group8)
 [1] 0.418
 > t.test(sample$group1)
 One Sample t-test
 data: sample$group1
 t = 20.4261, df = 4, p-value = 3.392e-05
 alternative hypothesis: true mean is not equal to 0
 95 percent confidence interval:
 8.675299 11.404701
 sample estimates:
 mean of x
 10.04
 > t.test(sample$group2)
 One Sample t-test
 data: sample$group2
 t = 37.8088, df = 4, p-value = 2.923e-06
 alternative hypothesis: true mean is not equal to 0
 95 percent confidence interval:
 8.820909 10.219091
 sample estimates:
 mean of x
 9.52
 > t.test(sample$group3)
 One Sample t-test
 data: sample$group3
 t = 23.2422, df = 4, p-value = 2.031e-05
 alternative hypothesis: true mean is not equal to 0
 95 percent confidence interval:
 8.840653 11.239347
 sample estimates:
 mean of x
 10.04
 > t.test(sample$group4)
 One Sample t-test
 data: sample$group4
 t = 12.1239, df = 4, p-value = 0.0002655
 alternative hypothesis: true mean is not equal to 0
 95 percent confidence interval:
 7.787036 12.412964
 sample estimates:
 mean of x
 10.1
 > t.test(sample$group5)
 One Sample t-test
 data: sample$group5
 t = 46.8195, df = 4, p-value = 1.245e-06
 alternative hypothesis: true mean is not equal to 0
 95 percent confidence interval:
 10.3665 11.6735
 sample estimates:
 mean of x
 11.02
> t.test(sample$group6)
 One Sample t-test
 data: sample$group6
 t = 20.5919, df = 4, p-value = 3.285e-05
 alternative hypothesis: true mean is not equal to 0
 95 percent confidence interval:
 8.807414 11.552586
 sample estimates:
 mean of x
 10.18
 > t.test(sample$group7)
 One Sample t-test
 data: sample$group7
 t = 16.7725, df = 4, p-value = 7.405e-05
 alternative hypothesis: true mean is not equal to 0
 95 percent confidence interval:
 8.778569 12.261431
 sample estimates:
 mean of x
 10.52
 > t.test(sample$group8)
 One Sample t-test
 data: sample$group8
 t = 32.6489, df = 4, p-value = 5.248e-06
 alternative hypothesis: true mean is not equal to 0
 95 percent confidence interval:
 8.637228 10.242772
 sample estimates:
 mean of x
 9.44
 > sample.bias1
 [1] 0.04
 > sample.bias2=mean(sanple$group2)-10
 > sample.bias2=mean(sample$group2)-10
 > sample.bias2
 [1] -0.48
 > sample.bias3=mean(sample$group3)-10
 > sample.bias3
 [1] 0.04
 > sample.bias4=mean(sample$group4)-10
 > sample.bias4
 [1] 0.1
 > sample.bias5=mean(sample$group5)-10
 > sample.bias5
 [1] 1.02
 > sample.bias6=mean(sample$group6)-10
 > sample.bias6
 [1] 0.18
 > sample.bias7=mean(sample$group7)-10
 > sample.bias7
 [1] 0.52
 > sample.bias8=mean(sample$group8)-10
 > sample.bias8
 [1] -0.56
 > sample.stddev1=sd(sample$group1)
 > sample.stddev1
 [1] 1.099091
 > sample.stddev2=sd(sample$group2)
 > sample.stddev2
 [1] 0.5630275
 > sample.stddev3=sd(sample$group3)
 > sample.stddev3
 [1] 0.9659193
 > sample.stddev4=sd(sample$group4)
 > sample.stddev4
 [1] 1.862794
 > sample.stddev5=sd(sample$group5)
 > sample.stddev5
 [1] 0.5263079
 > sample.stddev6=sd(sample$group6)
 > sample.stddev6
 [1] 1.105441
 > sample.stddev7=sd(sample$group7)
 > sample.stddev7
 [1] 1.402498
 > sample.stddev8=sd(sample$group8)
 > sample.stddev8
 [1] 0.6465292
 > sample.size1=length(sample$group1)
 > sample.size1
 [1] 5
 > sample.size2=length(sample$group1)
 > sample.size2=length(sample$group2)
 > sample.size2
 [1] 5
 > sample.size3=length(sample$group3)
 > sample.size3
 [1] 5
 > sample.size4=length(sample$group4)
 > sample.size4
 [1] 5
 > sample.size5=length(sample$group5)
 > sample.size5
 [1] 5
 > sample.size6=length(sample$group6)
 > sample.size6
 [1] 5
 > sample.size7=length(sample$group7)
 > sample.size7
 [1] 5
 > sample.size8=length(sample$group8)
 > sample.size8
 [1] 5
 > sample.stderr1=sample.stddev1/sqrt(sample.size1)
 > sample.stderr2=sample.stddev2/sqrt(sample.size2)
 > sample.stderr3=sample.stddev3/sqrt(sample.size3)
 > sample.stderr4=sample.stddev4/sqrt(sample.size4)
 > sample.stderr5=sample.stddev5/sqrt(sample.size5)
 > sample.stderr6=sample.stddev6/sqrt(sample.size6)
 > sample.stderr7=sample.stddev7/sqrt(sample.size7)
 > sample.stderr8=sample.stddev8/sqrt(sample.size8)
 > sample.stderr1
 [1] 0.4915282
 > sample.stderr2
 [1] 0.2517936
 > sample.stderr3
 [1] 0.4319722
 gt; sample.stderr4
 [1] 0.8330666
 > sample.stderr5
 [1] 0.235372
 > sample.stderr6
 [1] 0.4943683
 > sample.stderr7
 [1] 0.6272161
 > sample.stderr8
 [1] 0.2891366
 > sample.t1=sample.bias1/sample.stderr1
 > sample.t2=sample.bias2/sample.stderr2
 > sample.t3=sample.bias3/sample.stderr3
 > sample.t4=sample.bias4/sample.stderr4
 > sample.t5=sample.bias5/sample.stderr5
 > sample.t6=sample.bias6/sample.stderr6
 > sample.t7=sample.bias7/sample.stderr7
 > sample.t8=sample.bias8/sample.stderr8
 > sample.t1                             #t-statistic values
 [1] 0.08137885
 > sample.t2
 [1] -1.9063224
 > sample.t3
 [1] 0.09259855
 > sample.t4
 [1] 0.1200384
 > sample.t5
 [1] 4.333565
 > sample.t6
 [1] 0.364101
 > sample.t7
 [1] 0.8290604
 > sample.t8
 [1] -1.9368
 To make the plot, we can do it generally by using all the data together
 > sample=c(9.1,9.1,8.9,12.1,11.7,11.7,8.4,10.4,9.5,9.0,9.2,7.8,11.1,9.0,10.9,9.7,10.1,10.4,11.2,10.4,10.4,10.6,12.1,9.3,11.9,9.7,10.3,8.6,11.3,9.2,11.2,8.7,9.6,9.4, 10.6, 11.6,10.6,10.4,10.0,9.1)
 > mean=10
 > sd=1
 > summary(sample)
 Min. 1st Qu. Median   Mean 3rd Qu.   Max.
 7.800   9.175 10.200 10.110 10.950 12.100
 > x=seq(7.8,12.1,length=200)
 > y=dnorm(x,10,1)
 > plot(x,y,main=paste("Parent Distribution N(10,1)"),xlab="x",ylab="P")
 > length(sample)
 [1] 40
 > sample.draw=matrix(rnorm(500 *40,mean,sd),5)
 > sample.drawvar=apply(sample.draw,2,var)
 > sample.draw=49*sample.drawvar/1
 > hist(sample.draw,breaks=25,prob=T,main="Standard distribution of sample variance")

stat1
stat2

The following oxygen concentration data were obtained from the Little Bear River. Plot and describe these data as best you know how. What do you see? What can you calculate? Be quantitative. The Time is in days from July 31, 2010 (e.g. 31.50 is July 31, 2010 at noon)

stat3
Answer:
Calculation using R:

 > Time=c(31.00,31.02,31.04,31.06,31.08,31.10,31.12,31.15,31.17,31.19,31.21,31.23,31.25,31.27,31.29,31.31,31.33,31.35,31.38,31.40,31.42,31.44,31.46,31.48,31.50,31.52,31.54,31.56,31.58,31.60,31.62,31.65,31.67,31.69,31.71,31.73,31.75,31.77,31.79,31.81,31.83,31.85,31.88,31.90,31.92,31.94,31.96,31.98)
 > Time.size=length(Time)
 > Time.size
 [1] 48
 > DO=c(6.89,6.907,6.900,6.898,6.907,6.912,6.933,6.992,7.023,7.052,7.067,7.087,7.118,7.153,7.255,7.347,7.507,7.667,7.832,7.998,8.183,8.358,8.555,8.725,8.865,9.005,9.122,9.168,9.185,9.187,9.123,9.088,9.027,9.020,8.938,8.773,8.633,8.508,8.377,8.242,8.100,7.923,7.772,7.578,7.432,7.275,7.133,7.062)
 > DO.size=length(DO)
 > DO.size
 [1] 48
 > plot(DO~Time,pch=19,xlab="Day in July",ylab="DO(mg/L)")
 > q()
 > summary(DO)
 Min. 1st Qu.  Median    Mean 3rd Qu.    Max.
 6.890   7.082   7.802   7.913   8.737   9.187
 > mean(DO)
 [1] 7.912542
 > var(DO)
 [1] 0.7069283
 > t.test(DO)
 One Sample t-test
 data:  DO
 t = 65.2002, df = 47, p-value < 2.2e-16
 alternative hypothesis: true mean is not equal to 0
 95 percent confidence interval:
 7.668402 8.156682
 sample estimates:
 mean of x
 7.912542
 > sd(DO)
 [1] 0.8407903

Graphic using R:
stat4

Explanation about DO from the Little Bear River base on the data:

  • Max DO value at 9,187 mg/L happens at 31.60, because 3.50 is at noon based on the graphic we can say that peak of DO values happened on day time.
  • There is fluctuation of DO value in a day. It is low in the night and high in the day time. Moreover the fluctuation is not too big, it is from 6,80 – 9,187
  • Based on the graphic, it seems like hypothetically there is a tendency of DO values to go up on day time and down in the night periodically.
  • If we try to explain the reason why DO values reach peak on day time, it will be because plenty of sun shine in the summer on July. Sun helps plants on the water such as algae and plankton for their photosynthesis. If we want to focus on DO and photosynthesis, then other conditions such as the value of pH, N, P, and T should be controlled.
  • On photosynthesis process, plants absorb CO2 and release O O2 will be dissolved on water so DO increases.
Iklan

Manajemen air secara linear programming

Linear Programming digunakan untuk optimasi suatu problem yang semua persamaan /pertidaksamaannya linear dan memilike banyak variable yang tidak dapat diselesaikan secara clasicall optimization. Penyelesaian optimasi LP dapat diselesaikan secara manual menggunakan simplex method atau eleminasi gauss-jordan, atau dengan menggunakan program LINGO. Silahkan klik di sini untuk download programmnya. Klik di sini untuk cara menginstal.

Contoh 1:Untuk melihat video penjelasan tetang contoh1, silahkan klik di sini..
Seorang petani mengoperasikan tiga lahan pertanian. Setiap lahan dikelola oleh 3 orang anak pada lahan mereka masing2. Batas atas tanah, air, dan kebutuhan air yang diberikan pada Tabel 1. Tiga jenis tanaman dapat ditanam pada setiap lahan, namun karena keterbatasan ketersediaan peralatan, dua dari tanaman terbatas dalam total luas yang dapat ditanami. Juga, untuk kesetaraan di antara anak-anak , luas masing-masing lahan pertanian yang dapat ditanam harus sama . Angka-angka laba bersih setelah menghapus perkiraan biaya tanaman diberikan pada Tabel 1. Total air yang tepat untuk semua lahan adalah 1.000.000m3.

Kembangkanlah model LP untuk menentukan berapa banyak masing-masing tanaman harus ditanam pada setiap lahan pertanian.

Table 1
LP1
Penyelesaian:
Objective Function: profit total 3 farm.
Constraint / kendala:
Total air ≤ 1.000.000m3.
Tanah yang di tanami ≤ tanah yang tersedia di tiap lahan
Tanaman yang di tanah ≤ equipmets limit
Luas area yang di tanam di setiap lahan harus sama
Objective function:
Max Z = 0.2 (XA1 + XB1 + XC1) + 0.4 (XA2 + XB2 + XC2) + 0.5 (XA3 + XB3 + XC3)
Subject to:
0.5 (XA1 + XB1 + XC1) + 0.7 (XA2 + XB2 + XC2) + 1.0 (XA3 + XB3 + XC3) ≤ 1.000.000m3.
XA1 + XA2 + XA3 ≤ 40
XB1 + XB2 + XB3 ≤ 50
XC1 + XC2 + XC3 ≤ 70
XA2 + XB2 + XC2 ≤ 80
XA3 + XB3 + XC3 ≤ 50
XA1 + XA2 + XA3= XB1 + XB2 + XB3
XA1 + XA2 + XA3= XC1 + XC2 + XC3
Hasil:
Objective function: 53×103 $/ha
Jenis tanaman:
Farm A: 40 Ha bean
Farm B: 40 Ha Corn
Farm C: 30 Ha Corn dan 10 Ha bean

Contoh 2:Untuk melihat video penjelasan tetang contoh2, silahkan klik di sini.

Sebuah waduk dirancang untuk memberikan listrik tenaga air dan air untuk irigasi. Air yang keluar dari turbin juga dapat digunakan untuk irigasi seperti yang ditunjukkan pada Gambar 1. Setidaknya satu unit air harus disimpan di sungai setiap bulan di titik A. Turbin PLTA memiliki kapasitas 4 unit air per bulan (debit air konstan setiap bulan), dan setiap air lain yang keluar harus melewati turbin. Ukuran wilayah pertanian relatif sangat besar terhadap jumlah air irigasi yang tersedia, sehingga tidak ada batas atas air irigasi digunakan. Waduk ini memiliki kapasitas 10 unit, dan volume awal dari air yang tersimpan adalah 5 unit air. Total volume penyimpanan akhir harus sama atau lebih besar dari penyimpanan volume awal. Manfaat/keuntungan per unit air, dan perkiraan volume rata-rata arus masuk reservoir diberikan dalam Tabel 2.

Kembangan model LP untuk memaksimalkan manfaat ekonomi dari pengoperasian waduk.
Gambar1
LP2
Table 2
LP3
Penyelesaian:
R= turbin PLTA capasitas, I = Irigasi, SP= Split, S= Volume Storage/ tersimpan di DAM, Qt=inflow
Objective function: Benefit/keuntungan dari PLTA dan irigasi.
Max Z = 1.6 R1 + I1 + 1.7 R2 + 1.2 I2 + 1.8 R3 + 1.9 I3 + 1.9 R4 + 2 I4 + 2 R5 + 2.2 I5 + 2 R6 + 2.2I6
Kendala/constraints:
Volume balance untuk irigasi: VSplit +VIrigasi≥ 1 unit air
Bulan 1           SP1 + R1 –I1≥ 1
Bulan 2   SP2 + R2 –I2≥ 1
Bulan 3   SP3 + R3 – I3 ≥ 1
Bulan 4   SP4 + R4 – I4≥ 1
Bulan 5   SP5 + R5 –I5≥ 1
Bulan 6   SP6 + R6 – I6 ≥ 1
Kapasitas turbin:
R1 ≤ 4
R2 ≤ 4
R3 ≤ 4
R4 ≤ 4
R5 ≤ 4
R6 ≤ 4
Kapasitas DAM
S1=5
S2 ≤10
S3 ≤10
S4 ≤10
S5 ≤10
S6 ≤10
S7 ≥ 5
Mass balance di DAM:
St+1=St-Rt-SPt+Qt
St+1-St+Rt+SPt=Qt
Bulan 1           S2 – S1 + R1 + SP1 = 2
S2 + R1 + SP1 = 2 + 5
S2 + R1 + SP1 = 7
Bulan 2   S3 – S2 + R2 + SP2 = 2
Bulan 3   S4 – S3 + R3 + SP3 = 3
Bulan 4   S5 – S4 + R4 + SP4 = 4
Bulan 5   S6 – S5 + R5 + SP5 = 3
Bulan 6   S7 – S6 + R6 + SP6 = 2

Hasil:
Objective value: 51.60$
Volume tiap variable tiap bulan yang harus di control oleh manager waduk:
Bulan 1
Volume air untuk turbin       = 1 unit
Volume air untuk irigasi      = 0 unit
Volume Split = 0 unit
Volume yang tersimpan di waduk = 6 unit
Bulan 2
Volume air untuk turbin       = 1 unit
Volume air untuk irigasi      = 0 unit
Volume Split = 0 unit
Volume yang tersimpan di waduk = 7 unit
Bulan 3
Volume air untuk turbin       = 2 unit
Volume air untuk irigasi      = 1 unit
Volume Split = 0 unit
Volume yang tersimpan di waduk = 8 unit
Bulan 4
Volume air untuk turbin       = 4 unit
Volume air untuk irigasi      = 3 unit
Volume Split = 0 unit
Volume yang tersimpan di waduk = 8 unit
Bulan 5
Volume air untuk turbin       = 4 unit
Volume air untuk irigasi      = 3 unit
Volume Split = 0 unit
Volume yang tersimpan di waduk = 7 unit
Bulan 6
Volume air untuk turbin       = 4 unit
Volume air untuk irigasi      = 3 unit
Volume Split = 0 unit
Volume yang tersimpan di waduk = 5 unit

Pendahuluan : Modeling dalam Manajemen Sumber Daya Air

Manajemen sumber daya air dapat efektif dilakukan dengan menggunakan konsep analisis system. Sebuah sistem dapat dianggap sebagai satu set komponen atau proses yang mengubah masukan sumber daya menjadi produk (barang dan jasa ) output .

sda1a

sda1b

Elemen Sistem Sumber Daya Air Input

Input

Sumber Air

  • Sumber permukaan: misalnya, permukaan aliran air, sedimentasi, atau beban garam, curah hujan
  • sumber air tanah
  • sumber impor: misalnya, air desalting, air diimpor
  • Reuse dan daur ulang: misalnya, diperlakukan air dari instalasi pengolahan air daur ulang di irigasi

Sumber daya alam lain

  • Tanah
  • Mineral, dll
  • Sumber Ekonomi

Output

Alokasi air untuk sektor pengguna

  • Perkotaan
  • Pertanian
  • Industri
  • listrik PLTA
  • Kontrol Banjir
  • Navigasi
  • Rekreasi
  • Habitat ikan dan satwa liar

Jumlah dan kualitas dari sistem sumber daya air

  • Arus sungai
  • Kualitas aliran

Kendala/ constraints

  • kendala Ekonomi: misalnya, anggaran, B / C ratio
  • kendala politik: misalnya, tradeoff antara daerah
  • Undang-Undang: misalnya, hak air penggunaan air
  • Fisik dan kendala teknologi: misalnya, kemungkinan ketersediaan air
  • Standar: keluaran sistem mungkin harus memenuhi standar tertentu: misalnya, standar kualitas air dari pengolahan air limbah

Komponen Sistem Fisik dan Teknik:

Perencanaan dan manajemen komponen sistem

  • Dam
  • Tanggul
  • Distribusi atau koleksi sistem terdiri dari (a) kanal, (b) pipa, (c) stasiun pompa air, dll

Komponen sistem deskriptif

  • Sifat fisik dari aliran: misalnya, debit, kemiringan
  • sifat biokimia dari aliran: misalnya, tingkat aerasi, tingkat self-regenerasi
  • Kimia sifat aliran: misalnya, pH

Untuk mempermudah proses manajemen dalam suatu sitem sumber daya air, digunakan matematik model. Tujuan dari pemodelan dapat berupa prediksi atau preskriptif. Model prediksi dari sistem yang dibangun untuk memperjelas struktur internal sistem dan memprediksi perilaku atau respon terhadap variabel input. Di sisi lain, model preskriptif berusaha tidak hanya untuk mereproduksi perilaku sistem itu sendiri, tetapi juga untuk mengevaluasi konsekuensi dari alternarif desain.

sda1c

sda1d

Note: classical optimization dapat di selesaikan mengunakan rumus kalkulus turunan pertama dalam mencari titik optimum dan juga konsep Lagrangian (tidak akan di bahas di sini.

C++_07: Fungsi dan Prototype

Untuk Video, silahkan nonton di sini.
Fungsi merupakan blok dari kode yang dirancang untuk melakukan tugas khusus. Tujuan
pembuatan fungsi adalah:
– Program menjadi terstruktur
– Dapat mengurangi duplikasi kode
– Fungsi dapat di panggil dari program atau fungsi yang lain
Pada umumnya fungsi memerlukan masukan yang disebut parameter atau argument.
Hasil akhir fungsi akan berupa nilai(nilaibalikfungsi).
Bentuk umum sebuah fungsi adalah:
TypeFungsinamaFungsi (parameter)
{
//Tubuhfungsi
}
Contoh 1:Fungsi sederhana

#include <iostream>
using namespace std;

float penjumlahan(float a, float b)
{
	float HJ;
	HJ = a + b;
	return HJ;
}
float pengurangan(float a, float b)
{
	float HK;
	HK = a - b;
	return HK;
}

int main()
{
	float a, b;
	cout << "masukkan nilai a:";
	cin >> a;
	cout << "masukkan nilai b:";
	cin >> b;
	float tambah;
	tambah = penjumlahan(a, b);
	cout << "Hasil penjumlahan:" <<tambah<< endl;
	float kurang;
	kurang = pengurangan(a, b);
	cout << "Hasil pengurangan:" << kurang<<endl;
	system("pause");
	return 0;
}

Contoh 2:

#include <iostream>
using namespace std;

float penjumlahan(float a, float b=20)
{
	float HJ;
	HJ = a + b;
	return HJ;
}


int main()
{
	float a, b;
	cout << "masukkan nilai a:";
	cin >> a;
	cout << "masukkan nilai b:";
	cin >> b;
	float tambah;
	tambah = penjumlahan(a, b);
	cout << "Hasil penjumlahan:" << tambah << endl;
	tambah = penjumlahan(a);
	cout << "Hasil penjumlahan:" << tambah << endl;
	system("pause");
	return 0;
}

Contoh 3: Prototype, hanya prototype saja yang ditulis diawal, tetapi fungsi lengkapnya di tulis di bagian akhir.

#include <iostream>
using namespace std;

float penjumlahan(float a, float b);
float pengurangan(float a, float b);

int main()
{
	float a, b;
	cout << "masukkan nilai a:";
	cin >> a;
	cout << "masukkan nilai b:";
	cin >> b;
	float tambah;
	tambah = penjumlahan(a, b);
	cout << "Hasil penjumlahan:" << tambah << endl;
	float kurang;
	tambah = pengurangan(a, b);
	cout << "Hasil pengurangan:" << tambah << endl;
	system("pause");
	return 0;
}

float penjumlahan(float a, float b)
{
	float HJ;
	HJ = a + b;
	return HJ;
}
float pengurangan(float a, float b)
{
	float HK;
	HK = a - b;
	return HK;
}

Contoh 4: Kombinasi dan permutasi

comb

#include <iostream>
#include <iomanip>
using namespace std;

int nfaktorial(int n);
int rfaktorial(int r);
int nrfaktorial(int n, int r);


int main()
{
	double Kom,Per;
	int n,r, i = 1, factorial = 1;
	cout << "Enter jumlah angka : ";
	cin >> n;
	cout << "Enter jumlah angka yang mau di permutasi atau kombinasi : ";
	cin >> r;
	while (n < r)
	{
		cout << "n hrus lebih besar dari r, masukkan ulang nilai n:";
		cin >> r;
		if (n > r)
		{
			break;
		}
	}
	double rfak;
	rfak = rfaktorial(r);
	double nfak;
	nfak = nfaktorial(n);
	double nrfak;
	nrfak = nrfaktorial(n,r);
	Kom = nfak / (rfak*nrfak);
	Per = nfak / (nrfak);
	cout << "Kombinasi " << r << " angka, dari "<<n<<" angka:" <<setprecision(10)<< Kom << endl;
	cout << "Permutasi " << r << " angka, dari " << n << " angka:" << setprecision(10)<< Per << endl;
	system("pause");
	return 0;
}

int nfaktorial(int n)
{
	int i = 1, nfactorial = 1;
	while (i <= n)
	{
		nfactorial *= i;;
		++i;
	}
	return nfactorial;
}

int rfaktorial(int r)
{
	int i = 1, rfactorial = 1;
	while (i <= r)
	{
		rfactorial *= i;;
		++i;
	}
	return rfactorial;
}

int nrfaktorial(int n, int r)
{
	int nr = n - r;
	int i = 1, nrfactorial = 1;
	while (i <= nr)
	{
		nrfactorial *= i;
		++i;
	}
	return nrfactorial;
}

Code di atas, hanyalah untuk membuat kita lebih terbiasa dengan prototype, karena code diatas hanya bisa diapliaksikan unutk angka2 yang kecil. Saya butuh comment untuk improving.

C++_06: Input/output dengan file (fstream)

Penjelasan tentang contoh2 dapat di tonton Video Task01 di sini, Video Task02 di sini.

Jika selama ini kita menggunkan cin dan cout unutk input dan output di console, sekarang kita belajar input dan output dari dan ke file.
C++ menyediakan classes berikut untuk input dan output dari dan ke file:
ofstream: Stream class untuk menulis ke files
ifstream: Stream class untuk membaca dari files
fstream: Stream class unutk menulis dan membaca dari dank e file.
Ingat unutk selalu membuat file input.txt dan output.txt setelah membuat file.cpp.
Contoh 1: menulis ke file

// basic file operations
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
	ofstream input;
	input.open("result.txt");
	input << "baris pertama" << endl;
	input << "baris ke dua";
	input.close();
	return 0;
}

Contoh 2: membaca dari file dan menulis ke file per huruf

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main()
{
	ifstream masuk;
	ofstream keluar;
	string FileMasuk;
	string FileKeluar;
	cout << "masukkan nama file input:";
	cin >> FileMasuk;
	cout << "masukkan nama file hasil:";
	cin >> FileKeluar;
	masuk.open(FileMasuk);
	keluar.open(FileKeluar);
	char tulisan;
	while (masuk >>noskipws>> tulisan)
	{
		keluar << tulisan;
	}
	masuk.close();
	keluar.close();
	return 0;
}

Contoh 3: membaca dari file dan menulis ke file kata demi kata

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main()
{
	ifstream masuk;
	ofstream keluar;
	string FileMasuk;
	string FileKeluar;
	cout << "masukkan nama file input:";
	cin >> FileMasuk;
	cout << "masukkan nama file hasil:";
	cin >> FileKeluar;
	masuk.open(FileMasuk);
	keluar.open(FileKeluar);
	string tulisan;
	while (masuk >> tulisan)
	{
		keluar << tulisan<<" ";
	}
	masuk.close();
	keluar.close();
	return 0;
}

Contoh 4: membaca tulisan baris demi baris

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main()
{
	ifstream masuk;
	ofstream keluar;
	string FileMasuk;
	string FileKeluar;
	cout << "masukkan nama file input:";
	cin >> FileMasuk;
	cout << "masukkan nama file hasil:";
	cin >> FileKeluar;
	masuk.open(FileMasuk);
	keluar.open(FileKeluar);
	string tulisan;
	while(getline(masuk,tulisan))
	{
		keluar << tulisan << endl;
	}
	masuk.close();
	keluar.close();
	return 0;
}

Contoh 5: membaca angka baris per baris dan input ouput file ke sub directory tertentu

#include <iostream>
#include <fstream>
#include <string>
#include <Windows.h>
using namespace std;

int main()
{
	ifstream masuk;
	ofstream keluar;
	string FileMasuk;
	string FileKeluar;
	float tulisan;
	SetCurrentDirectoryA("C:\\Users\\silvia\\Videos\\INDO_DATA");
	cout << "masukkan nama file input:";
	cin >> FileMasuk;
	cout << "masukkan nama file hasil:";
	cin >> FileKeluar;
	masuk.open(FileMasuk);
	keluar.open(FileKeluar);
	while (!masuk)
	{
		cout << "input salah, masukkan ulang input file:" << endl;
		cin >> FileMasuk;
		masuk.open(FileMasuk);
		if (masuk)
			break;
	}
	while (masuk>> tulisan)
	{
		tulisan += 20;
		keluar << tulisan << endl;
	}
	masuk.close();
	keluar.close();
	return 0;
}

Note:
Jika kamu tidak menentukan jenis file untuk hasil filenya bisa terbaca menggunakan notepad, wordpad, word, mozilla firefox, google chrome, internet explorer dan suitable program lainnya.
Contoh lengkap: (Bahasa inggris)
In this assignment, you are to write a ROT13 (for “rotate 13”) decoder to translate a secret message from its encoded state to something readable. In a ROT13 code, ‘a’ is shifted 13 letters to ‘n’, ‘B’ to ‘O’, ‘c’ to ‘p’, ‘D’ to ‘Q’, …, ‘N’ to ‘A’, ‘o’ to ‘b’, ‘P’ to ‘C’, ‘q’ to ‘d’, etc.
Only letters are affected; punctuation, spaces, and all other characters remain the same.
Here is a sample ROT13-encoded message to get you started:
“Jurarire V’z nobhg gb qb fbzrguvat, V guvax, ‘jbhyq na vqvbg qb gung?’ Naq vs gurl jbhyq, V qb abg qb gung guvat.”
–Qjvtug Fpuehgr
Answer: berlaku bolak balik

#include <iostream>
#include <fstream>
#include <string>
#include <Windows.h>
using namespace std;

int main()
{
	ifstream masuk;
	ofstream keluar;
	string FileMasuk;
	string FileKeluar;
	char tulisan;
	SetCurrentDirectoryA("C:\\Users\\silvia\\Videos\\INDO_DATA");
	cout << "masukkan nama file input:";
	cin >> FileMasuk;
	cout << "masukkan nama file hasil:";
	cin >> FileKeluar;
	masuk.open(FileMasuk);
	keluar.open(FileKeluar);
	while (!masuk)
	{
		cout << "input salah, masukkan ulang input file:" << endl;
		cin >> FileMasuk;
		masuk.open(FileMasuk);
		if (masuk)
			break;
	}
	while (masuk>>noskipws>> tulisan)
	{
		if (tulisan >= 65 && tulisan <= 77 || tulisan >= 97 && tulisan <= 109)
		{
			tulisan += 13;
		}
		else if (tulisan >= 78 && tulisan <= 90 || tulisan >= 110 && tulisan <= 122)
		{
			tulisan -= 13;
		}
		keluar << tulisan;
	}
	
	masuk.close();
	keluar.close();
	return 0;
}

Ascii code:

http://en.cppreference.com/w/cpp/language/ascii
asci

C++_05: Switch and Continue Statement

Switch

Silahkan nonton penjelasannya di video ini.
Memiliki fungsi yang sama seperti if else statement, tetapi switch lebih focus pada memilih beberapa kondisi, dan tidak di sarankan untuk situasi dimana ilihan kita punya rentang, misalnya 2<x<5. Dalam kasus ini lebih baik menggunkan if else.

Rumus:

switch ( syarat )
case kostan : statement
[default  : statement]
Default digunakan saat semua case tidak terpenuhi.

c05a
c05b
Contoh 1: Keterangan nilai A B C D

#include <iostream>
using namespace std;

int main()
{
	char nilai = 'D';
	cout << "masukkan nilai (huruf kapital):";
	cin >> nilai;
	switch (nilai)
	{
	case 'A':
		cout << "Excellent!" << endl;
		break;
	case 'B':
		cout << "Bagus!" << endl;
		break;
	case 'C':
		cout << "Lulus!" << endl;
		break;
	case 'D':
		cout << "Lulus, tapi disarankan mengulang!" << endl;
		break;
	case 'E':
		cout << "Tidak Lulus!" << endl;
		break;
	default:
		cout << "Input tidak falid!" << endl;
	}
	cout << "nilaimu adalah" << nilai << endl;
	system("pause");
	return 0;
}

Contoh 2

#include <iostream>
using namespace std;

int main()
{
	char letter;
	cout << "masukkan huruf (kapital):";
	cin >> letter;
	cout << "Kata sandinya: ";
	switch (letter)
	{
	case 'A': cout << "Alpha"<<endl;
		break;
	case 'B': cout << "Bravo" << endl;
		break;
	case 'C': cout << "Charlie" << endl;
		break;
	case 'D': cout << "Delta" << endl;
		break;
	case 'E': cout << "Echo" << endl;
		break;
	case 'F': cout << "Foxtrot" << endl;
		break;
	case 'G': cout << "Golf" << endl;
		break;
	case 'H': cout << "Hotel" << endl;
		break;
	case 'I': cout << "India" << endl;
		break;
	case 'J': cout << "Juliet" << endl;
		break;
	case 'K': cout << "Kilo" << endl;
		break;
	case 'L': cout << "Lima" << endl;
		break;
	case 'M': cout << "Mike" << endl;
		break;
	case 'N': cout << "November" << endl;
		break;
	case 'O': cout << "Oscar" << endl;
		break;
	case 'P': cout << "Papa" << endl;
		break;
	case 'Q': cout << "Quebec" << endl;
		break;
	case 'R': cout << "Romeo" << endl;
		break;
	case 'S': cout << "Sierra" << endl;
		break;
	case 'T': cout << "Tango" << endl;
		break;
	case 'U': cout << "Unifor" << endl;
		break;
	case 'V': cout << "Victor" << endl;
		break;
	case 'W': cout << "Whiskey" << endl;
		break;
	case 'X': cout << "X-ray" << endl;
		break;
	case 'Y': cout << "Yankee" << endl;
		break;
	case 'Z': cout << "Zulu" << endl;
	default:
		cout << "salah input" << endl;

	}
	system ("pause");
	return 0;
}

Continue:
Jump statement, melompati suatu step dalam loop
Contoh 1

#include <iostream>
using namespace std;

int main()
{
	int awal;
	int akhir;
	int lompat;
	cout << "masukkan angka awal:\n";
	cin >> awal;
	cout << "masukkan angka akhir:\n";
	cin >> akhir;
	cout << "lompati:";
	cin >> lompat;
	for (int n = awal; n<=akhir; n++)
	{
		if (n == lompat) continue;
		cout << n << ", ";
	}
	system("pause");
	return 0;
}

Contoh lengkap:Contoh vending mesin sederhana tanpa kembalian

#include <iostream>
#include <iomanip> 
using namespace std;

int main()
{
	int aqua = 1;
	int HAqua = 5000;
	int cola = 1;
	int Hcola = 7000;
	int fanta = 1;
	int Hfanta = 6000;
	int saldo = 0;
	char input = 'x';
	cout << "Vending Mesin minuman tanpa kembalian\n"
		<< "Harga Aqua =		Rp " << HAqua << setw(5) << " Stok Aqua:" << aqua << "\n"
		<< "Harga Cola-cola =	Rp " << Hcola << setw(5) << " Stok Cola-cola:" << cola << "\n"
		<< "Harga Fanta =		Rp " << Hfanta << setw(5) << "Stok Fanta:" << fanta << "\n \n";
	cout << "Menu:\n"
		<< "1	=	masukkan uang seribu\n"
		<< "2	=	masukkan uang Limaribu\n"
		<< "3	=	masukkan uang Sepuluh ribu\n"
		<< "A	=	pilih aqua\n"
		<< "C	=	pilih Coca-cola\n"
		<< "F	=	pilih Fanta\n"
		<< "Q	=	Keluar\n"
		<< "P	=	Panggil Petugas untuk isi ulang!!" << endl;
	while (input != 'Q')
	{
		cout << "masukkan inpput:" << endl;
		cin >> input;
		switch (input)
		{
		case'1':
			saldo += 1000;
			cout << "saldo anda sekarang:" << saldo << endl;
			break;
		case'2':
			saldo += 5000;
			cout << "saldo anda sekarang:" << saldo << endl;
			break;
		case'3':
			saldo += 10000;
			cout << "saldo anda sekarang:" << saldo << endl;
			break;
		case'A':
			if (saldo >= 5000 && aqua > 0)
			{
				saldo -= HAqua;
				cout << "silahkan ambil Aqua, dan saldo anda Rp " << saldo << endl;
				aqua -= 1;
			}
			else
			{
				cout << "saldo anda Rp " << saldo;
				cout << "	Stok Aqua		" << aqua << endl;
			}
			break;
		case'F':
			if (saldo >= 6000 && fanta > 0)
			{
				saldo -= Hfanta;
				cout << "silahkan ambil fanta, dan saldo anda Rp " << saldo << endl;
				fanta -= 1;
			}
			else
			{
				cout << "saldo anda Rp " << saldo;
				cout << "	Stok Fanta		" << fanta << endl;
			}
			break;
		case'C':
			if (saldo >= 7000 && cola > 0)
			{
				saldo -= Hcola;
				cout << "silahkan ambil Coca-cola, dan saldo anda Rp " << saldo << endl;
				cola -= 1;
			}
			else
			{
				cout << "saldo anda Rp " << saldo;
				cout << "	Stok Coca-cola	" << cola << endl;
			}
			break;
		case'P':
			aqua = 10; cola = 10; fanta = 10;
			cout << "Stok Aqua		=" << aqua << endl;
			cout << "Stok Coca-cola		=" << cola << endl;
			cout << "Stok Fanta		=" << fanta << endl;
			break;
		case 'Q':
			cout << "Terima kasih sudah berbelanja di sini, Bye!!!";
			break;
		default:
			cout << "salah input" << endl;
		}
	}
	system("pause");
	return 0;
}

C++_04: Looping

Dalam pemrograman komputer, looping menyebabkan bagian tertentu dari program untuk dieksekusi sejumlah kali.
Beberapa skenario looping:

  • Anda ingin mengeksekusi beberapa kode / nomor tertentu.
  • Anda ingin mengeksekusi beberapa kode / s sejumlah kali tergantung pada masukan dari pengguna .

Ada 3 jenis loop dalam C ++ Programming :

  • while Loop
  • do.. while Loop
  • for Loop

C++ while Loop

Video While loop klik di sini.
While loop memeriksa apakah test expression itu benar atau tidak . Jika benar , kode dalam tubuh while dieksekusi , yaitu, kode dalam kurung { }. Hal ini akna teru sberulang sampai test expression tidak benar lagi/ salah.
Syntax of while Loop
while (test expression) {     pernyataan untuk di eksekusi. }
loop1

Contoh 1:

 #include <iostream>
using namespace std;

int main()
{
	// storage variable
	int a = 10;
		// while loop execution
	while (a < 20)
	{
		cout << "value of a: " << a << endl;
		a++;
	}
	system("pause");
	return 0;
}

Contoh 2:

#include <iostream>
using namespace std;

int main()
{
	int input; //Istorage unutk inout
	bool valid_input = false; 
	while (!valid_input) 
		cout << "Enter a number between 1 and 50: ";
		cin >> input;
		if (input >= 1 && input <= 50) 
		{
			valid_input = true;//Set 'valid_input' true untuk stop looping
		}
	}
	system("pause");
	return 0;
}

Contoh 3: Faktorial

#include <iostream>
using namespace std;

int main() {
	int number, i = 1, factorial = 1;
	cout << "Enter a positive integer: ";
	cin >> number;
		while (i <= number) {
		factorial = factorial*i;;      //sama dengan factorial *= i;      
		++i;
	}
	cout << "Factorial of " << number << " = " << factorial<< endl;
	system("pause");
	return 0;
}

Contoh 4:

#include <iostream>
using namespace std;

int main()
{
	int age = 0;
	while (age <= 130)
	{
		cout << "umur?";
		cin >> age;
		if (age < 16)
		{
			cout << "blm bisa mandiri \n";
		}
		else if (age == 16 || age == 17)
		{
			cout << "ikut pemilu \n";
		}
		else if (age >= 18 && age <= 24)
		{
			cout << "dapat pinjam uang ke bank \n";
		}
		else if (age >= 25 && age <= 130)
		{
			cout << "dapat melakukan bxk hal \n";
		}
		else
		{
			cout << "kamu hantu, stop!!!";
		}
	}
	system("pause");
	return 0;
}

C++ do…. while loop
Video do.. While loop klik di sini.
Mirip seperti while loop, tetepi di do.. while loop, pernyataan dalam tubuh while loop ({…}) akan dieksekusi minimal sekali.
loop2
Syntax do…while Loop
do {   pernyataan;}while (test expression);
Contoh 1:

#include <iostream>
using namespace std;

int main()
{
	int a = 10;
	// do loop execution
	do
	{
		cout << "value of a: " << a << endl;
		a = a + 1;
	} while (a < 20);
	system("pause");
	return 0;
}

Contoh 2:

#include <iostream>
#include <algorithm>
#include <string>
using namespace std;

int main()
{
	string s = "aba";
	sort(s.begin(), s.end());
		do
		{
			cout << s << endl;
		} while (next_permutation(s.begin(),s.end()));
		system("pause");
		return 0;
}

Contoh 3:

#include <iostream>
#include <algorithm>
#include <string>
using namespace std;

int main()
{
	string s;
	cout << "masukkan kata:";
	cin >> s;
	sort(s.begin(), s.end());
	cout << "permutasi dari " << s << "=\n";
		do
		{
			cout << s << endl;
		} while (next_permutation(s.begin(),s.end()));
		system("pause");
		return 0;
}

 C++ for Loop
Video do.. While loop klik di sini.
Pernyataan inisialisasi dijalankan hanya sekali pada awal untuk loop. Maka ekspresi expression test oleh program. Jika ekspresi uji adalah tidak benar, maka loop diakhiri. Tetapi jika expression test benar maka dalam tubuh untuk loop dieksekusi dan kemudian diperbarui sesuai syarat dalam expression test. Proses ini berulang sampai ekspresi uji adalah tidak benar.
Syntax
for( initial; syarat/ kondisi; rumus/equation){   Pernyataan;}
loop3

Contoh 1:

#include <iostream>
using namespace std;

int main()
{
	for (int i = 0; i < 10; i = 1 + 2 * i)
	{
		cout << "angkanya: " << i << endl;
	}
	system("pause");
	return 0;
}

Contoh 2:

#include <iostream>
using namespace std;
int main()
{
	for (int i = 0; i < 10; i++)
	{
		cout << "hello" << endl;
		cout << "apa kabar" << endl;
	}
	system("pause");
	return 0;
}

Contoh 3:list angka selang 5 angka

#include <iostream>
using namespace std;
int main()
{
	for (int angka = 0; angka <= 50;angka+=5)
	{
		cout << angka << ",";
	}
	cout << endl;
	system("pause");
	return 0;
}

Contoh 4:faktorial

#include <iostream>
using namespace std;

int main()
{
	int a;
	int factorial;
	cout << "masukkan nilai:";
	cin >> a;
	for (int i = 1; i < a; i++)
		{
			factorial = a * i;
			
		}
	cout << "faktorial=" << factorial << endl;
		system("pause");
		return 0;
}

contoh 5: membaca bilangan dalam vektor

#include <iostream>
#include <vector>
using namespace std;

int main() 
{
	vector <int> v = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
	for (auto nilai = v.begin(); nilai != v.end(); nilai += 2)
	{
		cout << *nilai << ' ';
	}
	cout << "\n";
	system("pause");
	return 0;
}