def test_KroneckerProduct_combine_pow(): X = MatrixSymbol('X', n, n) Y = MatrixSymbol('Y', n, n) assert combine_kronecker(KroneckerProduct( X, Y)**x) == KroneckerProduct(X**x, Y**x) assert combine_kronecker(x * KroneckerProduct(X, Y) ** 2) == x * KroneckerProduct(X**2, Y**2) assert combine_kronecker( x * (KroneckerProduct(X, Y)**2) * KroneckerProduct(A, B)) == x * KroneckerProduct(X**2 * A, Y**2 * B)
def test_KroneckerProduct_combine_pow(): X = MatrixSymbol('X', n, n) Y = MatrixSymbol('Y', n, n) assert combine_kronecker(KroneckerProduct( X, Y)**x) == KroneckerProduct(X**x, Y**x) assert combine_kronecker(x * KroneckerProduct(X, Y) ** 2) == x * KroneckerProduct(X**2, Y**2) assert combine_kronecker( x * (KroneckerProduct(X, Y)**2) * KroneckerProduct(A, B)) == x * KroneckerProduct(X**2 * A, Y**2 * B) # cannot simplify because of non-square arguments to kronecker product: assert combine_kronecker(KroneckerProduct(A, B.T) ** m) == KroneckerProduct(A, B.T) ** m
def test_KroneckerProduct_combine_mul(): X = MatrixSymbol('X', m, n) Y = MatrixSymbol('Y', m, n) kp1 = kronecker_product(A, X) kp2 = kronecker_product(B, Y) assert combine_kronecker(kp1 + kp2) == kronecker_product(A + B, X + Y)
def test_KroneckerProduct_combine_add(): kp1 = kronecker_product(A, B) kp2 = kronecker_product(C, W) assert combine_kronecker(kp1 * kp2) == kronecker_product(A * C, B * W)
def test_KroneckerProduct_combine_mul(): X = MatrixSymbol('X', m, n) Y = MatrixSymbol('Y', m, n) kp1 = kronecker_product(A, X) kp2 = kronecker_product(B, Y) assert combine_kronecker(kp1+kp2) == kronecker_product(A+B, X+Y)
def test_KroneckerProduct_combine_add(): kp1 = kronecker_product(A, B) kp2 = kronecker_product(C, W) assert combine_kronecker(kp1*kp2) == kronecker_product(A*C, B*W)