Algebra in R: Derivatives
Let’s use the R and RStudio to derive and plot derivatives of elementary functions!
- Introduction
- Installing YACAS and Ryacas
- Downloading the Project
- Determining Derivatives
- Plotting Derivatives
- Further Reading
Introduction
I higly recommend going through the Differential Calculus course at the Khan Academy. The course does a great job at explaining that the derivative represents an instantaneous rate of change.
Installing YACAS and Ryacas
YACAS (Yet Another Computer Algebra System) is a computer algebra system and I will use it in this post to determine derivatives of elementary functions. And because I will be using it from within the RStudio, I will not only need to install the YACAS as such but you need to install the Ryacas plugin as well. The Ryacas is an R plugin which makes it possible for you to call YACAS functions in your R code.
First off, download the YACAS from its download page and follow installation instructions pertinent to your operating system. This is what I had to do on my Ubuntu 16.04:
wget https://github.com/grzegorzmazur/yacas/releases/download/v1.6.1/yacas-common_1.6.1-1xenial1_all.deb
wget https://github.com/grzegorzmazur/yacas/releases/download/v1.6.1/yacas-doc_1.6.1-1xenial1_all.deb
wget https://github.com/grzegorzmazur/yacas/releases/download/v1.6.1/yacas-console_1.6.1-1xenial1_amd64.deb
sudo dpkg --install yacas-common_1.6.1-1xenial1_all.deb yacas-console_1.6.1-1xenial1_amd64.deb yacas-doc_1.6.1-1xenial1_all.deb
Now that the YACAS has been installed, we can move on to installing the Ryacas plugin. On my Ubuntu 16.04, I had to install libxml2-dev first:
sudo apt-get install libxml2-dev
This step (libxml2-dev) likely does not apply to you if you run another operating system.
Start the RStudio and swith to the Packages tab. When you are there, click on the Install button, which brings up an Install Packages dialogue window. Type Ryacas into the Packages text box and click on the Install button.
Downloading the Project
We will be using the Derivatives project, which you can download in the form of a ZIP archive Derivatives.zip. After you’ve downloaded the archive, proceed by extracting it, go into a newly created Derivatives folder and double-click on the Derivatives.Rproj icon. This opens up the Derivatives project in the RStudio.
Determining Derivatives
The Derivatives project contains only one script, called 01_derivatives.R. It shows how to use R’s D function as well as the yacas function to determine derivatives of elementary functions.
Constant functions
Try
D(expression(6), "x")
and you’ll get 0.
Linear functions
Try
D(expression(6 * x), "x")
and you’ll get 6.
You need to do the following to do the same with Ryacas
xx <- Sym("xx")
yacas(deriv(6*xx, xx))
Polynomial functions
Try
D(expression(x^4 + x^3 + x^2), "x")
yacas(deriv(xx^4 + xx^3 + xx^2, xx))
to get 4 * x^3 + 3 * x^2 + 2 * x.
Trigonometric functions
Try
D(expression(sin(x)), "x")
yacas(deriv(sin(xx), xx))
to get cos(x).
Exponential functions
Try
D(expression(5^x), "x")
yacas(deriv(5^xx, xx))
to get 5^x * log(5).
Logarithmic functions
Try
# derivative of y = ln(x)
yacas("D(x)Ln(x)")
to get 1/x.
Plotting Derivatives
Do the following in order to plot a sine function and its derivative:
curve(sin(x), -8, 8, col = "tan4", ylim = c(-2, 2))
curve(eval(D(expression(sin(x)), "x")), -8, 8, add = TRUE, col = "blue1")
abline(h = 0, v = 0)
You could do the same with Ryacas:
curve(sin(x), -8, 8, col = "tan4", ylim = c(-2, 2))
xx <- Sym("xx")
my_deriv <- yacas(deriv(sin(xx), xx))
my_deriv2 <- function(xx) {
eval(parse(text = my_deriv$text))
}
curve(my_deriv2(x), -8, 8, add = TRUE, col = "blue1")
abline(h = 0, v = 0)
Both approaches produce the following plot:
Further Reading
- Using R as a Computer Algebra System with Ryacas
- https://cran.r-project.org/web/packages/Ryacas/vignettes/Ryacas.pdf
- https://cran.r-project.org/web/packages/Ryacas/Ryacas.pdf