# Deriv-package: Symbolic Differentiation In sgsokol/Deriv: Symbolic Differentiation

## Description

R already contains two differentiation functions: D and deriv.

These functions have several limitations:

• the derivatives table can't be modified at runtime, and is only available in C.

• function cannot substitute function calls. eg:

`f <- function(x, y) x + y; deriv(~f(x, x^2), "x")`

The advantages of this package include:

• It is entirely written in R, so would be easier to maintain.

• Can differentiate function calls:

• if the function is in the derivative table, then the chain rule is applied.

• if the function is not in the derivative table (or it is anonymous), then the function body is substituted in.

• these two methods can be mixed. An entry in the derivative table need not be self-contained – you don't need to provide an infinite chain of derivatives.

• It's easy to add custom entries to the derivatives table, e.g.

`drule[["cos"]] <- alist(x=-sin(x))`

• The output can be an executable function, which makes it suitable for use in optimization problems.

• Starting from v4.0, some matrix calculus operations are possible (contribution of Andreas Rappold). See an example in `help("Deriv")` for differentiation of the inverse of 2x2 matrix and whose elements depend on variable of differentiation `x`.

## Details

 Package: Deriv Type: Package Version: 4.1.3 Date: 2021-02-24 License: GPL (>= 3)

Two main functions are Deriv() for differentiating and Simplify() for simplifying symbolically.

## Author(s)

Andrew Clausen, Serguei Sokol

Maintainer: Serguei Sokol (sokol at insa-toulouse.fr)

## References

`D`, `deriv`, packages Ryacas, rSymPy
 ```1 2 3 4``` ```## Not run: f <- function(x) x^2 ## Not run: Deriv(f) # function (x) # 2 * x ```