Bab 1 Mewakili fungsi matematika Kalkulus pada dasarnya adalah tentang matematika dan operasi yang ada didalamnya.Konsep “fungsi matematika” adalah sebuah ide. Jika kita akan menggunakan bahasa komputer untuk bekerja dengan fungsi matematika, kita perlu menerjemahkannya ke dalam beberapa entitas dalam bahasa komputer. Artinya, kita memerlukan konstruksi bahasa untuk merepresentasikan fungsi dan kuantitas yang diambil fungsi sebagai input dan dihasilkan sebagai output.
1.1 Angka, besaran, dan nama Kompleksitas yang disebutkan di bagian sebelumnya berasal dari penggunaan dan situasi dunia nyata di mana kita ingin dapat menerapkan ide matematis fungsi. Input yang diambil oleh fungsi dan output yang dihasilkannya belum tentu berupa angka. Seringkali, mereka adalah kuantitas .
kita akan menggunakan fungsi dan kalkulus untuk bekerja dengan
kuantitas dunia nyata. Kita tidak bisa mengabaikan dimensi dan satuan.
Sayangnya, bahasa komputer utama seperti R dan Python dan JavaScript
tidak menyediakan cara sistematis untuk menangani dimensi dan unit
secara otomatis. Di R, misalnya, kita dapat dengan mudah menulis. x
<- 7 yang menyimpan kuantitas dengan nama x. Tapi bahasanya
mengacungkan sesuatu seperti y <- 12 meters ## Error:
Berikut adalah apa yang akan kita lakukan. Saat kita merepresentasikan besaran di komputer, kita akan menggunakan nama besaran untuk mengingatkan kita apa dimensi dan satuannya. Misalkan kita ingin, misalnya, untuk mewakili pendapatan tahunan keluarga. Pilihan yang masuk akal adalah menggunakan nama seperti incomeatau income_per_yearatau family_income. Kami bahkan mungkin memberikan unit dalam nama, misalnya family_income_euros_per_year. Tetapi biasanya yang kami lakukan adalah mendokumentasikan unit secara terpisah untuk pembaca manusia.
1.2 Fungsi bahasa R Mari kita lihat versi R dari fungsi matematika, eksponensial. Fungsi diberi nama expdan kita dapat melihat pemrograman yang dikandungnya
exp ## function (x) .Primitive(“exp”) Tidak banyak di sana, kecuali notasi komputer. Dalam R, fungsi dapat dibuat dengan kata kunci function. Misalnya, untuk membuat fungsi yang menerjemahkan pendapatan tahunan menjadi pendapatan harian, kita dapat menulis:
as_daily_income <- function(yearly_income) { yearly_income / 365 } Pada akhirnya, apa yang perlu Anda ketahui tentang suatu fungsi untuk menggunakannya hanyalah tiga hal:
1.Apa argumen untuk fungsi dan apa yang mereka perjuangkan. 2.Apa jenis hal yang sedang diproduksi oleh fungsi. 3.Bahwa fungsinya berfungsi seperti yang diiklankan, misalnya menghitung apa yang akan kita tulis secara aljabar sebagai ex.
1.3 Literasi penggunaan argumen Ingatlah bahwa nama-nama yang dipilih oleh pemrogram suatu fungsi bersifat arbitrer. Anda akan menggunakan fungsi dengan cara yang persis sama meskipun namanya berbeda. Demikian pula, saat menggunakan fungsi, Anda dapat memilih sendiri ekspresi apa yang akan menjadi nilai argumen.
Misalnya, Anda ingin menghitung 100 e − 2.5 . Mudah:
100 * exp(-2.5) ## [1] 8.2085 Dengan menggunakan nama deskriptif yang baik dan secara eksplisit melabeli argumen yang mana, Anda menghasilkan dokumentasi yang jelas dan terpelajar tentang apa yang ingin Anda lakukan dan bagaimana orang lain, termasuk “Anda di masa depan”, harus mengubah hal-hal untuk mewakili situasi baru.
1.4 Sehubungan dengan … fungsi R memainkan peran yang jauh lebih besar dari itu. Fungsi digunakan untuk hampir semua hal, mulai dari membaca file data hingga menggambar grafik hingga mengetahui jenis komputer apa yang digunakan. Yang menarik bagi kami di sini adalah penggunaan fungsi untuk mewakili dan mengimplementasikan operasi kalkulus. Operasi ini memiliki nama yang mungkin atau mungkin belum Anda kenal: diferensiasi, integrasi, dll. Ketika kalkulus atau operasi matematika serupa sedang dilakukan, Anda biasanya harus menentukan variabel atau variabel mana yang sedang dilakukan operasi “sehubungan dengan.” Untuk mengilustrasikannya, pertimbangkan operasi sederhana secara konseptual untuk menggambar grafik suatu fungsi. Lebih khusus, mari kita menggambar grafik berapa banyak obat yang tersisa dalam tubuh sebagai fungsi waktu sejak dosis diberikan. Farmakokinetik dasar dari proses ini dikemas dalam drug_remaining()fungsi. Jadi yang ingin kita lakukan adalah menggambar grafik drug_remaining(). Dalam buku ini, kita akan menggunakan operasi yang disediakan oleh paket mosaicand mosaicCalcuntuk R. Operasi dari paket ini memiliki notasi yang sangat spesifik untuk diekspresikan sehubungan dengan . Notasi tersebut menggunakan karakter tilde, ~. Berikut cara menggambar grafik yang kita inginkan, menggunakan slice_plot()operasi paket:
dose <- 100 # mg
duration <- 10 # days
time_constant <- 4 # days
dose * exp(- duration / time_constant)
## [1] 8.2085
drug_remaining <- function(dose, duration, time_constant) {
dose * exp(- duration / time_constant)
}
drug_remaining(dose = 100, duration = 10, time_constant = 4)
## [1] 8.2085
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
slice_plot(
drug_remaining(dose = 100, time_constant = 4, duration = t) ~ t,
domain(t = 0:20))