def testMatch(self): N = 11 x0 = random.random(N); x0.sort() y0 = random.random(N) for interp_type in ('linear', 'cubic'): y = interp(x0, y0, interp_type) x = x0.copy() self.assertAlmostEqual(abs(value(y(x) - y0)).max(), 0)
def testMatchDeriv(self): N = 11 x0 = random.random(N); x0.sort() y0 = random.random(N) y = interp(x0, y0, 'cubic') x = x0.copy() yp0 = value(y.y0[:,1]) yp1 = value(y.derivative(x)) yp2 = np.diag(y(x).diff(x).todense()) self.assertAlmostEqual(abs(yp1 - yp0).max(), 0) self.assertAlmostEqual(abs(yp2 - yp0).max(), 0)
def testDiagonalPerturbation(self): import pylab N = 2 A_additional_diag = array(1) A = random.random([N, N]) + A_additional_diag * eye(N) b = eye(N) Ainv = solve(A, b) Ainv_diff_A_diag = Ainv.diff(A_additional_diag) Ainv_diff_A_diag = np.array(Ainv_diff_A_diag.todense()).reshape([N, N]) Ainv_diff_A_diag_analytical = -np.dot(value(Ainv), value(Ainv)) difference = Ainv_diff_A_diag - Ainv_diff_A_diag_analytical self.assertAlmostEqual(abs(difference).max(), 0)