K in/ddlmZddlmZGddeZGddeZGddeZGd d eZGd d eZGd deZ GddeZ GddeZ GddeZ GddeZ GddeZGddeZGddeZGddeZGdd eZGd!d"eZGd#d$eZy%)&) Predicate) Dispatcherc(eZdZdZdZeddZy)SquarePredicateak Square matrix predicate. Explanation =========== ``Q.square(x)`` is true iff ``x`` is a square matrix. A square matrix is a matrix with the same number of rows and columns. Examples ======== >>> from sympy import Q, ask, MatrixSymbol, ZeroMatrix, Identity >>> X = MatrixSymbol('X', 2, 2) >>> Y = MatrixSymbol('X', 2, 3) >>> ask(Q.square(X)) True >>> ask(Q.square(Y)) False >>> ask(Q.square(ZeroMatrix(3, 3))) True >>> ask(Q.square(Identity(3))) True References ========== .. [1] https://en.wikipedia.org/wiki/Square_matrix square SquareHandlerzHandler for Q.square.docN__name__ __module__ __qualname____doc__namerhandlerk/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sympy/assumptions/predicates/matrices.pyrrs< D.EFGrrc(eZdZdZdZeddZy)SymmetricPredicatea Symmetric matrix predicate. Explanation =========== ``Q.symmetric(x)`` is true iff ``x`` is a square matrix and is equal to its transpose. Every square diagonal matrix is a symmetric matrix. Examples ======== >>> from sympy import Q, ask, MatrixSymbol >>> X = MatrixSymbol('X', 2, 2) >>> Y = MatrixSymbol('Y', 2, 3) >>> Z = MatrixSymbol('Z', 2, 2) >>> ask(Q.symmetric(X*Z), Q.symmetric(X) & Q.symmetric(Z)) True >>> ask(Q.symmetric(X + Z), Q.symmetric(X) & Q.symmetric(Z)) True >>> ask(Q.symmetric(Y)) False References ========== .. [1] https://en.wikipedia.org/wiki/Symmetric_matrix symmetricSymmetricHandlerzHandler for Q.symmetric.r Nr rrrrr's@ D+1KLGrrc(eZdZdZdZeddZy)InvertiblePredicatea Invertible matrix predicate. Explanation =========== ``Q.invertible(x)`` is true iff ``x`` is an invertible matrix. A square matrix is called invertible only if its determinant is 0. Examples ======== >>> from sympy import Q, ask, MatrixSymbol >>> X = MatrixSymbol('X', 2, 2) >>> Y = MatrixSymbol('Y', 2, 3) >>> Z = MatrixSymbol('Z', 2, 2) >>> ask(Q.invertible(X*Y), Q.invertible(X)) False >>> ask(Q.invertible(X*Z), Q.invertible(X) & Q.invertible(Z)) True >>> ask(Q.invertible(X), Q.fullrank(X) & Q.square(X)) True References ========== .. [1] https://en.wikipedia.org/wiki/Invertible_matrix invertibleInvertibleHandlerzHandler for Q.invertible.r Nr rrrrrLs: D,2MNGrrc(eZdZdZdZeddZy)OrthogonalPredicateao Orthogonal matrix predicate. Explanation =========== ``Q.orthogonal(x)`` is true iff ``x`` is an orthogonal matrix. A square matrix ``M`` is an orthogonal matrix if it satisfies ``M^TM = MM^T = I`` where ``M^T`` is the transpose matrix of ``M`` and ``I`` is an identity matrix. Note that an orthogonal matrix is necessarily invertible. Examples ======== >>> from sympy import Q, ask, MatrixSymbol, Identity >>> X = MatrixSymbol('X', 2, 2) >>> Y = MatrixSymbol('Y', 2, 3) >>> Z = MatrixSymbol('Z', 2, 2) >>> ask(Q.orthogonal(Y)) False >>> ask(Q.orthogonal(X*Z*X), Q.orthogonal(X) & Q.orthogonal(Z)) True >>> ask(Q.orthogonal(Identity(3))) True >>> ask(Q.invertible(X), Q.orthogonal(X)) True References ========== .. [1] https://en.wikipedia.org/wiki/Orthogonal_matrix orthogonalOrthogonalHandlerzHandler for key 'orthogonal'.r Nr rrrrrns!D D,2QRGrrc(eZdZdZdZeddZy)UnitaryPredicatea Unitary matrix predicate. Explanation =========== ``Q.unitary(x)`` is true iff ``x`` is a unitary matrix. Unitary matrix is an analogue to orthogonal matrix. A square matrix ``M`` with complex elements is unitary if :math:``M^TM = MM^T= I`` where :math:``M^T`` is the conjugate transpose matrix of ``M``. Examples ======== >>> from sympy import Q, ask, MatrixSymbol, Identity >>> X = MatrixSymbol('X', 2, 2) >>> Y = MatrixSymbol('Y', 2, 3) >>> Z = MatrixSymbol('Z', 2, 2) >>> ask(Q.unitary(Y)) False >>> ask(Q.unitary(X*Z*X), Q.unitary(X) & Q.unitary(Z)) True >>> ask(Q.unitary(Identity(3))) True References ========== .. [1] https://en.wikipedia.org/wiki/Unitary_matrix unitaryUnitaryHandlerzHandler for key 'unitary'.r Nr rrrr"r"s> D)/KLGrr"c(eZdZdZdZeddZy)FullRankPredicateaA Fullrank matrix predicate. Explanation =========== ``Q.fullrank(x)`` is true iff ``x`` is a full rank matrix. A matrix is full rank if all rows and columns of the matrix are linearly independent. A square matrix is full rank iff its determinant is nonzero. Examples ======== >>> from sympy import Q, ask, MatrixSymbol, ZeroMatrix, Identity >>> X = MatrixSymbol('X', 2, 2) >>> ask(Q.fullrank(X.T), Q.fullrank(X)) True >>> ask(Q.fullrank(ZeroMatrix(3, 3))) False >>> ask(Q.fullrank(Identity(3))) True fullrankFullRankHandlerzHandler for key 'fullrank'.r Nr rrrr&r&s0 D*0MNGrr&c(eZdZdZdZeddZy)PositiveDefinitePredicatea Positive definite matrix predicate. Explanation =========== If $M$ is a :math:`n \times n` symmetric real matrix, it is said to be positive definite if :math:`Z^TMZ` is positive for every non-zero column vector $Z$ of $n$ real numbers. Examples ======== >>> from sympy import Q, ask, MatrixSymbol, Identity >>> X = MatrixSymbol('X', 2, 2) >>> Y = MatrixSymbol('Y', 2, 3) >>> Z = MatrixSymbol('Z', 2, 2) >>> ask(Q.positive_definite(Y)) False >>> ask(Q.positive_definite(Identity(3))) True >>> ask(Q.positive_definite(X + Z), Q.positive_definite(X) & ... Q.positive_definite(Z)) True References ========== .. [1] https://en.wikipedia.org/wiki/Positive-definite_matrix positive_definitePositiveDefiniteHandlerz$Handler for key 'positive_definite'.r Nr rrrr*r*s> D28^_Grr*c(eZdZdZdZeddZy)UpperTriangularPredicatea Upper triangular matrix predicate. Explanation =========== A matrix $M$ is called upper triangular matrix if :math:`M_{ij}=0` for :math:`i>> from sympy import Q, ask, ZeroMatrix, Identity >>> ask(Q.upper_triangular(Identity(3))) True >>> ask(Q.upper_triangular(ZeroMatrix(3, 3))) True References ========== .. [1] https://mathworld.wolfram.com/UpperTriangularMatrix.html upper_triangularUpperTriangularHandlerz#Handler for key 'upper_triangular'.r Nr rrrr.r.0 D17\]Grr.c(eZdZdZdZeddZy)LowerTriangularPredicatea Lower triangular matrix predicate. Explanation =========== A matrix $M$ is called lower triangular matrix if :math:`M_{ij}=0` for :math:`i>j`. Examples ======== >>> from sympy import Q, ask, ZeroMatrix, Identity >>> ask(Q.lower_triangular(Identity(3))) True >>> ask(Q.lower_triangular(ZeroMatrix(3, 3))) True References ========== .. [1] https://mathworld.wolfram.com/LowerTriangularMatrix.html lower_triangularLowerTriangularHandlerz#Handler for key 'lower_triangular'.r Nr rrrr3r3r1rr3c(eZdZdZdZeddZy)DiagonalPredicateaN Diagonal matrix predicate. Explanation =========== ``Q.diagonal(x)`` is true iff ``x`` is a diagonal matrix. A diagonal matrix is a matrix in which the entries outside the main diagonal are all zero. Examples ======== >>> from sympy import Q, ask, MatrixSymbol, ZeroMatrix >>> X = MatrixSymbol('X', 2, 2) >>> ask(Q.diagonal(ZeroMatrix(3, 3))) True >>> ask(Q.diagonal(X), Q.lower_triangular(X) & ... Q.upper_triangular(X)) True References ========== .. [1] https://en.wikipedia.org/wiki/Diagonal_matrix diagonalDiagonalHandlerzHandler for key 'diagonal'.r Nr rrrr7r74s6 D*0MNGrr7c(eZdZdZdZeddZy)IntegerElementsPredicateaT Integer elements matrix predicate. Explanation =========== ``Q.integer_elements(x)`` is true iff all the elements of ``x`` are integers. Examples ======== >>> from sympy import Q, ask, MatrixSymbol >>> X = MatrixSymbol('X', 4, 4) >>> ask(Q.integer(X[1, 2]), Q.integer_elements(X)) True integer_elementsIntegerElementsHandlerz#Handler for key 'integer_elements'.r Nr rrrr;r;Ts$ D17\]Grr;c(eZdZdZdZeddZy)RealElementsPredicateaL Real elements matrix predicate. Explanation =========== ``Q.real_elements(x)`` is true iff all the elements of ``x`` are real numbers. Examples ======== >>> from sympy import Q, ask, MatrixSymbol >>> X = MatrixSymbol('X', 4, 4) >>> ask(Q.real(X[1, 2]), Q.real_elements(X)) True real_elementsRealElementsHandlerz Handler for key 'real_elements'.r Nr rrrr?r?ks$ D.4VWGrr?c(eZdZdZdZeddZy)ComplexElementsPredicatea Complex elements matrix predicate. Explanation =========== ``Q.complex_elements(x)`` is true iff all the elements of ``x`` are complex numbers. Examples ======== >>> from sympy import Q, ask, MatrixSymbol >>> X = MatrixSymbol('X', 4, 4) >>> ask(Q.complex(X[1, 2]), Q.complex_elements(X)) True >>> ask(Q.complex_elements(X), Q.integer_elements(X)) True complex_elementsComplexElementsHandlerz#Handler for key 'complex_elements'.r Nr rrrrCrCs( D17\]GrrCc(eZdZdZdZeddZy)SingularPredicatea Singular matrix predicate. A matrix is singular iff the value of its determinant is 0. Examples ======== >>> from sympy import Q, ask, MatrixSymbol >>> X = MatrixSymbol('X', 4, 4) >>> ask(Q.singular(X), Q.invertible(X)) False >>> ask(Q.singular(X), ~Q.invertible(X)) True References ========== .. [1] https://mathworld.wolfram.com/SingularMatrix.html singularSingularHandlerzPredicate fore key 'singular'.r Nr rrrrGrGs* D*0PQGrrGc(eZdZdZdZeddZy)NormalPredicatea^ Normal matrix predicate. A matrix is normal if it commutes with its conjugate transpose. Examples ======== >>> from sympy import Q, ask, MatrixSymbol >>> X = MatrixSymbol('X', 4, 4) >>> ask(Q.normal(X), Q.unitary(X)) True References ========== .. [1] https://en.wikipedia.org/wiki/Normal_matrix normal NormalHandlerzPredicate fore key 'normal'.r Nr rrrrKrKs& D.LMGrrKc(eZdZdZdZeddZy)TriangularPredicatea Triangular matrix predicate. Explanation =========== ``Q.triangular(X)`` is true if ``X`` is one that is either lower triangular or upper triangular. Examples ======== >>> from sympy import Q, ask, MatrixSymbol >>> X = MatrixSymbol('X', 4, 4) >>> ask(Q.triangular(X), Q.upper_triangular(X)) True >>> ask(Q.triangular(X), Q.lower_triangular(X)) True References ========== .. [1] https://en.wikipedia.org/wiki/Triangular_matrix triangularTriangularHandlerz Predicate fore key 'triangular'.r Nr rrrrOrOs2 D,2TUGrrOc(eZdZdZdZeddZy)UnitTriangularPredicateaJ Unit triangular matrix predicate. Explanation =========== A unit triangular matrix is a triangular matrix with 1s on the diagonal. Examples ======== >>> from sympy import Q, ask, MatrixSymbol >>> X = MatrixSymbol('X', 4, 4) >>> ask(Q.triangular(X), Q.unit_triangular(X)) True unit_triangularUnitTriangularHandlerz%Predicate fore key 'unit_triangular'.r Nr rrrrSrSs$ D06]^GrrSN)sympy.assumptionsrsympy.multipledispatchrrrrrr"r&r*r.r3r7r;r?rCrGrKrOrSrrrrXs'- Gi GF"M"MJO)OD$S)$SN!My!MHO O:!` !`H^y^:^y^:O O@^y^.XIX.^y^2R R4NiN0V)V<_i_r