Source : https://dtkaplan.github.io/RforCalculus/integrals-and-integration.html

Integrals and integration

Anda telah melihat operator kalkulus dasar, diferensiasi, yang diimplementasikan oleh mosaicCalcfungsi R/ D(). Operator diferensiasi mengambil sebagai input fungsi dan variabel “sehubungan dengan”. Outputnya adalah fungsi lain yang memiliki variabel “sehubungan dengan” sebagai argumen, dan kemungkinan argumen lain juga.

library(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
library(knitr)
f <- makeFun( A * x ^  2 ~ x, A = 1.5)
f(10)
## [1] 150
library(mosaicCalc)
## 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
df <- D(f(x)~x)
df(7)
## [1] 21
slice_plot(f(x) ~ x, domain(x = -1:1)) %>%
  gf_labs(title = "Original function f(x)")

slice_plot(df(x) ~ x, domain(x =-1:1), color = "yellow") %>%
  gf_labs(title = "New function df(x), the derivative of f(x)")

8.1 The anti-derivatif

Sekarang, bayangkan kita mulai dengan df(x) dan kami ingin menemukan fungsi DF(x) dimana turunan dari DF(x) adalah f(x). Dengan kata lain, bayangkan menerapkan kebalikan dari D() operator ke fungsi df(x) menghasilkan f() (atau sesuatu seperti itu).

Operator invers ini diimplementasikan dalam R/ mosaicCalcsebagai antiD()fungsi. Seperti yang disarankan akhiran anti, antiD()“membatalkan” apa D() melakukan. Seperti ini:

DF <- antiD(df(x) ~ x)
DF(1,0.5)
## [1] 0.5
DF(2,0.5)
## [1] 2
DF(3,0.5)
## [1] 4.5
library(mosaicCalc)
slice_plot(df(x) ~ x, domain(x=-1:1), color = "red") %>%
  gf_labs(title = "Original function df(x)")

h <- antiD( f(x) ~ x )
dh <- D(h(x) ~ x )
dh(1,0.5)
## [1] 0.5
dh(2,0.5)
## [1] 2
dh(3,0.5)
## [1] 4.5

8.2 Satu variabel menjadi dua argumen

Istilah “integral tentu” dan “integral tak tentu” sering digunakan untuk membedakan antara fungsi yang dihasilkan oleh anti-diferensiasi dan nilai fungsi tersebut ketika dievaluasi pada masukan tertentu. Ini akan membingungkan pada awalnya, tetapi Anda akan segera merasakan apa yang terjadi.

Seperti yang Anda ketahui, turunan memberi tahu Anda properti lokal dari suatu fungsi: bagaimana fungsi berubah ketika salah satu input diubah dengan jumlah kecil. Turunannya adalah semacam kemiringan. Jika Anda pernah berdiri di atas bukit, Anda tahu bahwa Anda dapat mengetahui lereng setempat tanpa dapat melihat keseluruhan bukit; rasakan saja apa yang ada di bawah kakimu.

Anti-derivatif membatalkan turunan, tetapi apa artinya “membatalkan” properti lokal? Jawabannya adalah anti-turunan (atau, dengan kata lain, integral) memberi tahu Anda tentang beberapa properti global atau terdistribusi dari suatu fungsi: bukan hanya nilai pada suatu titik, tetapi nilai yang terakumulasi pada seluruh rentang titik. Sifat antiturunan global atau terdistribusi inilah yang membuat antiturunan sedikit lebih rumit daripada turunan, tetapi tidak lebih dari itu.

f1 <- makeFun(sin(x ^ 2) ~ x)
f2 <- makeFun(sin(x ^ 2)  +  3 ~ x)
f3 <- makeFun(sin(x ^ 2)  -  100 ~ x)
f1(2)
## [1] -0.7568025
f2(2)
## [1] 2.243198
f3(2)
## [1] -100.7568
df1 = D(f1(x) ~ x)
df2 = D(f2(x) ~ x)
df3 = D(f3(x) ~ x)
df1(2)
## [1] -2.614574
df2(2)
## [1] -2.614574
df3(2)
## [1] -2.614574

Ini menimbulkan masalah. Saat “membatalkan” turunan dari salah satu dari df1, df2, atau df3, apa jawabannya? Haruskah mendapatkan atau fungsi lainnya? Tampaknya antiturunannya, sampai batas tertentu, tidak terbatas.

Semua fungsi yang memiliki turunan yang sama adalah serupa. Faktanya, mereka identik kecuali untuk konstanta aditif. Jadi masalah ketidaktentuan jumlah antiturunan hanya untuk konstanta penjumlahan - antiturunan dari turunan suatu fungsi akan menjadi fungsi memberi atau mengambil konstanta penjumlahan: Jadi, selama Anda tidak memedulikan konstanta penjumlahan, antiturunan dari turunan suatu fungsi mengembalikan fungsi aslinya.

Integral Derivatif memberi tahu bagaimana suatu fungsi berubah secara lokal. Anti-derivatif mengumpulkan nilai-nilai lokal tersebut untuk memberi Anda nilai global; itu mempertimbangkan tidak hanya properti lokal dari fungsi pada satu nilai input tertentu tetapi juga nilai pada rentang input.

Ingatlah bahwa turunan dari itu sendiri adalah sebuah fungsi, dan fungsi tersebut memiliki argumen yang sama dengan . Jadi, karena didefinisikan memiliki argumen bernama , fungsi yang dibuat oleh juga memiliki argumen bernama (dan apa pun parameter lain yang terlibat):

f
## function (x, A = 1.5) 
## A * x^2
## <bytecode: 0x000002c5c6a66d90>
df
## function (x, A = 1.5) 
## 2 * A * x
## <bytecode: 0x000002c5cf669510>

Operasi anti-derivatif sedikit berbeda dalam hal ini. Saat Anda menggunakan antiD(), nama variabel fungsi diganti dengan dua argumen: nama sebenarnya (dalam contoh ini, ) dan konstanta : xC

antiD(f(x) ~ x)
## function (x, A, C = 0) 
## (x^3 * A)/3 + C
antiD(df(x) ~ x)
## function (x, A, C = 0) 
## A * x^2 + C