def test_check_derivative(self): def jac(x): return csr_matrix(self.jac(x)) accuracy = check_derivative(self.fun, jac, self.x0, bounds=(self.lb, self.ub), sparse_diff=True) assert_(accuracy < 1e-9) A = self.structure(self.n) groups = group_columns(A) accuracy = check_derivative(self.fun, jac, self.x0, bounds=(self.lb, self.ub), sparse_diff=True, sparsity=(A, groups)) assert_(accuracy < 1e-9) accuracy = check_derivative(self.fun, jac, self.x0, bounds=(self.lb, self.ub), sparse_diff=False) # Slightly worse accuracy because all elements are computed. # Floating point issues make true 0 to some smal value, then # it is divided by small step and as a result we have ~1e-9 element, # which is actually should be zero. assert_(accuracy < 1e-8)
def test_check_derivative(self): def jac(x): return csr_matrix(self.jac(x)) accuracy = check_derivative( self.fun, jac, self.x0, bounds=(self.lb, self.ub), sparse_diff=True) assert_(accuracy < 1e-9) A = self.structure(self.n) groups = group_columns(A) accuracy = check_derivative( self.fun, jac, self.x0, bounds=(self.lb, self.ub), sparse_diff=True, sparsity=(A, groups) ) assert_(accuracy < 1e-9) accuracy = check_derivative( self.fun, jac, self.x0, bounds=(self.lb, self.ub), sparse_diff=False) # Slightly worse accuracy because all elements are computed. # Floating point issues make true 0 to some smal value, then # it is divided by small step and as a result we have ~1e-9 element, # which is actually should be zero. assert_(accuracy < 1e-8)
def test_check_derivative(self): def jac(x): return csr_matrix(self.jac(x)) accuracy = check_derivative(self.fun, jac, self.x0, bounds=(self.lb, self.ub)) assert_(accuracy < 1e-9) accuracy = check_derivative(self.fun, jac, self.x0, bounds=(self.lb, self.ub)) assert_(accuracy < 1e-9)
def test_check_derivative(self): x0 = np.array([-10.0, 10]) accuracy = check_derivative(self.fun_vector_vector, self.jac_vector_vector, x0) assert_(accuracy < 1e-9) accuracy = check_derivative(self.fun_vector_vector, self.jac_vector_vector, x0) assert_(accuracy < 1e-6) x0 = np.array([0.0, 0.0]) accuracy = check_derivative(self.fun_zero_jacobian, self.jac_zero_jacobian, x0) assert_(accuracy == 0) accuracy = check_derivative(self.fun_zero_jacobian, self.jac_zero_jacobian, x0) assert_(accuracy == 0)
def check_jacobian(self): accuracy = [] if self.sparsity is not None: sparse_diff = True groups = group_columns(self.sparsity) sparsity = (self.sparsity, groups) else: sparse_diff = False sparsity = None for x0, bounds in self.specs: x = x0 + np.random.randn(self.n) acc = check_derivative(self.fun, self.jac, x, bounds=bounds, sparse_diff=sparse_diff, sparsity=sparsity) accuracy.append(acc) return accuracy