numerically estimating derivatives