# deriva: Derivatives of splines In Splinets: Functional Data Analysis using Splines and Orthogonal Spline Bases

## Description

The function generates a `Splinets`-object which contains the first order derivatives of all the splines from the input `Splinets`-object. The function also verifies the support set of the output to provide the accurate information about the support sets by excluding regions over which the original function is constant.

## Usage

 `1` ```deriva(object, epsilon = 1e-07) ```

## Arguments

 `object` `Splinets` object of the smoothness order `k`; `epsilon` positive number, controls removal of knots from the support; If the derivative is smaller than this number, it is considered to be zero and the corresponding knots are removed from the support.The default value is `1e-7`.

## Value

A `Splinets`-object of the order `k-1` that also contains the updated information about the support set.

## References

Liu, X., Nassar, H., Podgorski, K. (2019) "Splinets – efficient orthonormalization of the B-splines." <arXiv:1910.07341>.

Podgorski, K. (2021) "`Splinets` – splines through the Taylor expansion, their support sets and orthogonal bases." <arXiv:2102.00733>.

`integra` for generating the indefinite integral of a spline that can be viewed as the inverse operation to `deriva`; `dintegra` for the definite integral of a spline;
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41``` ```#-------------------------------------------------------# #--- Generating the deriviative functions of splines ---# #-------------------------------------------------------# n=13; k=4 set.seed(5) xi=sort(runif(n+2)); xi=0; xi[n+2]=1 spl=construct(xi,k,matrix(rnorm((n+2)*(k+1)),ncol=(k+1))) #constructing three splines spl=gather(spl, construct(xi,k,matrix(rnorm((n+2)*(k+1)),ncol=(k+1)))) spl=gather(spl, construct(xi,k,matrix(rnorm((n+2)*(k+1)),ncol=(k+1)))) # calculate the derivative of splines dspl = deriva(spl) plot(spl) plot(dspl) #----------------------------------------------# #--- Examples with different support ranges ---# #----------------------------------------------# n=25; k=3 xi=seq(0,1,by=1/(n+1)); set.seed(5) #Defining support ranges for three splines supp=matrix(c(2,12,4,20,6,25),byrow=TRUE,ncol=2) #Initial random matrices of the derivative for each spline SS1=matrix(rnorm((supp[1,2]-supp[1,1]+1)*(k+1)),ncol=(k+1)) SS2=matrix(rnorm((supp[2,2]-supp[2,1]+1)*(k+1)),ncol=(k+1)) SS3=matrix(rnorm((supp[3,2]-supp[3,1]+1)*(k+1)),ncol=(k+1)) spl=construct(xi,k,SS1,supp[1,]) #constructing the first correct spline nspl=construct(xi,k,SS2,supp[2,]) spl=gather(spl,nspl) #the second and the first ones nspl=construct(xi,k,SS3,supp[3,]) spl=gather(spl,nspl) #the third is added der_spl = deriva(spl) oldpar <- par(no.readonly = TRUE) par(mar=c(1,1,1,1)) par(mfrow=c(2,1)) plot(der_spl) plot(spl) par(mfrow=c(1,1)) par(oldpar) ```