Derivatives of `tf`

-objects use finite differences of the evaluations for
`tfd`

and finite differences of the basis functions for `tfb`

.

tf_derive(f, order = 1, arg = NULL, ...)
# S3 method for matrix
tf_derive(f, order = 1, arg = NULL, ...)
# S3 method for tfd
tf_derive(f, order = 1, arg = NULL, ...)
# S3 method for tfb_spline
tf_derive(f, order = 1, arg = NULL, ...)
# S3 method for tfb_fpc
tf_derive(f, order = 1, arg = NULL, ...)

## Arguments

f |
a `tf` -object |

order |
order of differentiation. Maximal value for `tfb_spline` is 2. |

arg |
grid to use for the finite differences.
Not the `arg` of the returned object for `tfd` -inputs, see Details. |

... |
not used |

## Value

a `tf`

(with slightly different `arg`

or `basis`

for the derivatives, see Details)

## Details

The derivatives of `tfd`

objects use centered finite differences, e.g. for
first derivatives \(f'((t_i + t_{i+1})/2) \approx \frac{f(t_i) +
f(t_{i+1})}{t_{i+1} - t_i}\), so the **domains of differentiated **`tfd`

will
shrink (slightly) at both ends. Unless the `tfd`

has a rather fine and
regular grid, representing the data in a suitable basis representation with
`tfb()`

and then computing the derivatives or integrals of those is usually
preferable.

Note that, for some spline bases like `"cr"`

or `"tp"`

which always begin/end
linearly, computing second derivatives will produce artefacts at the outer
limits of the functions' domain due to these boundary constraints. Basis
`"bs"`

does not have this problem for sufficiently high orders, but tends to
yield slightly less stable fits.

## Methods (by class)

`matrix`

: row-wise finite differences

`tfd`

: derivatives by finite differencing.

`tfb_spline`

: derivatives by finite differencing.

`tfb_fpc`

: derivatives by finite differencing.