# =============================================
# Exercise A - Normal Distribution
# Simpson's 1/3 Rule with n = 4
# =============================================

# Fungsi PDF Standard Normal
f <- function(x) {
  1 / sqrt(2 * pi) * exp(-x^2 / 2)
}

# Parameter
a <- 0
b <- 1
n <- 4 # harus genap
h <- (b - a) / n

# Titik-titik x
x <- seq(a, b, length.out = n + 1)

# Hitung f(x) di setiap titik
y <- f(x)

# Simpson's 1/3 Rule
simpson <- (h / 3) * (y[1] + 4 * sum(y[seq(2, n, by = 2)]) +  2 * sum(y[seq(3, n-1, by = 2)]) + y[n+1])

# Hasil
cat("=== HASIL SIMPSON'S 1/3 RULE (n=4) ===\n")
=== HASIL SIMPSON'S 1/3 RULE (n=4) ===
cat("Approksimasi P(0 ≤ X ≤ 1) =", simpson, "\n\n")
Approksimasi P(0 ≤ X ≤ 1) = 0.3413555 
# Nilai eksak menggunakan pnorm (untuk perbandingan)
exact <- pnorm(1) - pnorm(0)
cat("Nilai eksak (pnorm(1) - pnorm(0)) =", exact, "\n")
Nilai eksak (pnorm(1) - pnorm(0)) = 0.3413447 
cat("Error absolut =", abs(simpson - exact), "\n")
Error absolut = 1.074179e-05 
cat("Error relatif (%) =", abs(simpson - exact)/exact * 100, "%\n")
Error relatif (%) = 0.003146903 %
# =============================================
# Exercise B - Exponential Distribution
# Trapezoidal Rule & Simpson's 1/3 Rule (n=10)
# =============================================

# Fungsi PDF Exponential (λ=1)
f <- function(x) {
  exp(-x)
}

# Parameter
a <- 0
b <- 2
n <- 10 # harus genap
h <- (b - a) / n

# Titik-titik x dan nilai f(x)
x <- seq(a, b, length.out = n + 1)
y <- f(x)

# ======================
# 1. Trapezoidal Rule
# ======================
trapezoidal <- (h/2) * (y[1] + 2 * sum(y[2:n]) + y[n+1])

# ======================
# 2. Simpson's 1/3 Rule
# ======================
simpson <- (h/3) * (y[1] + 4 * sum(y[seq(2, n, by = 2)]) + 2 * sum(y[seq(3, n-1, by = 2)]) + y[n+1])

# ======================
# Hasil dan Perbandingan
# ======================
exact <- 1 - exp(-2)   # nilai eksak dari integral

cat("=== HASIL PERHITUNGAN n = 10 ===\n")
=== HASIL PERHITUNGAN n = 10 ===
cat("Trapezoidal Rule :", trapezoidal, "\n")
Trapezoidal Rule : 0.867545 
cat("Simpson's 1/3 Rule :", simpson, "\n")
Simpson's 1/3 Rule : 0.8646724 
cat("Nilai Eksak (1 - e^{-2}) :", exact, "\n\n")
Nilai Eksak (1 - e^{-2}) : 0.8646647 
cat("Error Trapezoidal :", abs(trapezoidal - exact), "\n")
Error Trapezoidal : 0.002880296 
cat("Error Simpson :", abs(simpson - exact), "\n")
Error Simpson : 7.649462e-06 
cat("Error relatif Trapezoidal (%):", abs(trapezoidal - exact)/exact * 100, "%\n")
Error relatif Trapezoidal (%): 0.3331113 %
cat("Error relatif Simpson (%) :", abs(simpson - exact)/exact * 100, "%\n")
Error relatif Simpson (%) : 0.0008846738 %

```

LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQoNCg0KYGBge3J9DQojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KIyBFeGVyY2lzZSBBIC0gTm9ybWFsIERpc3RyaWJ1dGlvbg0KIyBTaW1wc29uJ3MgMS8zIFJ1bGUgd2l0aCBuID0gNA0KIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCg0KIyBGdW5nc2kgUERGIFN0YW5kYXJkIE5vcm1hbA0KZiA8LSBmdW5jdGlvbih4KSB7DQogIDEgLyBzcXJ0KDIgKiBwaSkgKiBleHAoLXheMiAvIDIpDQp9DQoNCiMgUGFyYW1ldGVyDQphIDwtIDANCmIgPC0gMQ0KbiA8LSA0ICMgaGFydXMgZ2VuYXANCmggPC0gKGIgLSBhKSAvIG4NCg0KIyBUaXRpay10aXRpayB4DQp4IDwtIHNlcShhLCBiLCBsZW5ndGgub3V0ID0gbiArIDEpDQoNCiMgSGl0dW5nIGYoeCkgZGkgc2V0aWFwIHRpdGlrDQp5IDwtIGYoeCkNCg0KIyBTaW1wc29uJ3MgMS8zIFJ1bGUNCnNpbXBzb24gPC0gKGggLyAzKSAqICh5WzFdICsgNCAqIHN1bSh5W3NlcSgyLCBuLCBieSA9IDIpXSkgKyAgMiAqIHN1bSh5W3NlcSgzLCBuLTEsIGJ5ID0gMildKSArIHlbbisxXSkNCg0KIyBIYXNpbA0KY2F0KCI9PT0gSEFTSUwgU0lNUFNPTidTIDEvMyBSVUxFIChuPTQpID09PVxuIikNCmNhdCgiQXBwcm9rc2ltYXNpIFAoMCDiiaQgWCDiiaQgMSkgPSIsIHNpbXBzb24sICJcblxuIikNCg0KIyBOaWxhaSBla3NhayBtZW5nZ3VuYWthbiBwbm9ybSAodW50dWsgcGVyYmFuZGluZ2FuKQ0KZXhhY3QgPC0gcG5vcm0oMSkgLSBwbm9ybSgwKQ0KY2F0KCJOaWxhaSBla3NhayAocG5vcm0oMSkgLSBwbm9ybSgwKSkgPSIsIGV4YWN0LCAiXG4iKQ0KY2F0KCJFcnJvciBhYnNvbHV0ID0iLCBhYnMoc2ltcHNvbiAtIGV4YWN0KSwgIlxuIikNCmNhdCgiRXJyb3IgcmVsYXRpZiAoJSkgPSIsIGFicyhzaW1wc29uIC0gZXhhY3QpL2V4YWN0ICogMTAwLCAiJVxuIikNCmBgYA0KDQoNCmBgYHtyfQ0KIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiMgRXhlcmNpc2UgQiAtIEV4cG9uZW50aWFsIERpc3RyaWJ1dGlvbg0KIyBUcmFwZXpvaWRhbCBSdWxlICYgU2ltcHNvbidzIDEvMyBSdWxlIChuPTEwKQ0KIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCg0KIyBGdW5nc2kgUERGIEV4cG9uZW50aWFsICjOuz0xKQ0KZiA8LSBmdW5jdGlvbih4KSB7DQogIGV4cCgteCkNCn0NCg0KIyBQYXJhbWV0ZXINCmEgPC0gMA0KYiA8LSAyDQpuIDwtIDEwICMgaGFydXMgZ2VuYXANCmggPC0gKGIgLSBhKSAvIG4NCg0KIyBUaXRpay10aXRpayB4IGRhbiBuaWxhaSBmKHgpDQp4IDwtIHNlcShhLCBiLCBsZW5ndGgub3V0ID0gbiArIDEpDQp5IDwtIGYoeCkNCg0KIyA9PT09PT09PT09PT09PT09PT09PT09DQojIDEuIFRyYXBlem9pZGFsIFJ1bGUNCiMgPT09PT09PT09PT09PT09PT09PT09PQ0KdHJhcGV6b2lkYWwgPC0gKGgvMikgKiAoeVsxXSArIDIgKiBzdW0oeVsyOm5dKSArIHlbbisxXSkNCg0KIyA9PT09PT09PT09PT09PT09PT09PT09DQojIDIuIFNpbXBzb24ncyAxLzMgUnVsZQ0KIyA9PT09PT09PT09PT09PT09PT09PT09DQpzaW1wc29uIDwtIChoLzMpICogKHlbMV0gKyA0ICogc3VtKHlbc2VxKDIsIG4sIGJ5ID0gMildKSArIDIgKiBzdW0oeVtzZXEoMywgbi0xLCBieSA9IDIpXSkgKyB5W24rMV0pDQoNCiMgPT09PT09PT09PT09PT09PT09PT09PQ0KIyBIYXNpbCBkYW4gUGVyYmFuZGluZ2FuDQojID09PT09PT09PT09PT09PT09PT09PT0NCmV4YWN0IDwtIDEgLSBleHAoLTIpICAgIyBuaWxhaSBla3NhayBkYXJpIGludGVncmFsDQoNCmNhdCgiPT09IEhBU0lMIFBFUkhJVFVOR0FOIG4gPSAxMCA9PT1cbiIpDQpjYXQoIlRyYXBlem9pZGFsIFJ1bGUgOiIsIHRyYXBlem9pZGFsLCAiXG4iKQ0KY2F0KCJTaW1wc29uJ3MgMS8zIFJ1bGUgOiIsIHNpbXBzb24sICJcbiIpDQpjYXQoIk5pbGFpIEVrc2FrICgxIC0gZV57LTJ9KSA6IiwgZXhhY3QsICJcblxuIikNCg0KY2F0KCJFcnJvciBUcmFwZXpvaWRhbCA6IiwgYWJzKHRyYXBlem9pZGFsIC0gZXhhY3QpLCAiXG4iKQ0KY2F0KCJFcnJvciBTaW1wc29uIDoiLCBhYnMoc2ltcHNvbiAtIGV4YWN0KSwgIlxuIikNCmNhdCgiRXJyb3IgcmVsYXRpZiBUcmFwZXpvaWRhbCAoJSk6IiwgYWJzKHRyYXBlem9pZGFsIC0gZXhhY3QpL2V4YWN0ICogMTAwLCAiJVxuIikNCmNhdCgiRXJyb3IgcmVsYXRpZiBTaW1wc29uICglKSA6IiwgYWJzKHNpbXBzb24gLSBleGFjdCkvZXhhY3QgKiAxMDAsICIlXG4iKQ0KYGBgDQoNCg0KDQpgYGANCg0K