From ApCoCoAWiki
This article is about a function from ApCoCoA-1.


Compute numerical derivatives of arbitrarily spaced data using local polynomial regression.


NumericalDerivative(Points: MAT, MaxDiffOrd:INT, Nl:INT, Nr:INT, Deg:INT)


This command computes numerical derivatives of given data series.

Matrix Points is considered to consist of two columns, ie., is considered to be of type Mat([[X_1,Y_1],...,[X_k, Y_k]]).

The polynomial degree Deg must be less than the window size Nl+Nr+1. The derivatives are computed up to order MaxDiffOrd.

The resulting matrix has Nl+Nr rows less than Points and has MaxDiffOrd+1 columns.

  • @param Points The data points for which numerical derivatives are computed.

  • @param MaxDiffOrd The order up to which derivatives are computed.

  • @param Nl Number of left data points to be considered.

  • @param Nr Number of right data points to be considered.

  • @param Deg Maximum degree of the interpolation polynomal. Must be greater or equal MaxOrd.

  • @return A matrix that represents the derivatives of Points up to order MaxDiffOrd.


Points := Mat([[ I^2/800, Fn.CosN(I^2/800, 10) ] | I In 0..40 ]);

MaxDiffOrd := 3;
Nl := 4;
Nr := 4;
Deg := 3;
Mode := 0; -- Mode is currently not used!
StepWidth := 0.5;

Result := Num.NumericalDerivative(Points, MaxDiffOrd, Nl, Nr, Deg);
Dec(Result, 2); 

-- (Result) --
  [<quote>0.99</quote>, <quote>0.02</quote>, <quote>0.99</quote>, <quote>0.03</quote>]
  [<quote>0.99</quote>, <quote>0.03</quote>, <quote>0.99</quote>, <quote>0.05</quote>]

See also