Example #1
0
def test_MatAdd():
    A = MatrixSymbol('A', n, m)
    B = MatrixSymbol('B', n, m)

    assert (A + B).shape == A.shape
    assert MatAdd(A, -A, 2 * B).is_MatMul

    raises(ShapeError, lambda: A + B.T)
    raises(TypeError, lambda: A + 1)
    raises(TypeError, lambda: 5 + A)
    raises(TypeError, lambda: 5 - A)

    assert MatAdd(A, ZeroMatrix(n, m), -A) == ZeroMatrix(n, m)
Example #2
0
def test_MatAdd():
    n, m = symbols('n m', integer=True)
    A = MatrixSymbol('A', n, m)
    B = MatrixSymbol('B', n, m)

    assert (A + B).shape == A.shape
    assert MatAdd(A, -A, 2 * B).is_Mul

    raises(ShapeError, lambda: A + B.T)
    raises(ValueError, lambda: A + 1)
    raises(ValueError, lambda: 5 + A)
    raises(ValueError, lambda: 5 - A)

    assert MatAdd(A, ZeroMatrix(n, m), -A) == ZeroMatrix(n, m)
    assert MatAdd(ZeroMatrix(n, m), S(0)) == ZeroMatrix(n, m)
def test_generic_zero_matrix():
    z = GenericZeroMatrix()
    A = MatrixSymbol("A", n, n)

    assert z == z
    assert z != A
    assert A != z

    assert z.is_ZeroMatrix

    raises(TypeError, lambda: z.shape)
    raises(TypeError, lambda: z.rows)
    raises(TypeError, lambda: z.cols)

    assert MatAdd() == z
    assert MatAdd(z, A) == MatAdd(A)
    # Make sure it is hashable
    hash(z)
Example #4
0
def test_invariants():
    A = MatrixSymbol('A', n, m)
    B = MatrixSymbol('B', m, l)
    X = MatrixSymbol('X', n, n)
    objs = [Identity(n), ZeroMatrix(m, n), A, MatMul(A, B), MatAdd(A, A),
            Transpose(A), Adjoint(A), Inverse(X), MatPow(X, 2), MatPow(X, -1),
            MatPow(X, 0)]
    for obj in objs:
        assert obj == obj.__class__(*obj.args)
Example #5
0
def test_matadd_simplify():
    A = MatrixSymbol('A', 1, 1)
    assert simplify(MatAdd(A, ImmutableMatrix([[sin(x)**2 + cos(x)**2]]))) == \
        MatAdd(A, ImmutableMatrix([[1]]))