def apply(self, f_del, h, step_ratio=2.0): """ Apply finite difference rule along the first axis. Return derivative estimates of fun at x0 for a sequence of stepsizes h Parameters ---------- f_del: finite differences h: steps """ fd_rule = self.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]
def _apply_fd_rule(self, step_ratio, sequence, steps): """ Return derivative estimates of fun at x0 for a sequence of stepsizes h Member variables used --------------------- n """ 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
def _apply_fd_rule(self, step_ratio, sequence, steps): """ Return derivative estimates of f at x0 for a sequence of stepsizes h Member variables used --------------------- n """ 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
def _apply_fd_rule(self, fd_rule, sequence, steps): """ Return derivative estimates of f at x0 for a sequence of stepsizes h Member variables used --------------------- n """ f_del, h, original_shape = self._vstack(sequence, steps) ne = h.shape[0] if ne < fd_rule.size: raise ValueError('num_steps (%d) must be larger than ' '(%d) n + order - 1 = %d + %d -1' ' (%s)' % (ne, fd_rule.size, self.n, self.order, self.method) ) nr = (fd_rule.size-1) 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