Belajar Menyelesaikan Soal Kalkulus dan Aljabar di R
Saat kuliah dulu di Matematika, salah satu software yang menjadi andalan saya mengarungi perkuliahan adalah Maple (Mathematical Pleasure).
Memangnya apa sih kegunaannya?
Apakah kalian tahu layanan Microsoft bernama MathSolver?
Sebelum Microsoft membuat MathSolver, sudah ada Maple yang bisa digunakan untuk menurunkan formula, membuktikan teorema, membuat simulasi, dan membantu menyelesaikan masalah atau model matematika.
Selepas lulus kuliah, otomatis saya tidak pernah menggunakannya lagi sampai suatu ketika di tahun 2016 saya harus menggunakannya kembali karena suatu kasus di kantor. Sayangnya, walau laptop kantor sudah sangat bagus spec-nya, Maple yang saya gunakan waktu itu berjalan sangat lamban.
Beberapa minggu ini saya berkutat kembali dengan kalkulus dan aljabar linear elementer. Mau tidak mau, saya harus belajar kembali mengingat beberapa pembuktian dan penurunan formula. Entah kenapa saya merasa kurang greget menggunakan MathSolver.
Ada yang hilang.
Bagi generasi saya yang terbiasa menuliskan formula dengan format
LaTex
, mungkin jadi terasa agak janggal. hehe
Setelah googling sana-sini, saya mendapatkan beberapa libraries di R yang bisa saya gunakan untuk belajar kalkulus dan aljabar linear elementer. Mungkin tidak mirip 100% dengan Maple dan MathSolver, tapi beberapa fungsi seperti simplifikasi, faktorisasi, integral, dan diferensial bisa diselesaikan dengan libraries tersebut.
Kalkulus
library(Ryacas)
library(Ryacas)
memiliki backbone berupa software Command Line
Interface (CLI) bernama YACAS (Yet Another Computer Algebra
System). Ternyata
YACAS mulai dibuat sejak tahun 2006. Mungkin karena kurang populer
jadi jarang yang menggunakan. Padahal menurut saya isinya sangat
menjanjikan.
Apa saja sih fiturnya?
Saya berikan contoh ya:
Simplifikasi
Misalkan saya memiliki persamaan linear sebagai berikut:
YACAS bisa digunakan untuk melakukan simplifikasi fungsi.
eq = "10*x - 3 + 4*x - 10"
eq %>% y_fn("Simplify") %>% yac_str()
## [1] "14*x-13"
Terlihat fungsinya menjadi lebih sederhana.
Misalkan saya memiliki persamaan berikut:
simplifikasinya adalah:
eq = "1/x^2 + x - x^3"
eq %>% y_fn("Simplify") %>% yac_str()
## [1] "(x^3-x^5+1)/x^2"
Nah, jika bentuk tersebut masih rumit dilihat. Kita bisa membuat bentuk
tersebut menjadi TEX
format:
eq %>% y_fn("Simplify") %>% y_fn("TeXForm") %>% yac_str()
## [1] "\\frac{x ^{3} - x ^{5} + 1}{x ^{2}} "
Tinggal kita render saja menjadi:
Faktorisasi
Hal menarik berikutnya adalah YACAS bisa digunakan untuk mencari faktor dari persamaan kuadrat.
Misal saya memiliki persamaan kuadrat:
Berapa faktornya?
eq = "x^2 - 1"
eq %>% y_fn("Factor") %>% yac_str()
## [1] "(x+1)*(x-1)"
Misal saya memiliki persamaan kuadrat:
Berapa faktornya?
eq = "x^3 - 1"
eq %>% y_fn("Factor") %>% yac_str()
## [1] "(x+x^2+1)*(x-1)"
Mencari Akar Kuadrat
Sebenarnya dari faktor di atas, kita bisa menghitung sendiri akar kuadratnya. Tapi jika malas, biarkan YACAS yang melakukannya:
eq %>% y_fn("FindRealRoots") %>% yac_str()
## [1] "{1.}"
Turunan
Kegunaan lainnya adalah menurunkan fungsi.
Misalkan:
Turunannya adalah:
eq = "x^3 - Sin(x)"
eq %>% y_fn("D(x)") %>% yac_str()
## [1] "3*x^2-Cos(x)"
Integral
Lawannya turunan adalah integral, berikut jika kita integralkan di atas:
eq %>% y_fn("Integrate(x)") %>% yac_str()
## [1] "x^4/4+Cos(x)"
Jika kita hendak melakukan:
Cukup lakukan:
eq %>% y_fn("Integrate(x,0,1)") %>% yac_str()
## [1] "1/4+Cos(1)-1"
Limit
Sekarang giliran untuk menghitung limit.
Misalkan:
Maka:
eq = "1 / (x-1)"
eq %>% y_fn("Limit(x,1)") %>% yac_str()
## [1] "Undefined"
Deret
Kita juga bisa menghitung jumlah dari suatu deret:
Misalkan:
yac_str("Sum(n, 1, Infinity, (1/2)^n)")
## [1] "1"
Menyelesaikan Persamaan Diferensial
YACAS juga bisa digunakan untuk menyelesaikan persamaan diferensial.
Misalkan:
Di mana adalah fungsi dari , maka:
yac_str("OdeSolve( y' + y == 0 )")
## [1] "C219*Exp(-x)"
Menyelesaikan Persamaan
Misalkan:
Kita hendak mencari nilai , maka:
yac_str("OldSolve(x^2+x*y==10,y)")
## [1] "(10-x^2)/x"
Aljabar Linear Elementer
library(matlib)
Kali ini saya akan membahas library(matlib)
untuk keperluan
perhitungan matriks.
Salah satu kegunaannya yang saya ingin highlight adalah kemampuannya menyelesaikan sistem persamaan linear.
Contoh:
Selesaikan sistem persamaan linear berikut:
Bentuk tersebut akan di-input dalam bentuk matriks di R berikut:
A = matrix(c(1, 2, -1, 2), 2, 2)
b = c(2,1)
showEqn(A, b)
## 1*x1 - 1*x2 = 2
## 2*x1 + 2*x2 = 1
Berikutnya, kita perlu mengecek apakah sistem persamaan ini cukup syaratnya untuk mendapatkan solusi.
c( R(A), R(cbind(A,b)) ) # show ranks
## [1] 2 2
all.equal( R(A), R(cbind(A,b)) ) # consistent?
## [1] TRUE
Kita bisa buatkan grafiknya sebagai berikut:
plotEqn(A,b)
## x[1] - 1*x[2] = 2
## 2*x[1] + 2*x[2] = 1
Untuk menyelesaikannya, ada dua cara.
Cara Pertama
Langsung melakukan solving sebagai berikut:
Solve(A, b, fractions = TRUE)
## x1 = 5/4
## x2 = -3/4
Cara Kedua
Melakukan operasi baris elementer (OBE) dari matriks yang ada:
echelon(A, b, verbose=TRUE, fractions=TRUE)
##
## Initial matrix:
## [,1] [,2] [,3]
## [1,] 1 -1 2
## [2,] 2 2 1
##
## row: 1
##
## exchange rows 1 and 2
## [,1] [,2] [,3]
## [1,] 2 2 1
## [2,] 1 -1 2
##
## multiply row 1 by 1/2
## [,1] [,2] [,3]
## [1,] 1 1 1/2
## [2,] 1 -1 2
##
## subtract row 1 from row 2
## [,1] [,2] [,3]
## [1,] 1 1 1/2
## [2,] 0 -2 3/2
##
## row: 2
##
## multiply row 2 by -1/2
## [,1] [,2] [,3]
## [1,] 1 1 1/2
## [2,] 0 1 -3/4
##
## subtract row 2 from row 1
## [,1] [,2] [,3]
## [1,] 1 0 5/4
## [2,] 0 1 -3/4
if you find this article helpful, support this blog by clicking the ads.