Ejemplo n.º 1
0
 def _help_test_specific_expm_interval_status(self, target_status):
     np.random.seed(1234)
     start = 0.1
     stop = 3.2
     num = 13
     endpoint = True
     n = 5
     k = 2
     nrepeats = 10
     nsuccesses = 0
     for num in [14, 13, 2] * nrepeats:
         A = np.random.randn(n, n)
         B = np.random.randn(n, k)
         status = _expm_multiply_interval(A, B,
                 start=start, stop=stop, num=num, endpoint=endpoint,
                 status_only=True)
         if status == target_status:
             X, status = _expm_multiply_interval(A, B,
                     start=start, stop=stop, num=num, endpoint=endpoint,
                     status_only=False)
             assert_equal(X.shape, (num, n, k))
             samples = np.linspace(start=start, stop=stop,
                     num=num, endpoint=endpoint)
             for solution, t in zip(X, samples):
                 assert_allclose(solution, scipy.linalg.expm(t*A).dot(B))
             nsuccesses += 1
     if not nsuccesses:
         msg = 'failed to find a status-' + str(target_status) + ' interval'
         raise Exception(msg)
Ejemplo n.º 2
0
 def _help_test_specific_expm_interval_status(self, target_status):
     np.random.seed(1234)
     start = 0.1
     stop = 3.2
     num = 13
     endpoint = True
     n = 5
     k = 2
     nrepeats = 10
     nsuccesses = 0
     for num in [14, 13, 2] * nrepeats:
         A = np.random.randn(n, n)
         B = np.random.randn(n, k)
         status = _expm_multiply_interval(A, B,
                 start=start, stop=stop, num=num, endpoint=endpoint,
                 status_only=True)
         if status == target_status:
             X, status = _expm_multiply_interval(A, B,
                     start=start, stop=stop, num=num, endpoint=endpoint,
                     status_only=False)
             assert_equal(X.shape, (num, n, k))
             samples = np.linspace(start=start, stop=stop,
                     num=num, endpoint=endpoint)
             for solution, t in zip(X, samples):
                 assert_allclose(solution, scipy.linalg.expm(t*A).dot(B))
             nsuccesses += 1
     if not nsuccesses:
         msg = 'failed to find a status-' + str(target_status) + ' interval'
         raise Exception(msg)