Fungsi & Persamaan
Dari Persamaan ke Nol Fungsi
Bentuk umum dari masalah yang biasanya digunakan dalam perhitungan numerik di komputer adalah bahwa persamaan yang akan diselesaikan benar-benar merupakan fungsi yang akan dibalik. Artinya, untuk perhitungan numerik, masalahnya harus dinyatakan seperti ini:
Anda memiliki fungsi f ( x ) . Anda kebetulan mengetahui bentuk fungsi f dan nilai keluaran y untuk beberapa nilai masukan yang tidak diketahui x . Masalah Anda adalah menemukan input x yang diberikan fungsi f dan nilai output y .
Salah satu cara untuk menyelesaikan masalah tersebut adalah dengan mencari invers dari f. Ini sering ditulis f −1 . Tetapi menemukan kebalikan dari f bisa sangat sulit dan berlebihan. Sebaliknya, masalah dapat ditangani dengan mencari nol dari f.
Jika Anda dapat merencanakan fungsinya f(x) untuk berbagai x , Anda dapat dengan mudah menemukan nol. Temukan saja di mana x di mana fungsi melintasi sumbu y. Ini berfungsi untuk fungsi apa pun, bahkan yang sangat rumit sehingga tidak ada prosedur aljabar untuk menemukan solusi. 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 tersebut melintasi sumbu y di suatu tempat antara x=1 dan x = 2. 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")
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:
findZeros(g(x) ~ x, xlim = range(1, 2))
## x
## 1 1.5576
Fungsi findZeros()akan mencoba menemukan beberapa solusi jika ada. Misalnya persamaan sin x = 0.35 memiliki jumlah solusi yang tak terbatas. Berikut adalah beberapa di antaranya:
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
Seperti namanya, findZeros( )menemukan fungsi nol. Anda dapat mengatur masalah solusi apa pun dalam formulir ini. Misalnya, Anda ingin menyelesaikan 4 +e^kt = 2^bt untuk b
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
mencoba nilai lain dari t untuk memastikan bahwa t tidak masalah.
findZeros( g(b, t=2) ~ b, xlim=range(-1000,1000) )
## b
## 1 1.1611
Daftar Pustaka: Kaplan, Daniel. 2020. Computer-age Calculus with R.