code: def _apply_fd_rule(self, step_ratio, sequence, steps):
          
          f_del, h, original_shape = self._vstack(sequence, steps)
          fd_rule = self._get_finite_difference_rule(step_ratio)
          ne = h.shape[0]
          nr = fd_rule.size - 1
          _assert(nr < ne, 'num_steps ({0:d}) must  be larger than '
                  '({1:d}) n + order - 1 = {2:d} + {3:d} -1'
                  ' ({4:s})'.format(ne, nr+1, self.n, self.order, self.method))
          f_diff = convolve(f_del, fd_rule[::-1], axis=0, origin=nr // 2)
  
          der_init = f_diff / (h ** self.n)
          ne = max(ne - nr, 1)
          return der_init[:ne], h[:ne], original_shape
docs: Return derivative estimates of fun at x0 for a sequence of stepsizes h
  
          Member variables used
          ---------------------
          n