Bab 4 Pemecahan 4.1 Fungsi vs persamaan 4.1.1 Dari Persamaan ke Nol Fungsi Sebagai ilustrasi, perhatikan fungsi g()
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
##
## 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 dapat melihat dengan cukup mudah bahwa fungsi melintasi y sumbu suatu tempat antara x=1 dan x=2 . Anda bisa mendapatkan lebih banyak detail dengan memperbesar perkiraan solusi:
library(mosaicCalc)
slice_plot(g(x) ~ x, domain(x=1:2)) %>%
gf_hline(yintercept = 0, color = "red")
Persimpangannya kira-kira x≈1.6 . Anda tentu saja dapat memperbesar
lebih jauh untuk mendapatkan perkiraan yang lebih baik. Atau, Anda dapat
membiarkan perangkat lunak melakukan ini untuk Anda:
library(mosaicCalc)
findZeros(g(x) ~ x, xlim = range(1, 2))
## x
## 1 1.5576
rgumen xlimdigunakan untuk menyatakan di mana harus mencari solusi. (Karena bug perangkat lunak, itu selalu dipanggil xlimbahkan jika Anda menggunakan variabel selain dari xekspresi Anda.)
Anda hanya perlu memiliki gambaran kasar tentang di mana solusinya. Sebagai contoh:
library(mosaicCalc)
findZeros(g(x) ~ x, xlim = range(-1000, 1000))
## x
## 1 1.5576
findZeros()hanya akan melihat ke dalam interval yang Anda berikan. Ini akan melakukan pekerjaan yang lebih tepat jika Anda dapat menyatakan interval dengan cara yang sempit.
4.1.2 Beberapa Solusi Fungsi findZeros( )akan mencoba menemukan banyak solusi jika ada. Misalnya persamaan dosax=0,35 memiliki jumlah solusi yang tak terhingga. Berikut beberapa di antaranya:
library(mosaicCalc)
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 Inilah pengaturan untuk findZeros( )
library(mosaicCalc)
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 numerik findZeros( )tidak mengetahui aturan aljabar, sehingga tidak dapat mengetahuinya. Tentu saja, Anda dapat mencoba nilai lain dari t untuk memastikan itu t tidak masalah.
library(mosaicCalc)
findZeros( g(b, t=2) ~ b, xlim=range(-1000,1000) )
## b
## 1 1.1611