# ---------- 1. Simpangan baku tanpa sd ----------
simpangan_baku <- function(x) {
n <- length(x)
jumlah <- 0
for (v in x) jumlah <- jumlah + v
rata <- jumlah / n
jkw <- 0
for (v in x) jkw <- jkw + (v - rata)^2
sqrt(jkw / (n - 1))
}
# ---------- 2. Indeks kemunculan terakhir nilai maksimum ----------
cari_idx_maks_terakhir <- function(A) {
idx <- 1
for (i in seq_along(A)[-1]) {
if (A[i] >= A[idx]) idx <- i # sebelumnya: >
}
idx
}
# ---------- 3. Maks dan min dalam satu traversal ----------
maks_min_sekaligus <- function(A) {
maks <- A[1]; mn <- A[1]; banding <- 0
for (i in seq_along(A)[-1]) {
banding <- banding + 1
if (A[i] > maks) {
maks <- A[i]
} else {
banding <- banding + 1
if (A[i] < mn) mn <- A[i]
}
}
list(maks = maks, min = mn, banding = banding)
}
# ---------- 4. Kenaikan harian terbesar DAX ----------
kenaikan_terbesar <- function(dax) {
n <- length(dax)
terbesar <- dax[2] - dax[1]
hari <- 2
for (i in 3:n) {
sel <- dax[i] - dax[i - 1]
if (sel > terbesar) {
terbesar <- sel
hari <- i
}
}
list(hari = hari, kenaikan = terbesar)
}
# ---------- 5. Jumlah & rata-rata per kolom ----------
jumlah_rata_kolom <- function(M) {
baris <- nrow(M); kolom <- ncol(M)
jml <- numeric(kolom); rata <- numeric(kolom)
for (j in 1:kolom) {
for (i in 1:baris) jml[j] <- jml[j] + M[i, j]
rata[j] <- jml[j] / baris
}
minggu_maks <- 1
for (j in 2:kolom) if (jml[j] > jml[minggu_maks]) minggu_maks <- j
list(jumlah = jml, rata = rata, minggu_maks = minggu_maks)
}
# ======================= JALANKAN =======================
cat("=== 1. Simpangan baku ===\n")
## === 1. Simpangan baku ===
nilai <- c(70, 85, 60, 90, 75) # GANTI dengan data UTS contoh 1.2
print(simpangan_baku(nilai))
## [1] 11.93734
cat("\n=== 2. Kemunculan terakhir maksimum ===\n")
##
## === 2. Kemunculan terakhir maksimum ===
print(cari_idx_maks_terakhir(c(3, 7, 2, 7)))
## [1] 4
cat("\n=== 3. MaksMinSekaligus ===\n")
##
## === 3. MaksMinSekaligus ===
A <- c(5, 4, 3, 2, 1) # kasus terburuk (menurun)
print(maks_min_sekaligus(A))
## $maks
## [1] 5
##
## $min
## [1] 1
##
## $banding
## [1] 8
cat("2n - 2 =", 2 * length(A) - 2, "\n")
## 2n - 2 = 8
cat("\n=== 4. Kenaikan harian terbesar DAX ===\n")
##
## === 4. Kenaikan harian terbesar DAX ===
data(EuStockMarkets)
dax <- EuStockMarkets[, "DAX"]
hasil <- kenaikan_terbesar(dax)
cat("Hari ke-", hasil$hari, "kenaikan:", hasil$kenaikan, "\n")
## Hari ke- 1653 kenaikan: 160.97
d <- diff(dax) # cara ringkas, hasil harus sama
cat("Cek diff: hari ke-", which.max(d) + 1, "kenaikan:", max(d), "\n")
## Cek diff: hari ke- 1653 kenaikan: 160.97
cat("\n=== 5. Matriks penjualan 3 toko x 4 minggu ===\n")
##
## === 5. Matriks penjualan 3 toko x 4 minggu ===
M <- matrix(c(12, 15, 9, 20,
10, 14, 11, 18,
13, 16, 10, 22), nrow = 3, byrow = TRUE) # GANTI dengan data Anda
h <- jumlah_rata_kolom(M)
print(h)
## $jumlah
## [1] 35 45 30 60
##
## $rata
## [1] 11.66667 15.00000 10.00000 20.00000
##
## $minggu_maks
## [1] 4
cat("Cek: colSums =", colSums(M), "| colMeans =", colMeans(M), "\n")
## Cek: colSums = 35 45 30 60 | colMeans = 11.66667 15 10 20
cat("\n=== 6. Padanan [[0]*3]*3 di R ===\n")
##
## === 6. Padanan [[0]*3]*3 di R ===
m <- matrix(0, nrow = 3, ncol = 3)
m[1, 1] <- 99
print(m) # hanya [1,1] yang berubah
## [,1] [,2] [,3]
## [1,] 99 0 0
## [2,] 0 0 0
## [3,] 0 0 0
l <- rep(list(c(0, 0, 0)), 3)
l[[1]][1] <- 99
print(l) # hanya list pertama yang berubah
## [[1]]
## [1] 99 0 0
##
## [[2]]
## [1] 0 0 0
##
## [[3]]
## [1] 0 0 0