Amb Matrix crearem els vectors columna i les matrius:
Matrix([v1,v2,..,vn])Matrix([[a11,a12,...,a1n],[a21,a22,...,a2n],...,[am1,am2,...,amn]])Per exemple:
>>> init_printing(use_unicode=True) >>> v=Matrix([1,2])>>> pprint(v)⎡1⎤⎢ ⎥⎣2⎦>>> A=Matrix([[1,2],[3,4],[5,6]])>>> pprint(A)⎡1 2⎤⎢ ⎥⎢3 4⎥⎢ ⎥⎣5 6⎦Els operadors +, - i * són aplicables en el sentit habitual sempre i quan els vectors i les matrius tinguin les dimensions apropiades.
Seguint amb l'exemple anterior:
>>> A+2*A)*v⎡15⎤⎢ ⎥⎢33⎥⎢ ⎥⎣51⎦Per conèixer la mida d'una matriu usem la propietat shape que retorna el nombre de files i columnes.
Els mètodes row(m) i col(n) retornen la fila m i la columna n respectivament. La primera fila/columna és la 0 i m i n poden prendre valors negatius.
Per afegir una fila o una columna emprarem els mètodes row_insert(posicio,matriu) i col_insert(posicio,matriu).
I per eliminar una fila o una columna emprarem els mètodes row_del(fila) i row_del(columna), respectivament.
Vegem-ho amb exemples (continuació de l'anterior):
>>> A.row(0)[1 2]>>> A.col(1)⎡2⎤⎢ ⎥⎢4⎥⎢ ⎥⎣6⎦>>> A.row(-1)[5 6]>>> A=A.row_insert(3,Matrix([[7,8]]))>>> A⎡1 2⎤⎢ ⎥⎢3 4⎥⎢ ⎥⎢5 6⎥⎢ ⎥⎣7 8⎦>>> A=A.col_insert(1,Matrix([-1,-2,-3,-4]))>>> A⎢ ⎥⎡1 -1 2⎤⎢ ⎥⎢3 -2 4⎥⎢ ⎥⎢5 -3 6⎥⎢ ⎥⎣7 -4 8⎦>>> A.row_del(0)>>> A⎡3 -2 4⎤⎢ ⎥⎢5 -3 6⎥⎢ ⎥⎣7 -4 8⎦ >>> A.shape(3, 3) Per construir matrius tenim els següents mètodes:
eye(n) crea una matriu quadrada identitat de dimensió n.zeros(m,n) crea una matriu plena de 0 amb m files i n columnes.ones(m,n) crea una matriu plena de 1 amb m files i n columnes.diag(a11,a22...) crea una matriu quadrada amb els elements a11, a22... a la diagonal.Exemples:
>>> I3=eye(3)>>> I3⎡1 0 0⎤⎢ ⎥⎢0 1 0⎥⎢ ⎥⎣0 0 1⎦>>> zeros(2,4)⎡0 0 0 0⎤⎢ ⎥⎣0 0 0 0⎦⎢0 0 0 0 0 0⎥>>> ones(3,1)⎡1⎤⎢ ⎥⎢1⎥⎢ ⎥⎣1⎦>>> diag(1,2,3)⎡1 0 0⎤⎢ ⎥⎢0 2 0⎥⎢ ⎥⎣0 0 3⎦>>> diag(ones(2,2),zeros(3,3),3)⎡1 1 0 0 0 0⎤⎢ ⎥⎢1 1 0 0 0 0⎥⎢ ⎥⎢0 0 0 0 0 0⎥⎢ ⎥⎢0 0 0 0 0 0⎥⎢ ⎥⎢0 0 0 0 0 0⎥⎢ ⎥⎣0 0 0 0 0 3⎦Per crear matrius amb entrades aleatòries cal invocar primer:
>>> from sympy.matrices import randMatrix
I el mètode constructor és radnMatrix(files,columnes,min,max) on:
files i columnes són el nombre de files i columnes de la matriu generades, respectivament.min i max són els valors enters mínim i màxim, respectivament, de les entrades de la matriu.Exemple:
>>> randMatrix(2,3,0,10)⎡0 6 3⎤⎢ ⎥⎣9 3 8⎦Disposem dels següents mètodes:
det() retorna el determinant de la matriu.T retorna la matriu transposta.adjugate() retorna la matriu adjunta.inv() retorna la matriu inversa.inv_mod(m) retorna la matriu inversa mòdul m.Exemple:
>>> A=Matrix([[2,0,-1],[-1,3,0],[-1,2,1]])>>> A⎡2 0 -1⎤⎢ ⎥⎢-1 3 0 ⎥⎢ ⎥⎣-1 2 1 ⎦>>> A.det()5>>> A.T⎡2 -1 -1⎤⎢ ⎥⎢0 3 2 ⎥⎢ ⎥⎣-1 0 1 ⎦>>> A.adjugate()⎡3 -2 3⎤⎢ ⎥⎢1 1 1⎥⎢ ⎥⎣1 -4 6⎦>>> A.inv()⎡3/5 -2/5 3/5⎤⎢ ⎥⎢1/5 1/5 1/5⎥⎢ ⎥⎣1/5 -4/5 6/5⎦>>> A.inv_mod(3)⎡0 2 0⎤⎢ ⎥⎢2 2 2⎥⎢ ⎥⎣2 1 0⎦Recordem que:
Que si s'ho fem analitzar a Python:
>>> invA=1/det(A)*A.adjugate()>>> invA==A.inv()TrueEl mètode rref() que fa la transformació de Gauus-Jordan d'una matriu (aquest mètode retorna la matriu de la transformació de Gauss-Jordan i les columnes pivot).
Exemples:
>>> A=randMatrix(3,4,-5,5)>>> A⎡3 4 -4 -3⎤⎢ ⎥⎢3 1 -4 2 ⎥⎢ ⎥⎣-4 -5 -2 4 ⎦>>> A.rref()⎛⎡ 37 ⎤ ⎞⎜⎢1 0 0 ── ⎥ ⎟⎜⎢ 33 ⎥ ⎟⎜⎢ ⎥, (0, 1, 2)⎟⎜⎢0 1 0 -5/3 ⎥ ⎟⎜⎢ ⎥ ⎟⎝⎣0 0 1 -5/66⎦ ⎠Per recuperar la matriu de la transformació de Gauu-Jordan farem:
>>> A.rref()[0]⎡ 37 ⎤⎢1 0 0 ── ⎥⎢ 33 ⎥⎢ ⎥⎢0 1 0 -5/3 ⎥⎢ ⎥⎣0 0 1 -5/66⎦