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
Fungsi adalah mekanisme untuk mengubah input yang diberikan menjadi output. Temuan nol adalah tentang pergi ke arah lain: diberi nilai output, temukan input yang sesuai. Sebagai contoh, perhatikan fungsi eksponensial \(e^x\). Dengan masukan spesifik, katakanlah \(x=2.135\) maka anda dapat dengan mudah menghitung output yang sesuai:
exp(2.135)
## [1] 8.457047
## [1] 8.457047
Tetapi anggaplah informasi yang Anda miliki adalah dalam bentuk output dari fungsi, katakanlah \(e^{x_0} = 4.93\). Kami tidak (belum) tahu \(x_0\) Tapi, apa pun itu, kita tahu itu \(e^{x_0}\) akan menghasilkan nilai 4,93.
Bagaimana Anda menemukan input spesifik \(x_0\) yang akan menghasilkan output itu? Jawaban yang biasanya disajikan di sekolah menengah adalah menerapkan fungsi lain, \(ln()\), ke output:
log(4.93)
## [1] 1.595339
## [1] 1.595339
Untuk mengonfirmasi bahwa hasil 1,595339 sudah benar, terapkan fungsi eksponensial padanya dan periksa apakah outputnya sama dengan aslinya, yang diberikan output 4,93.
exp(1.595339)
## [1] 4.93
## [1] 4.93
Proses ini bekerja karena kita kebetulan memiliki fungsi di tangan, logaritma, yang diatur dengan sempurna untuk “membatalkan” aksi fungsi eksponensial. Di sekolah menengah, Anda belajar beberapa pasangan fungsi / terbalik: dan seperti yang baru saja Anda lihat, dan , akar kuadrat dan kuadrat, dll.\(exp()\)\(log()\)\(sin()\)\(arcsin()\).
Situasi lain yang biasanya dibahas di sekolah menengah adalah membalikkan fungsi polinomial tingkat rendah. Misalnya, fungsi pemodelan Anda adalah \(g(x) \equiv 4 - 2x + x^2\) dan Anda mencari \(x_0\) sedemikian rupa sehingga \(g(x)=3\). Siswa sekolah menengah diajarkan untuk mendekati masalah tersebut dalam suatu proses menggunakan rumus kuadrat. Untuk menerapkan rumus kuadrat, Anda perlu menempatkan masalah ke dalam format standar, bukan
\[4 - 2x + x^2 = 3\]
tapi
\[x^2 - 2\, x + 1 = 0\]Salah satu alasan mengapa polinomial orde rendah populer dalam pemodelan adalah karena operasi semacam itu sangat mudah.
Jika tidak ada pendekatan sekolah menengah yang cocok untuk fungsi pemodelan Anda, seperti yang sering terjadi, Anda masih dapat melakukan operasi pencarian nol.
f <- makeFun(x^2+2*x+1 ~ x)
Zeros(f(x) - 0 ~ x, bounds(x=-50:50))
## # A tibble: 0 × 2
## # ℹ 2 variables: x <lgl>, .output. <dbl>
slice_plot(f(x) ~ x, bounds(x=-50:50)) %>%
gf_hline(yintercept = ~ 0, color="blue")