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)
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)
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)
def test_matadd_simplify(): A = MatrixSymbol('A', 1, 1) assert simplify(MatAdd(A, ImmutableMatrix([[sin(x)**2 + cos(x)**2]]))) == \ MatAdd(A, ImmutableMatrix([[1]]))