Lembaga : UIN Maulana Malik Ibrahim Malang
Jurusan : Teknik Informatika
Diferensiasi merupakan proses mencari slope suatu garis pada titik yang diberikan. Secara umum proses diferensiasi dinyatakan melalui Persamaan (9.1).
Kita dapat menyatakan secara formal proses diferensiasi sebagai limit Persamaan (1.1) dimana ℎ mendekati nol. Jadi kita ingin membuat nilai ℎ sekecil mungkin untuk memperoleh pendekatan terbaik terhadap nilai turunan suatu fungsi. Kita membatasi nilai ℎ pada sejumlah nilai yang masuk akal untuk mencegah pembagian dengan nilai yang tidak biasa. Kita juga harus memastikan 𝑓 ( 𝑥 ) dan 𝑓 ( 𝑥 + ℎ ) terpisah cukup jauh untuk mencegah floating point round off error mempengaruhi proses substraksi.
Terdapat 3 buah metode untuk memperoleh turunan pertama suatu fungsi dengan menggunakan metode numerik, yaitu: metode selisih maju, metode selisih mundur, dan metode selisih tengah. Error pada ketiga metode numerik tersebut ditaksir menggunakan deret Taylor. Persamaan (9.2) dan Persamaan (9.3) menunjukkan persamaan untuk memperoleh turunan pertama dan taksiran error menggunakan metode selisih maju dan metode selisih mundur.
Kita dapat menggunakan Persamaan (9.2) dan Persamaan (9.3) untuk membentuk sebuah program yang digunakan untuk menghitung turunan pertama suatu fungsi. Sintaks yang digunakan adalah sebagai berikut:
findiff <- function(f, x, h, method=NULL){
if(is.null(method)){
warning("please select a method")
}else{
if(method == "forward"){
return((f(x+h)-f(x))/h)
}else if(method=="backward"){
return((f(x)-f(x-h))/h)
}else if(method=="central"){
return((f(x+h)-f(x-h))/(2*h))
}else{
warning("you can use method: forward, bacward, or central")
}
}
}
Jika \(f(x) = 3x^2 + 2x + 4\) maka turunan \(f\) adalah
Penyelesainan secara manual :
3x2 + 2x + 4
= (3*2x2-1) +(2*1x1-1)
= 6x + 2
Penyelesaian dengan RStudio :
turunan <- function(x)
D(expression((3*x^2)+(2*x)+4),"x")
deriv(~exp((3*x^2)+(2*x)+4),"x")
## expression({
## .expr3 <- 2 * x
## .expr6 <- exp(3 * x^2 + .expr3 + 4)
## .value <- .expr6
## .grad <- array(0, c(length(.value), 1L), list(NULL, c("x")))
## .grad[, "x"] <- .expr6 * (3 * .expr3 + 2)
## attr(.value, "gradient") <- .grad
## .value
## })
Penyelesainan secara manual :
3x8 - 5x6 + x4 -x -11
= (3*8x8-1) + (1*4x4-1 ) - 1
= 24x7 + 4x3 - 1
Penyelesaian dengan RStudio :
turunan <- function(x)
D(expression((3*x^8)-(5*x^6)+(x^4)-x -11),"x")
deriv(~exp((3*x^8)-(5*x^6)+(x^4)-x-11),"x")
## expression({
## .expr10 <- exp(3 * x^8 - 5 * x^6 + x^4 - x - 11)
## .value <- .expr10
## .grad <- array(0, c(length(.value), 1L), list(NULL, c("x")))
## .grad[, "x"] <- .expr10 * (3 * (8 * x^7) - 5 * (6 * x^5) +
## 4 * x^3 - 1)
## attr(.value, "gradient") <- .grad
## .value
## })
Penyelesainan secara manual :
3x4 + 2x2 + x
= (3*4x4-1) + (2*2x2-1) + 1x1-1
Penyelesaian dengan RStudio :
turunan <- function(x)
D(expression((3*x^4)+(2*x^2)+ x),"x")
deriv(~exp((3*x^4)+(2*x^2)+ x),"x")
## expression({
## .expr7 <- exp(3 * x^4 + 2 * x^2 + x)
## .value <- .expr7
## .grad <- array(0, c(length(.value), 1L), list(NULL, c("x")))
## .grad[, "x"] <- .expr7 * (3 * (4 * x^3) + 2 * (2 * x) + 1)
## attr(.value, "gradient") <- .grad
## .value
## })
Penyelesainan secara manual :
x3 + 3x2
=(3x3-1) + (3*2x2-1)
= 3x2 + 6x
Penyelesaian dengan RStudio :
turunan <- function(x)
D(expression((x^3)+(3*x^2)),"x")
deriv(~exp((x^3)+(3*x^2)),"x")
## expression({
## .expr3 <- 3 * x^2
## .expr5 <- exp(x^3 + .expr3)
## .value <- .expr5
## .grad <- array(0, c(length(.value), 1L), list(NULL, c("x")))
## .grad[, "x"] <- .expr5 * (.expr3 + 3 * (2 * x))
## attr(.value, "gradient") <- .grad
## .value
## })
Jika \(f(x) = 3x^2+2x+4\), maka turunan \(f\) di \(x = 2\) adalah
Penyelesainan secara manual :
3x2+2x+4
=(3*2x2-1 ) + (2*1x1-1 )
= 6x + 2
x = 2 -> 6 (2) + 2 = 14
Penyelesaian dengan RStudio :
findiff(function(x)
3*(x^2)+(2*(x))+4, x=2, h=0.05,
method="central")
## [1] 14
Penyelesainan secara manual :
3x8 - 5x6 + x4 -x - 11
=(3*8x8-1 ) - (5*6x6-1 ) + (4x4-1 ) - (1x1-1)
= 24x7 - 30x5 + 4x3 - 1
x = 3 -> 24(3)7 - 30(3)5 + 4(3)3 - 1 = 45.400
Penyelesaian dengan RStudio :
findiff(function(x)
(3*(x^8))-(5*(x^6))+(x^4)-x-11, x=3, h=0.05,
method="central")
## [1] 45400.37
Penyelesainan secara manual :
3x4 + 2x2 + x
=(3*4x4-1 ) - (2*2x2-1 ) + (1x1-1 )
= 12x3 - 4x + 1
x = 4 ->12(4)3 - 4(4) + 1 = 785
Penyelesaian dengan RStudio :
findiff(function(x)
3*(x^4)+(2*(x^2))+x, x=4, h=0.05,
method="central")
## [1] 785.12
Penyelesainan secara manual :
x3 + 3x2
= (3x3-1 ) + (3*2x2-1 )
= 3x2 + 6x
x = 3 -> 3(3)2 + 6(3) = 126
Penyelesaian dengan RStudio :
findiff(function(x)
x^4+(3*(x^2)), x=3, h=0.05,
method="central")
## [1] 126.03
Adapun dasar - dasar pengoperasian diferensiasi fungsi konstanta dan pangkat, yaitu :
Jika f(x) = k dengan k konstan untuk setiap x (fungsi f adalah konstan), maka f ’(x) = 0.
Jika f(x) = x untuk setiap x (fungsi f adalah identitas), maka f ’(x) = 1.
Jika f(x) = xn dengan n bilangan bulat positif, untuk setiap x, maka f ’(x) = nxn–1.
Jika\(f(x) = x^5\), maka turunan dari fungsi \(f\) adalah
Penyelesaian secara manual :
f(x)’ = 5x5-4
f(x)’ = 5x4
Penyelesaian dengan RStudio :
findiff(function(x)
(x^5), x=1, h=0.05,
method="central")
## [1] 5.025006
Penyelesaian secara manual :
y = 5x6 - 2x4 + x3
y’ = ( 4 * 3x4-1 ) ( 2 * 2x2-1 ) + ( 1 * ax1-1 )
y’ = 12x3 + 4x + a
Penyelesaian dengan RStudio :
dimisalkan x = 1
findiff(function(x)
5*(x^6)-(2*(x^4))+(x^3)+(8*x)+3, x=1, h=0.05,
method="central")
## [1] 33.23269
Penyelesaian secara manual :
y = 3x4 + 2x2 + ax
y’ = ( 4 * 3x4-1 ) + ( 2 * 2x2-1 ) + ( 1 * ax1-1 )
y’ = 12x3 + 4x + a
Penyelesaian dengan RStudio :
dimisalkan a = 3, x = 1
findiff(function(x)
3*(x^4) + 2*(x^2) + 3*x, x=1, h=0.05,
method="central")
## [1] 19.03
Penyelesaian secara manual :
y = abx3 + 3x2
y’ = ( 3 * abx3-1 )+ ( 2 * 3x2-1 )
y’ = 3abx2 + 6x
Penyelesaian dengan RStudio :
dimisalkan a = 2, b = 2, x = 1
findiff(function(x)
2*2*(x^3) + 3*(x^2), x=1, h=0.05,
method="central")
## [1] 18.01
Jika k suatu konstanta, f dan g fungsi-fungsi yang terdiferensialkan, u dan v fungsi – fungsi dalam x sehingga u =f(x) dan v =g(x) maka berlaku :
Jika y = 𝑘 * 𝑢, maka y’ = 𝑘 * (𝑢’)
Jika y = 𝑢 + 𝑣, maka y’ = 𝑢’ + 𝑣′
Jika y = 𝑢 − 𝑣, maka y’ = 𝑢’ − 𝑣′
Jika y = 𝑢 * 𝑣, maka y’ = 𝑢’v + 𝑢 𝑣′
Jika y = 𝑢 / 𝑣, maka y’ = 𝑢’v – 𝑢 𝑣’ / 𝑣2
Jika \(f(x) = (3x^5 + 2x)(4x + 7)\), maka turunan dari \(f(x)\) adalah
Penyelesaian secara manual :
Jika f(x) = g(x) . h(x)
g(x) = 3x5 + 2x
h(x) = 4x + 7
g’(x) = 15x4 + 2
h’(x) = 4
f’(x) = g’(x) . h(x) + g(x) . h’(x)
f’(x) = (15x4 + 2)(4x + 7) + (3x5 + 2x) 4
Penyelesaian dengan RStudio :
dimisalkan x = 1
findiff(function(x)
(3*x^5 + 2*x)*(4*x + 7), x=1, h=0.05,
method="central")
## [1] 208.1256
Penyelesaian secara manual :
jika f(x) = u / v
u = 2x - 1
v = x2 + 1
u’ = 2
v’ = 2x
f’(x) = (u’v - uv’)/v2
f’(x) = (2 . (x2 + 1) - (2x -1) 2x)/(x2 + 1)2
f’(x) = -2x2 + 2x -2 / ( x2 -1 )2
Penyelesaian dengan RStudio :
dimisalkan x = 2
findiff(function(x)
((2*x)-1)/((x^2)+1), x=2, h=0.05,
method="central")
## [1] -0.07984789
Penyelesaian secara manual :
jika y = u . v
u = 3x4 + 2x2 + x
v = x2 + 7
u’ = 12x3 + 4x
v’ = 2x
y’ = u’ . v + u . v’
y’ = (12x3 + 4x) (x2 + 7) + (3x4 + 2x2 + x) (2x)
y’ = 12x5 + 88x3 + x2 + 28x + 7 + 6x5 + 4x3 + 2x2
y’ = 18x5 + 92x3 + 3x2 + 28x + 7
Penyelesaian dengan RStudio :
dimisalkan x = 1
findiff(function(x)
(3*x^4+2*x^2+x)*(x^2+7) , x=1, h=0.05,
method="central")
## [1] 148.3826
Penyelesaian secara manual :
jika y = u . v
u = x3 + 3x2
v = 4x2 + 2
u’ = 3x2 + 6x
v’ = 8x
y’ = u’ . v + u . v’
y’ = (3x2 + 6x) (4x2 + 2) + (x3 + 3x2) (8x)
y’ = 12x4 + 6x2 + 24x3 + 12x + 8x4 + 24x3
y’ = 20x4 + 48x3 +6x2
Penyelesaian dengan RStudio :
dimisalkan x = 1
findiff(function(x)
(x^3+3*x^2)*(4*x^2+2) , x=1, h=0.05,
method="central")
## [1] 86.22503
Penyelesaian secara manual :
y = 1 / ( 3x2 + 1 )
y’ = - ( 6x2 ) / ( 3x2 + 1 )
Penyelesaian dengan RStudio :
dimisalkan x = 1
findiff(function(x)
1/((3*x^2)+1) , x=1, h=0.05,
method="central")
## [1] -0.3757031
Penyelesaian secara manual :
y = 1 / ( 4x2 - 3x + 9 )
y’ = ( 3 - 8x ) / ( 4x2 - 3x + 9 )2
Penyelesaian dengan RStudio :
dimisalkan x = 1
findiff(function(x)
1/((4*x^2)-(3*x)+9) , x=1, h=0.05,
method="central")
## [1] -0.04993129
sumber :
Suhartono. 2015. Memahami Kalkulus Dasar Menggunakan Wolfram Mathematica 9. Malang : UIN Maliki Malang.
Rosidi, M. Metode Numerik Menggunakan R untuk Teknik Lingkungan. https://bookdown.org/moh_rosidi2610/Metode_Numerik/diffinteg.html#finitediff
summary(cars)
## speed dist
## Min. : 4.0 Min. : 2.00
## 1st Qu.:12.0 1st Qu.: 26.00
## Median :15.0 Median : 36.00
## Mean :15.4 Mean : 42.98
## 3rd Qu.:19.0 3rd Qu.: 56.00
## Max. :25.0 Max. :120.00