Beispiel #1
0
    def _test_schur(dtype):
        rand = _Random()
        a = rand.randmat(5, 5, dtype)

        t, q = schur(a)[:2]

        assert_array_almost_equal(dtype, np.dot(np.dot(q, t), np.conj(q.T)), a)
Beispiel #2
0
    def _test_schur(dtype):
        rand = _Random()
        a = rand.randmat(5, 5, dtype)

        t, q = schur(a)[:2]

        assert_array_almost_equal(dtype, np.dot(np.dot(q, t), np.conj(q.T)), a)
Beispiel #3
0
    def _test_evecs_from_schur(dtype):
        rand = _Random()
        a = rand.randmat(5, 5, dtype)

        t, q, ev = schur(a)

        vl, vr = evecs_from_schur(t, q, select=None, left=True, right=True)

        assert_array_almost_equal(dtype, np.dot(vr, np.dot(np.diag(ev),
                                                    np.linalg.inv(vr))), a)
        assert_array_almost_equal(dtype, np.dot(np.linalg.inv(np.conj(vl.T)),
                                         np.dot(np.diag(ev), np.conj(vl.T))),
                                  a)

        select = np.array([True, True, False, False, False], dtype=bool)

        vl, vr = evecs_from_schur(t, q, select, left=True, right=True)

        assert_equal(vr.shape[1], 2)
        assert_equal(vl.shape[1], 2)
        assert_array_almost_equal(dtype, np.dot(a, vr),
                                  np.dot(vr, np.diag(ev[select])))
        assert_array_almost_equal(dtype, np.dot(vl.T.conj(), a),
                                  np.dot(np.diag(ev[select]), vl.T.conj()))

        vl, vr = evecs_from_schur(t, q, lambda i: i<2, left=True, right=True)

        assert_equal(vr.shape[1], 2)
        assert_equal(vl.shape[1], 2)
        assert_array_almost_equal(dtype, np.dot(a, vr),
                                  np.dot(vr, np.diag(ev[select])))
        assert_array_almost_equal(dtype, np.dot(vl.T.conj(), a),
                                  np.dot(np.diag(ev[select]), vl.T.conj()))
Beispiel #4
0
    def _test_evecs_from_schur(dtype):
        rand = _Random()
        a = rand.randmat(5, 5, dtype)

        t, q, ev = schur(a)

        vl, vr = evecs_from_schur(t, q, select=None, left=True, right=True)

        assert_array_almost_equal(
            dtype, np.dot(vr, np.dot(np.diag(ev), np.linalg.inv(vr))), a)
        assert_array_almost_equal(
            dtype,
            np.dot(np.linalg.inv(np.conj(vl.T)),
                   np.dot(np.diag(ev), np.conj(vl.T))), a)

        select = np.array([True, True, False, False, False], dtype=bool)

        vl, vr = evecs_from_schur(t, q, select, left=True, right=True)

        assert vr.shape[1] == 2
        assert vl.shape[1] == 2
        assert_array_almost_equal(dtype, np.dot(a, vr),
                                  np.dot(vr, np.diag(ev[select])))
        assert_array_almost_equal(dtype, np.dot(vl.T.conj(), a),
                                  np.dot(np.diag(ev[select]), vl.T.conj()))

        vl, vr = evecs_from_schur(t, q, lambda i: i < 2, left=True, right=True)

        assert vr.shape[1] == 2
        assert vl.shape[1] == 2
        assert_array_almost_equal(dtype, np.dot(a, vr),
                                  np.dot(vr, np.diag(ev[select])))
        assert_array_almost_equal(dtype, np.dot(vl.T.conj(), a),
                                  np.dot(np.diag(ev[select]), vl.T.conj()))
Beispiel #5
0
    def _test_convert_r2c_schur(dtype):
        rand = _Random()
        a = rand.randmat(10, 10, dtype)

        t, q = schur(a)[:2]
        t2, q2 = convert_r2c_schur(t, q)

        assert_array_almost_equal(dtype, np.dot(np.dot(q, t), np.conj(q.T)), a)
        assert_array_almost_equal(dtype, np.dot(np.dot(q2, t2), np.conj(q2.T)),
                                  a)
Beispiel #6
0
    def _test_convert_r2c_schur(dtype):
        rand = _Random()
        a = rand.randmat(10, 10, dtype)

        t, q = schur(a)[:2]
        t2, q2 = convert_r2c_schur(t, q)

        assert_array_almost_equal(dtype, np.dot(np.dot(q, t), np.conj(q.T)), a)
        assert_array_almost_equal(dtype, np.dot(np.dot(q2, t2), np.conj(q2.T)),
                                  a)
Beispiel #7
0
    def _test_order_schur(dtype):
        rand = _Random()
        a = rand.randmat(10, 10, dtype)

        t, q, ev = schur(a)

        t2, q2, ev2 = order_schur(lambda i: i>2 and i<7, t, q)

        assert_array_almost_equal(dtype, np.dot(np.dot(q, t), np.conj(q.T)), a)
        assert_array_almost_equal(dtype, np.dot(np.dot(q2, t2), np.conj(q2.T)),
                                  a)
        assert_array_almost_equal(dtype, np.sort(ev), np.sort(ev2))
        assert_array_almost_equal(dtype, np.sort(ev[3:7]), np.sort(ev2[:4]))

        sel = [False, False, 0, True, True, True, 1, False, False, False]

        t3, q3 = order_schur(sel, t, q)[:2]
        assert_array_almost_equal(dtype, np.dot(np.dot(q3, t3), np.conj(q3.T)),
                                  a)
        assert_array_almost_equal(dtype, t2, t3)
        assert_array_almost_equal(dtype, q2, q3)
Beispiel #8
0
    def _test_order_schur(dtype):
        rand = _Random()
        a = rand.randmat(10, 10, dtype)

        t, q, ev = schur(a)

        t2, q2, ev2 = order_schur(lambda i: i > 2 and i < 7, t, q)

        assert_array_almost_equal(dtype, np.dot(np.dot(q, t), np.conj(q.T)), a)
        assert_array_almost_equal(dtype, np.dot(np.dot(q2, t2), np.conj(q2.T)),
                                  a)
        assert_array_almost_equal(dtype, np.sort(ev), np.sort(ev2))
        assert_array_almost_equal(dtype, np.sort(ev[3:7]), np.sort(ev2[:4]))

        sel = [False, False, 0, True, True, True, 1, False, False, False]

        t3, q3 = order_schur(sel, t, q)[:2]
        assert_array_almost_equal(dtype, np.dot(np.dot(q3, t3), np.conj(q3.T)),
                                  a)
        assert_array_almost_equal(dtype, t2, t3)
        assert_array_almost_equal(dtype, q2, q3)