library(mosaicCalc)
## Loading required package: mosaic
## Registered S3 method overwritten by 'mosaic':
## method from
## fortify.SpatialPolygonsDataFrame ggplot2
##
## The 'mosaic' package masks several functions from core packages in order to add
## additional features. The original behavior of these functions should not be affected by this.
##
## Attaching package: 'mosaic'
## The following objects are masked from 'package:dplyr':
##
## count, do, tally
## The following object is masked from 'package:Matrix':
##
## mean
## The following object is masked from 'package:ggplot2':
##
## stat
## The following objects are masked from 'package:stats':
##
## binom.test, cor, cor.test, cov, fivenum, IQR, median, prop.test,
## quantile, sd, t.test, var
## The following objects are masked from 'package:base':
##
## max, mean, min, prod, range, sample, sum
## Loading required package: mosaicCore
##
## Attaching package: 'mosaicCore'
## The following objects are masked from 'package:dplyr':
##
## count, tally
## The legacy packages maptools, rgdal, and rgeos, underpinning the sp package,
## which was just loaded, will retire in October 2023.
## Please refer to R-spatial evolution reports for details, especially
## https://r-spatial.org/r/2023/05/15/evolution4.html.
## It may be desirable to make the sf package available;
## package maintainers should consider adding sf to Suggests:.
## The sp package is now running under evolution status 2
## (status 2 uses the sf package in place of rgdal)
##
## Attaching package: 'mosaicCalc'
## The following object is masked from 'package:stats':
##
## D
Optimisasi adalah konsep di mana kita mencari nilai maksimum atau minimum dari suatu fungsi. Nilai maksimum merupakan nilai tertinggi yang dapat dicapai dalam suatu grafik fungsi atau juga bisa dibilang bahwa nilai maksimum merupakan nilai dari puncak tertinggi di dalam suatu fungsi . Sebaliknya, nilai minimum adalah nilai terendah yang didapat dari suatu grafik fungsi atau titik terdalam dari lembah suatu grafik fungsi.
Contoh dari optimisasi adalah sebagai berikut.
Sebelum menuju ke optimisasi, siapkan terlebih dahulu sebuah fungsi seperti
\[2x^3 - 5x^2 + 3x - 10\] Untuk menyimpan fungsi tersebut dalam Rstudio adalah sebagai berikut.
f <- function(x) {
return(2 * x^3 - 5 * x^2 + 3 * x - 10)
}
Setelah membuat fungsi, selanjutnya membuat batasan untuk grafik yang akan menampilkan fungsi tersebut. Untuk memberikan batasan seperti berikut.
batas <- -5:5
maksud dari kode di atas adalah \(batas\) merupakan sebuah nama variabel yang akan menyimpan data -5:5 atau dari angka -5 sampai 5. Variabel \(batas\) ini nantinya berfungsi untuk membatasi grafik yang akan dibuat dari fungsi di atas.
Setelah itu, membuat sebuah data frame yang berfungsi untuk menyimpan data dalam bentuk kolom - kolom yang berbeda yang disana terdapat nilai-nilai \(x\) dan hasil dari fungsi \(f(x)\).
data <- data.frame(x = batas, f = f(batas))
data.frame() ini adalah bentuk kode untuk membuat sebuah data frame yang mirip dengan tabel yang dapat menyimpan data. x = batas ini menyatakan bahwa pada kolom \(x\) nantinya akan diisi oleh nilai batas yaitu -5:5 atau rentang dari angka -5 sampai angka 5. f = f(batas) ini menjelaskan kolom \(f(x)\) dalam data frame akan diisi dengan hasil dari fungsi \(f(batas)\).
Selanjutnya adalah untuk menemukan nilai maksimum dan nilai minimum pada fungsi \(f(x)\). Untuk pencarian nilai minimun dan maksimum pada Rstudio sebagai berikut.
result <- argM(f(x) ~ x, bounds(x = -5 : 5))
print(result)
## # A tibble: 2 × 3
## x .output. concavity
## <dbl> <dbl> <dbl>
## 1 -5.00 -400. 1
## 2 5.00 130. -1
\(result\) di atas merupakan sebuah variabel yang diisi nilai minimun dan maksimum dari fungsi \(f(x)\). Untuk \(argM(f(x) ~ x, bounds(x = -5 : 5))\) ini berfungsi untuk menemukan nilai minimun dan maksimum dari fungsi \(f(x)\) dengan batasan x = -5:5 atau secara singkat batasan kiri adalah -5 dan batasan kanan adalah 5.
Kemudian, membuat grafik fungsi \(f(x)\).
p <- slice_plot(f(x) ~ x, bounds(x = -5:5))
Di sini \(p\) adalah variabel yang menyimpan grafik dari fungsi \(f(x)\). Sedangkan \(slice_plot(f(x) ~ x, bounds(x = -5:5))\) adalah barisan kode yang berfungsi untuk membuat grafik fungsi \(f(x)\).
Selanjutnya adalah menampilkan grafik fungsi \(f(x)\) sekaligus nilai minimum dan nilai maksimumnya. Untuk menampilkan grafik fungsinya sebagai berikut.
p + geom_vline(xintercept = batas[which.min(data$f)], color = "red", linetype = "dotted") + geom_vline(xintercept = batas[which.max(data$f)], color = "purple", linetype = "dotted")