def check_error(n, m, h, TV=False): err_inv = 1 failed = False A = np.random.random((n, n)) B = np.random.random((n, m)) try: Ainv = np.linalg.inv(A) Aexp = expm(A * h) Psi = Ainv.dot((Aexp - np.eye(n)).dot(B)) err_inv = np.linalg.norm(A.dot(np.linalg.inv(A)) - np.eye(n)) except Exception as e : print('Exception in check_error(I) :', e) pass print('err_inv:', err_inv) if err_inv < 1.0e-12: try: (AexpS, PsiS) = compute_dt_matrices(A, B, h, TV) err_phi = np.linalg.norm((Aexp - AexpS)) err_psi = np.linalg.norm(Psi - PsiS) if err_phi > 5.0e-12 or err_psi > 5.0e-12: print('err_phi', err_phi, 'err_psi', err_psi) failed = True except Exception as e : print('Exception in check_error(II) :', e) print(A.shape) failed = True return failed
def check_error(n, m, h, TV=False): err_inv = 1 failed = False A = np.random.random((n, n)) B = np.random.random((n, m)) try: Ainv = np.linalg.inv(A) Aexp = expm(A * h) Psi = Ainv.dot((Aexp - np.eye(n)).dot(B)) err_inv = np.linalg.norm(A.dot(np.linalg.inv(A)) - np.eye(n)) except Exception as e: print('Exception in check_error(I) :', e) pass print('err_inv:', err_inv) if err_inv < 1.0e-12: try: (AexpS, PsiS) = compute_dt_matrices(A, B, h, TV) err_phi = np.linalg.norm((Aexp - AexpS)) err_psi = np.linalg.norm(Psi - PsiS) if err_phi > 5.0e-12 or err_psi > 5.0e-12: print('err_phi', err_phi, 'err_psi', err_psi) failed = True except Exception as e: print('Exception in check_error(II) :', e) print(A.shape) failed = True return failed
def test_TV(): h = 1.0e-4 k = 0 err = False while k < 10: n = np.random.randint(2, kmax) m = np.random.randint(1, n) A = np.random.random((n, n)) B = np.random.random((n, m)) errInv = 1 try: Ainv = np.linalg.inv(A) Aexp = expm(A*h) Psi = Ainv.dot((Aexp-np.eye(n)).dot(B)) k += 1 errInv = np.linalg.norm(A.dot(np.linalg.inv(A))-np.eye(n)) except: pass if errInv < 1.0e-12: try: (AexpS, PsiS) = compute_dt_matrices(A, B, h, TV=True) except: print(n, m) errPhi = np.linalg.norm((Aexp - AexpS)) errPsi = np.linalg.norm(Psi-PsiS) if errPhi > 5.0e-12 or errPsi > 5.0e-12: print(errPhi, errPsi) err = True assert err == False