Example #1
0
def test_Identity():
    A = MatrixSymbol('A', n, m)
    i, j = symbols('i j')

    In = Identity(n)
    Im = Identity(m)

    assert A * Im == A
    assert In * A == A

    assert transpose(In) == In
    assert In.inverse() == In
    assert In.conjugate() == In

    assert In[i, j] != 0
    assert Sum(In[i, j], (i, 0, n - 1), (j, 0, n - 1)).subs(n, 3).doit() == 3
    assert Sum(Sum(In[i, j], (i, 0, n - 1)), (j, 0, n - 1)).subs(n,
                                                                 3).doit() == 3

    # If range exceeds the limit `(0, n-1)`, do not remove `Piecewise`:
    expr = Sum(In[i, j], (i, 0, n - 1))
    assert expr.doit() == 1
    expr = Sum(In[i, j], (i, 0, n - 2))
    assert expr.doit().dummy_eq(
        Piecewise((1, (j >= 0) & (j <= n - 2)), (0, True)))
    expr = Sum(In[i, j], (i, 1, n - 1))
    assert expr.doit().dummy_eq(
        Piecewise((1, (j >= 1) & (j <= n - 1)), (0, True)))
    assert Identity(3).as_explicit() == ImmutableMatrix.eye(3)