本文整理汇总了Python中sage.matrix.matrix.is_Matrix函数的典型用法代码示例。如果您正苦于以下问题:Python is_Matrix函数的具体用法?Python is_Matrix怎么用?Python is_Matrix使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了is_Matrix函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: __init__
def __init__(self, A, b=0, parent=None, convert=True, check=True):
r"""
Create element of an affine group.
TESTS::
sage: G = AffineGroup(4, GF(5))
sage: g = G.random_element()
sage: TestSuite(g).run()
"""
if is_Matrix(A) and A.nrows() == A.ncols() == parent.degree()+1:
g = A
A = g.submatrix(0,0,2,2)
d = parent.degree()
b = [ g[i,d] for i in range(d) ]
convert = True
if convert:
A = parent.matrix_space()(A)
b = parent.vector_space()(b)
if check:
# Note: the coercion framework expects that we raise TypeError for invalid input
if not is_Matrix(A):
raise TypeError('A must be a matrix')
if not (A.parent() is parent.matrix_space()):
raise TypeError('A must be an element of '+str(parent.matrix_space()))
if not (b.parent() is parent.vector_space()):
raise TypeError('b must be an element of '+str(parent.vector_space()))
parent._element_constructor_check(A, b)
super(AffineGroupElement, self).__init__(parent)
self._A = A
self._b = b
开发者ID:biasse,项目名称:sage,代码行数:31,代码来源:group_element.py
示例2: __classcall_private__
def __classcall_private__(self, arg0, arg1=None, names=None):
"""
Choose the correct parent based upon input.
TESTS:
We check arguments with passing in an associative algebra::
sage: cat = Algebras(QQ).WithBasis().FiniteDimensional()
sage: C = CombinatorialFreeModule(QQ, ['x','y','z'], category=cat)
sage: J1 = JordanAlgebra(C, names=['a','b','c'])
sage: J2.<a,b,c> = JordanAlgebra(C)
sage: J1 is J2
True
We check with passing in a symmetric bilinear form::
sage: m = matrix([[0,1],[1,1]])
sage: J1 = JordanAlgebra(m)
sage: J2 = JordanAlgebra(QQ, m)
sage: J3 = JordanAlgebra(m, QQ)
sage: J1 is J2
False
sage: J2 is J3
True
sage: J4 = JordanAlgebra(ZZ, m)
sage: J1 is J4
True
sage: m = matrix(QQ, [[0,1],[1,1]])
sage: J1 = JordanAlgebra(m)
sage: J1 is J2
True
"""
if names is not None:
if isinstance(names, str):
names = names.split(',')
names = tuple(names)
if arg1 is None:
if not is_Matrix(arg0):
if arg0.base_ring().characteristic() == 2:
raise ValueError("the base ring cannot have characteristic 2")
return SpecialJordanAlgebra(arg0, names)
arg0, arg1 = arg0.base_ring(), arg0
elif is_Matrix(arg0):
arg0, arg1 = arg1, arg0
# arg0 is the base ring and arg1 is a matrix
if not arg1.is_symmetric():
raise ValueError("the bilinear form is not symmetric")
arg1 = arg1.change_ring(arg0) # This makes a copy
arg1.set_immutable()
return JordanAlgebraSymmetricBilinear(arg0, arg1, names=names)
开发者ID:mcognetta,项目名称:sage,代码行数:54,代码来源:jordan_algebra.py
示例3: _acted_upon_
def _acted_upon_(self, g, self_on_left):
r"""
Implements the left action of `SL_2(\ZZ)` on self.
EXAMPLES::
sage: g = matrix(ZZ, 2, [1,1,0,1]); g
[1 1]
[0 1]
sage: g * Cusp(2,5)
7/5
sage: Cusp(2,5) * g
Traceback (most recent call last):
...
TypeError: unsupported operand parent(s) for '*': 'Set P^1(QQ) of all cusps' and 'Full MatrixSpace of 2 by 2 dense matrices over Integer Ring'
sage: h = matrix(ZZ, 2, [12,3,-100,7])
sage: h * Cusp(2,5)
-13/55
sage: Cusp(2,5)._acted_upon_(h, False)
-13/55
sage: (h*g) * Cusp(3,7) == h * (g * Cusp(3,7))
True
sage: cm = sage.structure.element.get_coercion_model()
sage: cm.explain(MatrixSpace(ZZ, 2), Cusps)
Action discovered.
Left action by Full MatrixSpace of 2 by 2 dense matrices over Integer Ring on Set P^1(QQ) of all cusps
Result lives in Set P^1(QQ) of all cusps
Set P^1(QQ) of all cusps
"""
if not self_on_left:
if (is_Matrix(g) and g.base_ring() is ZZ
and g.ncols() == 2 and g.nrows() == 2):
a, b, c, d = g.list()
return Cusp(a*self.__a + b*self.__b, c*self.__a + d*self.__b)
开发者ID:drupel,项目名称:sage,代码行数:35,代码来源:cusps.py
示例4: __call__
def __call__(self, f, check=True, unitary=True):
"""
Construct a homomorphism.
.. TODO::
Implement taking generator images and converting them to a matrix.
EXAMPLES::
sage: A = FiniteDimensionalAlgebra(QQ, [Matrix([1])])
sage: B = FiniteDimensionalAlgebra(QQ, [Matrix([[1, 0], [0, 1]]), Matrix([[0, 1], [0, 0]])])
sage: H = Hom(A, B)
sage: H(Matrix([[1, 0]]))
Morphism from Finite-dimensional algebra of degree 1 over Rational Field to
Finite-dimensional algebra of degree 2 over Rational Field given by matrix
[1 0]
"""
if isinstance(f, FiniteDimensionalAlgebraMorphism):
if f.parent() is self:
return f
if f.parent() == self:
return FiniteDimensionalAlgebraMorphism(self, f._matrix, check, unitary)
elif is_Matrix(f):
return FiniteDimensionalAlgebraMorphism(self, f, check, unitary)
try:
from sage.matrix.constructor import Matrix
return FiniteDimensionalAlgebraMorphism(self, Matrix(f), check, unitary)
except Exception:
return RingHomset_generic.__call__(self, f, check)
开发者ID:BlairArchibald,项目名称:sage,代码行数:30,代码来源:finite_dimensional_algebra_morphism.py
示例5: print_obj
def print_obj(out_stream, obj):
"""
Print an object. This function is used internally by the displayhook.
EXAMPLES::
sage: import sage.misc.displayhook, sys
For most objects, printing is done simply using their repr::
sage: sage.misc.displayhook.print_obj(sys.stdout, 'Hello, world!')
'Hello, world!'
sage: sage.misc.displayhook.print_obj(sys.stdout, (1, 2, 3, 4))
(1, 2, 3, 4)
We demonstrate the special format for lists of matrices::
sage: sage.misc.displayhook.print_obj(sys.stdout, \
[matrix([[1], [2]]), matrix([[3], [4]])])
[
[1] [3]
[2], [4]
]
"""
# We only apply the special formatting to lists (or tuples) where the first
# element is a matrix. This should cover most cases.
if isinstance(obj, (tuple, list)):
if len(obj) > 0 and is_Matrix(obj[0]):
if _check_tall_list_and_print(out_stream, obj):
return
print >>out_stream, `obj`
开发者ID:jwbober,项目名称:sagelib,代码行数:31,代码来源:displayhook.py
示例6: __call__
def __call__(self, x):
"""
EXAMPLES::
sage: W = WeylGroup(['A',2])
sage: W(1)
[1 0 0]
[0 1 0]
[0 0 1]
::
sage: W(2)
Traceback (most recent call last):
...
TypeError: no way to coerce element into self.
sage: W2 = WeylGroup(['A',3])
sage: W(1) in W2 # indirect doctest
False
"""
if isinstance(x, self.element_class) and x.parent() is self:
return x
from sage.matrix.matrix import is_Matrix
if not (x in ZZ or is_Matrix(x)): # this should be handled by self.matrix_space()(x)
raise TypeError, "no way to coerce element into self"
M = self.matrix_space()(x)
# This is really bad, especially for infinite groups!
# TODO: compute the image of rho, compose by s_i until back in
# the fundamental chamber. Return True iff the matrix is the identity
g = self._element_constructor_(M)
if not gap(g) in gap(self):
raise TypeError, "no way to coerce element into self."
return g
开发者ID:bgxcpku,项目名称:sagelib,代码行数:35,代码来源:weyl_group.py
示例7: _is_even_symmetric_matrix_
def _is_even_symmetric_matrix_(self, A, R=None):
"""
Tests if a matrix is symmetric, defined over R, and has even diagonal in R.
INPUT:
A -- matrix
R -- ring
EXAMPLES::
sage: Q = QuadraticForm(ZZ, 2, [2,3,5])
sage: A = Q.matrix()
sage: A
[ 4 3]
[ 3 10]
sage: Q._is_even_symmetric_matrix_(A)
True
sage: A[0,0] = 1
sage: Q._is_even_symmetric_matrix_(A)
False
"""
if not is_Matrix(A):
raise TypeError("A is not a matrix.")
ring_coerce_test = True
if R == None: ## This allows us to omit the ring from the variables, and take it from the matrix
R = A.base_ring()
ring_coerce_test = False
if not isinstance(R, Ring):
raise TypeError("R is not a ring.")
if not A.is_square():
return False
## Test that the matrix is symmetric
n = A.nrows()
for i in range(n):
for j in range(i+1, n):
if A[i,j] != A[j,i]:
return False
## Test that all entries coerce to R
if not ((A.base_ring() == R) or (ring_coerce_test == True)):
try:
for i in range(n):
for j in range(i, n):
x = R(A[i,j])
except Exception:
return False
## Test that the diagonal is even (if 1/2 isn't in R)
if not R(2).is_unit():
for i in range(n):
if not is_even(R(A[i,i])):
return False
return True
开发者ID:amitjamadagni,项目名称:sage,代码行数:60,代码来源:quadratic_form.py
示例8: __init__
def __init__(self, A, gens=None, given_by_matrix=False):
"""
EXAMPLES::
sage: A = FiniteDimensionalAlgebra(GF(3), [Matrix([[1, 0], [0, 1]]), Matrix([[0, 1], [0, 0]])])
sage: I = A.ideal(A([0,1]))
sage: TestSuite(I).run(skip="_test_category") # Currently ideals are not using the category framework
"""
k = A.base_ring()
n = A.degree()
if given_by_matrix:
self._basis_matrix = gens
gens = gens.rows()
elif gens is None:
self._basis_matrix = Matrix(k, 0, n)
elif isinstance(gens, (list, tuple)):
B = [FiniteDimensionalAlgebraIdeal(A, x).basis_matrix() for x in gens]
B = reduce(lambda x, y: x.stack(y), B, Matrix(k, 0, n))
self._basis_matrix = B.echelon_form().image().basis_matrix()
elif is_Matrix(gens):
gens = FiniteDimensionalAlgebraElement(A, gens)
elif isinstance(gens, FiniteDimensionalAlgebraElement):
gens = gens.vector()
B = Matrix([gens * b for b in A.table()])
self._basis_matrix = B.echelon_form().image().basis_matrix()
Ideal_generic.__init__(self, A, gens)
开发者ID:sensen1,项目名称:sage,代码行数:26,代码来源:finite_dimensional_algebra_ideal.py
示例9: __rmul__
def __rmul__(self, other):
r"""
Implement the action of matrices on points of hyperbolic space.
EXAMPLES::
sage: A = matrix(2, [0, 1, 1, 0])
sage: A = HyperbolicPlane().UHP().get_isometry(A)
sage: A * HyperbolicPlane().UHP().get_point(2 + I)
Point in UHP 1/5*I + 2/5
We also lift matrices into isometries::
sage: B = diagonal_matrix([-1, -1, 1])
sage: B = HyperbolicPlane().HM().get_isometry(B)
sage: B * HyperbolicPlane().HM().get_point((0, 1, sqrt(2)))
Point in HM (0, -1, sqrt(2))
"""
if isinstance(other, HyperbolicIsometry):
return other(self)
elif is_Matrix(other):
# TODO: Currently the __mul__ from the matrices gets called first
# and returns an error instead of calling this method
A = self.parent().get_isometry(other)
return A(self)
else:
raise TypeError("unsupported operand type(s) for *:"
"{0} and {1}".format(self, other))
开发者ID:mcognetta,项目名称:sage,代码行数:28,代码来源:hyperbolic_point.py
示例10: normalize_square_matrices
def normalize_square_matrices(matrices):
"""
Find a common space for all matrices.
OUTPUT:
A list of matrices, all elements of the same matrix space.
EXAMPLES::
sage: from sage.groups.matrix_gps.finitely_generated import normalize_square_matrices
sage: m1 = [[1,2],[3,4]]
sage: m2 = [2, 3, 4, 5]
sage: m3 = matrix(QQ, [[1/2,1/3],[1/4,1/5]])
sage: m4 = MatrixGroup(m3).gen(0)
sage: normalize_square_matrices([m1, m2, m3, m4])
[
[1 2] [2 3] [1/2 1/3] [1/2 1/3]
[3 4], [4 5], [1/4 1/5], [1/4 1/5]
]
"""
deg = []
gens = []
for m in matrices:
if is_MatrixGroupElement(m):
deg.append(m.parent().degree())
gens.append(m.matrix())
continue
if is_Matrix(m):
if not m.is_square():
raise TypeError('matrix must be square')
deg.append(m.ncols())
gens.append(m)
continue
try:
m = list(m)
except TypeError:
gens.append(m)
continue
if isinstance(m[0], (list, tuple)):
m = [list(_) for _ in m]
degree = ZZ(len(m))
else:
degree, rem = ZZ(len(m)).sqrtrem()
if rem!=0:
raise ValueError('list of plain numbers must have square integer length')
deg.append(degree)
gens.append(matrix(degree, degree, m))
deg = set(deg)
if len(set(deg)) != 1:
raise ValueError('not all matrices have the same size')
gens = Sequence(gens, immutable=True)
MS = gens.universe()
if not is_MatrixSpace(MS):
raise TypeError('all generators must be matrices')
if MS.nrows() != MS.ncols():
raise ValueError('matrices must be square')
return gens
开发者ID:Babyll,项目名称:sage,代码行数:58,代码来源:finitely_generated.py
示例11: from_incidence_matrix
def from_incidence_matrix(G, M, loops=False, multiedges=False, weighted=False):
r"""
Fill ``G`` with the data of an incidence matrix.
INPUT:
- ``G`` -- a graph
- ``M`` -- an incidence matrix
- ``loops``, ``multiedges``, ``weighted`` (booleans) -- whether to consider
the graph as having loops, multiple edges, or weights. Set to ``False`` by default.
EXAMPLE::
sage: from sage.graphs.graph_input import from_incidence_matrix
sage: g = Graph()
sage: from_incidence_matrix(g, graphs.PetersenGraph().incidence_matrix())
sage: g.is_isomorphic(graphs.PetersenGraph())
True
"""
from sage.matrix.matrix import is_Matrix
assert is_Matrix(M)
oriented = any(M[pos] < 0 for pos in M.nonzero_positions(copy=False))
positions = []
for i in range(M.ncols()):
NZ = M.nonzero_positions_in_column(i)
if len(NZ) == 1:
if oriented:
raise ValueError("Column {} of the (oriented) incidence "
"matrix contains only one nonzero value".format(i))
elif M[NZ[0],i] != 2:
raise ValueError("Each column of a non-oriented incidence "
"matrix must sum to 2, but column {} does not".format(i))
if loops is None:
loops = True
positions.append((NZ[0],NZ[0]))
elif len(NZ) != 2 or \
(oriented and not ((M[NZ[0],i] == +1 and M[NZ[1],i] == -1) or \
(M[NZ[0],i] == -1 and M[NZ[1],i] == +1))) or \
(not oriented and (M[NZ[0],i] != 1 or M[NZ[1],i] != 1)):
msg = "There must be one or two nonzero entries per column in an incidence matrix. "
msg += "Got entries {} in column {}".format([M[j,i] for j in NZ], i)
raise ValueError(msg)
else:
positions.append(tuple(NZ))
if weighted is None: G._weighted = False
if multiedges is None:
total = len(positions)
multiedges = (len(set(positions)) < total )
G.allow_loops(False if loops is None else loops, check=False)
G.allow_multiple_edges(multiedges, check=False)
G.add_vertices(range(M.nrows()))
G.add_edges(positions)
开发者ID:Babyll,项目名称:sage,代码行数:57,代码来源:graph_input.py
示例12: __init__
def __init__(self, A, elt=None, check=True):
"""
TESTS::
sage: A = FiniteDimensionalAlgebra(GF(3), [Matrix([[1,0], [0,1]]), Matrix([[0,1], [0,0]])])
sage: A(QQ(4))
Traceback (most recent call last):
...
TypeError: elt should be a vector, a matrix, or an element of the base field
sage: B = FiniteDimensionalAlgebra(QQ, [Matrix([[1,0], [0,1]]), Matrix([[0,1], [-1,0]])])
sage: elt = B(Matrix([[1,1], [-1,1]])); elt
e0 + e1
sage: TestSuite(elt).run()
sage: B(Matrix([[0,1], [1,0]]))
Traceback (most recent call last):
...
ValueError: matrix does not define an element of the algebra
"""
AlgebraElement.__init__(self, A)
k = A.base_ring()
n = A.degree()
if elt is None:
self._vector = vector(k, n)
self._matrix = Matrix(k, n)
else:
if isinstance(elt, int):
elt = Integer(elt)
elif isinstance(elt, list):
elt = vector(elt)
if A == elt.parent():
self._vector = elt._vector.base_extend(k)
self._matrix = elt._matrix.base_extend(k)
elif k.has_coerce_map_from(elt.parent()):
e = k(elt)
if e == 0:
self._vector = vector(k, n)
self._matrix = Matrix(k, n)
elif A.is_unitary():
self._vector = A._one * e
self._matrix = Matrix.identity(k, n) * e
else:
raise TypeError("algebra is not unitary")
elif is_Vector(elt):
self._vector = elt.base_extend(k)
self._matrix = Matrix(k, sum([elt[i] * A.table()[i] for i in xrange(n)]))
elif is_Matrix(elt):
if not A.is_unitary():
raise TypeError("algebra is not unitary")
self._vector = A._one * elt
if not check or sum([self._vector[i]*A.table()[i] for i in xrange(n)]) == elt:
self._matrix = elt
else:
raise ValueError("matrix does not define an element of the algebra")
else:
raise TypeError("elt should be a vector, a matrix, " +
"or an element of the base field")
开发者ID:BlairArchibald,项目名称:sage,代码行数:57,代码来源:finite_dimensional_algebra_element.py
示例13: from_oriented_incidence_matrix
def from_oriented_incidence_matrix(G, M, loops=False, multiedges=False, weighted=False):
r"""
Fill ``G`` with the data of an *oriented* incidence matrix.
An oriented incidence matrix is the incidence matrix of a directed graph, in
which each non-loop edge corresponds to a `+1` and a `-1`, indicating its
source and destination.
INPUT:
- ``G`` -- a :class:`DiGraph`
- ``M`` -- an incidence matrix
- ``loops``, ``multiedges``, ``weighted`` (booleans) -- whether to consider
the graph as having loops, multiple edges, or weights. Set to ``False`` by default.
EXAMPLES::
sage: from sage.graphs.graph_input import from_oriented_incidence_matrix
sage: g = DiGraph()
sage: from_oriented_incidence_matrix(g, digraphs.Circuit(10).incidence_matrix())
sage: g.is_isomorphic(digraphs.Circuit(10))
True
TESTS:
Fix bug reported in :trac:`22985`::
sage: DiGraph(matrix ([[1,0,0,1],[0,0,1,1],[0,0,1,1]]).transpose())
Traceback (most recent call last):
...
ValueError: each column represents an edge: -1 goes to 1
"""
from sage.matrix.matrix import is_Matrix
assert is_Matrix(M)
positions = []
for c in M.columns():
NZ = c.nonzero_positions()
if len(NZ) != 2:
raise ValueError("There must be two nonzero entries (-1 & 1) per column.")
L = sorted(set(c.list()))
if L != [-1,0,1]:
raise ValueError("each column represents an edge: -1 goes to 1")
if c[NZ[0]] == -1:
positions.append(tuple(NZ))
else:
positions.append((NZ[1],NZ[0]))
if weighted is None: weighted = False
if multiedges is None:
total = len(positions)
multiedges = ( len(set(positions)) < total )
G.allow_loops(True if loops else False,check=False)
G.allow_multiple_edges(multiedges,check=False)
G.add_vertices(range(M.nrows()))
G.add_edges(positions)
开发者ID:mcognetta,项目名称:sage,代码行数:57,代码来源:graph_input.py
示例14: from_seidel_adjacency_matrix
def from_seidel_adjacency_matrix(G, M):
r"""
Fill ``G`` with the data of a Seidel adjacency matrix.
INPUT:
- ``G`` -- a graph
- ``M`` -- a Seidel adjacency matrix
EXAMPLE::
sage: from sage.graphs.graph_input import from_seidel_adjacency_matrix
sage: g = Graph()
sage: from_seidel_adjacency_matrix(g, graphs.PetersenGraph().seidel_adjacency_matrix())
sage: g.is_isomorphic(graphs.PetersenGraph())
True
"""
from sage.matrix.matrix import is_Matrix
from sage.rings.integer_ring import ZZ
assert is_Matrix(M)
if M.base_ring() != ZZ:
try:
M = M.change_ring(ZZ)
except TypeError:
raise ValueError("Graph's Seidel adjacency matrix must"+
" have only 0,1,-1 integer entries")
if M.is_sparse():
entries = set(M[i,j] for i,j in M.nonzero_positions())
else:
entries = set(M.list())
if any(e < -1 or e > 1 for e in entries):
raise ValueError("Graph's Seidel adjacency matrix must"+
" have only 0,1,-1 integer entries")
if any(i==j for i,j in M.nonzero_positions()):
raise ValueError("Graph's Seidel adjacency matrix must"+
" have 0s on the main diagonal")
if not M.is_symmetric():
raise ValueError("Graph's Seidel adjacency matrix must"+
" be symmetric")
G.add_vertices(range(M.nrows()))
e = []
for i,j in M.nonzero_positions():
if i <= j and M[i,j] < 0:
e.append((i,j))
G.add_edges(e)
开发者ID:Babyll,项目名称:sage,代码行数:49,代码来源:graph_input.py
示例15: __init__
def __init__(self, k, table, names='e', assume_associative=False, category=None):
"""
TESTS::
sage: A = FiniteDimensionalAlgebra(QQ, [])
sage: A
Finite-dimensional algebra of degree 0 over Rational Field
sage: type(A)
<class 'sage.algebras.finite_dimensional_algebras.finite_dimensional_algebra.FiniteDimensionalAlgebra_with_category'>
sage: TestSuite(A).run()
sage: B = FiniteDimensionalAlgebra(GF(7), [Matrix([1])])
sage: B
Finite-dimensional algebra of degree 1 over Finite Field of size 7
sage: TestSuite(B).run()
sage: C = FiniteDimensionalAlgebra(CC, [Matrix([[1, 0], [0, 1]]), Matrix([[0, 1], [0, 0]])])
sage: C
Finite-dimensional algebra of degree 2 over Complex Field with 53 bits of precision
sage: TestSuite(C).run()
sage: FiniteDimensionalAlgebra(GF(3), [Matrix([[1, 0], [0, 1]])])
Traceback (most recent call last):
...
ValueError: input is not a multiplication table
sage: D.<a,b> = FiniteDimensionalAlgebra(RR, [Matrix([[1, 0], [0, 1]]), Matrix([[0, 1], [-1, 0]])])
sage: D.gens()
(a, b)
sage: E = FiniteDimensionalAlgebra(QQ, [Matrix([0])])
sage: E.gens()
(e,)
"""
n = len(table)
self._table = [b.base_extend(k) for b in table]
if not all([is_Matrix(b) and b.dimensions() == (n, n) for b in table]):
raise ValueError("input is not a multiplication table")
self._assume_associative = assume_associative
# No further validity checks necessary!
if category is None:
category = FiniteDimensionalAlgebrasWithBasis(k)
Algebra.__init__(self, base_ring=k, names=names, category=category)
开发者ID:Etn40ff,项目名称:sage,代码行数:43,代码来源:finite_dimensional_algebra.py
示例16: __init__
def __init__(self, parent, M, check=True, convert=True):
r"""
Element of a matrix group over a generic ring.
The group elements are implemented as Sage matrices.
INPUT:
- ``M`` -- a matrix.
- ``parent`` -- the parent.
- ``check`` -- bool (default: ``True``). If true does some
type checking.
- ``convert`` -- bool (default: ``True``). If true convert
``M`` to the right matrix space.
TESTS::
sage: MS = MatrixSpace(GF(3),2,2)
sage: G = MatrixGroup(MS([[1,0],[0,1]]), MS([[1,1],[0,1]]))
sage: G.gen(0)
[1 0]
[0 1]
sage: g = G.random_element()
sage: TestSuite(g).run()
"""
if isinstance(M, GapElement):
ElementLibGAP.__init__(self, parent, M)
return
if convert:
M = parent.matrix_space()(M)
from sage.libs.gap.libgap import libgap
M_gap = libgap(M)
if check:
if not is_Matrix(M):
raise TypeError("M must be a matrix")
if M.parent() is not parent.matrix_space():
raise TypeError("M must be a in the matrix space of the group")
parent._check_matrix(M, M_gap)
ElementLibGAP.__init__(self, parent, M_gap)
开发者ID:sensen1,项目名称:sage,代码行数:43,代码来源:group_element.py
示例17: __init__
def __init__(self, parent, A):
r"""
Initialise an element from a matrix. This *must* be over the base ring
of self and have the right size.
This is a bit overkill as similar checks will be performed by the call
and coerce methods of the parent of self, but it can't hurt to be
paranoid. Any fancy coercion / base_extension / etc happens there, not
here.
TESTS::
sage: T = ModularForms(Gamma0(7), 4).hecke_algebra()
sage: M = sage.modular.hecke.hecke_operator.HeckeAlgebraElement_matrix(T, matrix(QQ,3,[2,3,0,1,2,3,7,8,9])); M
Hecke operator on Modular Forms space of dimension 3 for Congruence Subgroup Gamma0(7) of weight 4 over Rational Field defined by:
[2 3 0]
[1 2 3]
[7 8 9]
sage: loads(dumps(M)) == M
True
sage: sage.modular.hecke.hecke_operator.HeckeAlgebraElement_matrix(T, matrix(Integers(2),3,[2,3,0,1,2,3,7,8,9]))
Traceback (most recent call last):
...
TypeError: base ring of matrix (Ring of integers modulo 2) does not match base ring of space (Rational Field)
sage: sage.modular.hecke.hecke_operator.HeckeAlgebraElement_matrix(T, matrix(QQ,2,[2,3,0,1]))
Traceback (most recent call last):
...
TypeError: A must be a square matrix of rank 3
"""
HeckeAlgebraElement.__init__(self, parent)
from sage.matrix.matrix import is_Matrix
if not is_Matrix(A):
raise TypeError("A must be a matrix")
if not A.base_ring() == self.parent().base_ring():
raise TypeError, "base ring of matrix (%s) does not match base ring of space (%s)" % (
A.base_ring(),
self.parent().base_ring(),
)
if not A.nrows() == A.ncols() == self.parent().module().rank():
raise TypeError, "A must be a square matrix of rank %s" % self.parent().module().rank()
self.__matrix = A
开发者ID:swenson,项目名称:sage,代码行数:42,代码来源:hecke_operator.py
示例18: jacobian
def jacobian(functions, variables):
"""
Return the Jacobian matrix, which is the matrix of partial
derivatives in which the i,j entry of the Jacobian matrix is the
partial derivative diff(functions[i], variables[j]).
EXAMPLES::
sage: x,y = var('x,y')
sage: g=x^2-2*x*y
sage: jacobian(g, (x,y))
[2*x - 2*y -2*x]
The Jacobian of the Jacobian should give us the "second derivative", which is the Hessian matrix::
sage: jacobian(jacobian(g, (x,y)), (x,y))
[ 2 -2]
[-2 0]
sage: g.hessian()
[ 2 -2]
[-2 0]
sage: f=(x^3*sin(y), cos(x)*sin(y), exp(x))
sage: jacobian(f, (x,y))
[ 3*x^2*sin(y) x^3*cos(y)]
[-sin(x)*sin(y) cos(x)*cos(y)]
[ e^x 0]
sage: jacobian(f, (y,x))
[ x^3*cos(y) 3*x^2*sin(y)]
[ cos(x)*cos(y) -sin(x)*sin(y)]
[ 0 e^x]
"""
if is_Matrix(functions) and (functions.nrows()==1 or functions.ncols()==1):
functions = functions.list()
elif not (isinstance(functions, (tuple, list)) or is_Vector(functions)):
functions = [functions]
if not isinstance(variables, (tuple, list)) and not is_Vector(variables):
variables = [variables]
return matrix([[diff(f, v) for v in variables] for f in functions])
开发者ID:BlairArchibald,项目名称:sage,代码行数:42,代码来源:functions.py
示例19: is_generalized_cartan_matrix
def is_generalized_cartan_matrix(M):
"""
Return ``True`` if ``M`` is a generalized Cartan matrix. For a definition
of a generalized Cartan matrix, see :class:`CartanMatrix`.
EXAMPLES::
sage: from sage.combinat.root_system.cartan_matrix import is_generalized_cartan_matrix
sage: M = matrix([[2,-1,-2], [-1,2,-1], [-2,-1,2]])
sage: is_generalized_cartan_matrix(M)
True
sage: M = matrix([[2,-1,-2], [-1,2,-1], [0,-1,2]])
sage: is_generalized_cartan_matrix(M)
False
sage: M = matrix([[1,-1,-2], [-1,2,-1], [-2,-1,2]])
sage: is_generalized_cartan_matrix(M)
False
A non-symmetrizable example::
sage: M = matrix([[2,-1,-2], [-1,2,-1], [-1,-1,2]])
sage: is_generalized_cartan_matrix(M)
True
"""
if not is_Matrix(M):
return False
if not M.is_square():
return False
n = M.ncols()
for i in xrange(n):
if M[i,i] != 2:
return False
for j in xrange(i+1, n):
if M[i,j] > 0 or M[j,i] > 0:
return False
elif M[i,j] == 0 and M[j,i] != 0:
return False
elif M[j,i] == 0 and M[i,j] != 0:
return False
return True
开发者ID:biasse,项目名称:sage,代码行数:40,代码来源:cartan_matrix.py
示例20: write_matrix
def write_matrix(self, mat, filename):
r"""
Write the matrix ``mat`` to the file ``filename`` in 4ti2 format.
INPUT:
- ``mat`` - A matrix of integers or something that can be
converted to that.
- ``filename`` - A file name not including a path.
EXAMPLES::
sage: from sage.interfaces.four_ti_2 import four_ti_2
sage: four_ti_2.write_matrix([[1,2],[3,4]], "test_file")
"""
from sage.matrix.constructor import matrix
from sage.matrix.matrix import is_Matrix
if not is_Matrix(mat):
mat = matrix(ZZ, mat)
if mat.base_ring() != ZZ:
mat = mat.change_ring(ZZ)
self.write_array(mat, mat.nrows(), mat.ncols(), filename)
开发者ID:rgbkrk,项目名称:sage,代码行数:23,代码来源:four_ti_2.py
注:本文中的sage.matrix.matrix.is_Matrix函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论