BAB 4 Pemecahan 4.1 Fungsi VS Persamaan 4.1.1 Kita memiliki sebuah fungsi f(x). Bentuk fungsinya berupa f dan nilai keluarannya adalah y untuk beberapa nilai input yang tidak diketahui oleh nilai input x. Lalu kita harus mencari input x diberikan kepada fungsi f dan nilai keluarannya berupa y.

Untuk menyelesaikan masalah ini, kita dapat mencari invers dari f.ย Kita dapat mudah menemukan nol jika kita dapat merencanakan fungsinya f(x) untuk berbagai x. Perhatikan fungsi g() berikut ini.

library(mosaicCalc)
## Loading required package: mosaicCore
## Loading required package: Deriv
## Loading required package: Ryacas
## 
## Attaching package: 'Ryacas'
## The following object is masked from 'package:stats':
## 
##     integrate
## The following objects are masked from 'package:base':
## 
##     %*%, diag, diag<-, lower.tri, upper.tri
## Registered S3 method overwritten by 'mosaic':
##   method                           from   
##   fortify.SpatialPolygonsDataFrame ggplot2
## 
## Attaching package: 'mosaicCalc'
## The following object is masked from 'package:stats':
## 
##     D
g <- makeFun(sin(x^2)*cos(sqrt(x^4 + 3 )-x^2) - x + 1 ~ x)
slice_plot(g(x) ~ x, domain(x = -3:3)) %>%
  gf_hline(yintercept  = 0, color = "red")

Anda bisa mendapatkan lebih banyak detail dengan memperbesar sekitar solusi perkiraan:

slice_plot(g(x) ~ x, domain(x=1:2)) %>%
  gf_hline(yintercept = 0, color = "red")

library(mosaic)
## 
## 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

Anda dapat membiarkan perangkat lunak melakukan ini untuk Anda:

findZeros(g(x) ~ x, xlim = range(1, 2))
##        x
## 1 1.5576

Anda hanya perlu memiliki gambaran kasar tentang di mana solusinya. Sebagai contoh:

findZeros(g(x) ~ x, xlim = range(-1000,  1000))
##        x
## 1 1.5576

4.1.2 Beberapa Solusi Fungsi findZeros( ) akan mencoba menemukan beberapa solusi yang ada. Misalnya persamaan sin x = 0,35 memiliki solusi yang tak terbatas. Contohnya :

library(mosaic)
findZeros( sin(x) - 0.35 ~ x, xlim=range(-20,20) )
##           x
## 1  -12.2088
## 2   -9.7823
## 3   -5.9256
## 4   -3.4991
## 5    0.3576
## 6    2.7840
## 7    6.6407
## 8    9.0672
## 9   12.9239
## 10  15.3504

4.1.3 Menyiapkan Masalah Dapat dilihat dari namanya, findZeros( ) akan menemukan fungsi nol. Kita dapat mengatur masalah solusi apapun dalam findZeros( ). Taoi, ada aturan untuk findZeros( ). yakni :

g <- makeFun(4 + exp(k*t) - 2^(b*t) ~ b, k=0.00035, t=1)
findZeros( g(b) ~ b , xlim=range(-1000, 1000) )
##       b
## 1 2.322

Fungsi findZeros( ) tidak mengetahui aturan aljabar. Kita dapat mencoba nilai dari t untuk memastikan bahwa t tdiak bermasalah.

findZeros( g(b, t=2) ~ b, xlim=range(-1000,1000) )
##        b
## 1 1.1611