0% encontró este documento útil (0 votos)
323 vistas

Introducción A Las Matrices en Python PDF

python
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
323 vistas

Introducción A Las Matrices en Python PDF

python
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF o lee en línea desde Scribd
Está en la página 1/ 11
Introduccion a las matrices en Python La matrices no son una estructura propia de Python. Simplemente, una matriz es una lista de listas que nosotros interpretamos desde el punto de vista matematico. Es decir, laestructuram = [[1,2],[3,4]] nosotros la interpretamos como la matriz 2x2 cuya primera fila es (1,2) y cuya segunda fila es (3,4), pero esto no deja de ser una interpretacion. In [1]: m= [{1,2],(3,4]] m Out{1}: (£1, 2], [3, 41] Para representar una matriz, debemos crear una funci6n especifica. In [2]: def dibujaMatriz(M): for i in range(ten(M)): print ‘[', for j in range(ten(M[i])): print '{:>3s}'. format (str(M[4][J])), print ‘]' dibujatatriz(m) [ 1 2] [ 3 4] In [3]: n = [[1,10,100], [20,2,200], [300,30,3]] dibujamatriz(n) 1 10 100 ] 2 200 ] [ [ 2 [ 300 30 3] Para representar una matriz, a veces es interesante pasarlo a una cadena de caracteres In [4]: def matriz2str(matriz) : cadena = '' for i in range(Len(matriz)): cadena += '[' for j in range(ten(matriz{i])): cadena += '{:>4s}'. format (str(matriz[i][j])) cadena += ']\n' return cadena In [5]: 5 = matriz2str(n) print s 1 10 100) 20 2 200) 0 [ [ [ 300 30 3] Podemos crear matrices de diversas maneras In [6]: def creaMatriz(n,m): Esta funcién crea una matriz vacia con n filas y n columnas. @param n : Ndmero de filas. Gparam m : Ndmero de columnas @type n: int @type m: int Greturn: devuelve una matriz n por m @rtype: matriz (lista de Listas) matriz = [] for i in range(n): a = [0]*m matriz.append(a) return matriz In [7]: def creaMatrizDato(n,m, dato): Esta funcién crea una matriz con n filas y n columnas. Cada celda contiene el valor “dato” @param n : Ndmero de filas. @param m : Ndmero de columnas @param dato: Un valor Gtype n: entero @type m: entero Gtype dato: tipo simple Greturn: devuelve una matriz n por m G@rtype: matriz (lista de listas) matriz = [] for i in range(n): a = [dato] *m mat riz.append(a) return matriz Cuidado: hay que crear bien las matrices In [8]: In [9]: det badmatrix(n,m) : a = [0]*m matriz = [a]*n return matriz M = badmatrix(2,2) print [f0, 6], [0, 01] M[O] [0]=1 print {{1, 0], (1, 91] Dada una matriz, podemos estudiar si es correcta In [10]: def matrizCorrecta(M) : Nos dice si una matriz es correcta. Gparam M: una matriz @type M: matriz @return: True si es correcta, False en caso contrario filas = len(M) columnas = len(M[0]) correcto = True a1 while i < filas and correcto: correcto = (Len(M[i]) =: itl return correcto columnas) In [11]: m= [[1,2,3], [2,4]] matrizCorrecta(M) Out[11]: False Puede ser util la utilizacion de funciones auxiliares In [12]: def filas(M): Nos dice el ntmero de filas de una matriz correcta. Gparam M: una matriz G@type M: matriz @return: numero de filas if matrizCorrecta(M) return Len(M) def columnas(M) Nos dice el numero de columnas de una matriz correcta. @param M: una matriz @type M: matriz Greturn: ntimero de columnas if matrizCorrecta(M) : return len(M[0]) def matrizIdentidad(n) : Crea una matriz identidad de tamad+o n @param n : numero de filas. Gtype n : entero - Greturn: matriz identidad de tamaA+o n m = creaMatriz(n,n) for i in range(n): m(i}[i] = 1 return m def copy(m): Realiza una copia independiente de la matriz result=[] for f in m: result.append(f[:]) return result Recuerda que no se puede leer una matriz directamente del teclado, utilizando raw_input() . Se puede leer una matriz introduciendo por teclado cada una de sus entradas In [13]: def leelatriz(n,m) : Esta funcién lee por teclado una matriz con n filas y n columna @param n ; Numero de filas. @param m : Nimero de columnas @type n: entero @type m: entero G@return: devuelve una matriz n por m A = creaMatriz(n,m) for i in range(n): for j in range(m): ALi] [J] = int(raw_input(‘Introduce la componente (%d,%d ys '%(4,5))) return A Puede ser mas comodo, para matrices grandes, si se lee desde un fichero (ejercicio) In [14]: def copy(m) : Crea una copia de la matriz result=[] for f in m: result. append(t[:]) return result Algunas operaciones matematicas con matrices In [15]: def sumaMatriz(A,B) : _ Suma dos matrices. Las dos matrices deben ser de la misma dimen siA‘n @param A: una matriz oxm @param B: una matriz nxm Gtype A: Matriz @type B: Matriz @return: Matriz suma if filas(A) == filas(B) and columnas(A) C = creaMatriz(fitas(A), columnas(A)) for i in range(fitas(A)): for j in range(columnas(A)) : Clad] = ACi1(3] + B14]1i1 return C columnas(B) : In [16]: def multiplicatatriz(A,B) : Multiplica dos matrices. El numero de columnas de la primera de be ser igual al nlimero de filas de la segunda. Gparam A: una matriz nxm @param B: una matriz mxk Gtype A: Matriz Gtype B: Matriz G@return: Matriz multiplicacion nxk if columnas(A) == filas(B): C = creaMatriz(filas(A), columnas(B)) for i in range(filas(C)): for j in range(columnas(C)): for k in range(columnas(A)) : Cfil(j] += Ali}(k] * BLK][j] return C In [17]: def traspuesta(M): Calcula la matriz traspuesta de M m = len(M) #fitas n= len(M[0]) # columnas T = creaMatriz(n,m) for i in range(n): for j in range(m): TEA} (3] = MUIL4 return T Determinantes Podemos calcular el determinante de una matriz cuadrada de dos maneras. La primera es tratar de transformar la matriz en otra en la que solo hay ceros debajo de la diagonal principal. La matriz transformada tiene el mismo determinante que la matriz original (salvo tal vez el signo). Para ejecutar las operaciones basicas, creamos unas funciones auxiliares: In [18]: def multiplicaFila(m,f,e): Multiplica la fila f por el valor e n=len(m) for c in range(n): m[t]} [c]=m[f] [c]*e In [19]: m=[[2,1,3],(4,2,3],2,3,2]] In [20]: Out [20]: In [21]: In [22]: Out [22]: In [23]: In [24]: Out [24]: multiplicaFila(m, 1, 3) m ((2, 1, 3], [12, 6, 9], [2, 3, 2]] def combinacion(m,i,j,e) Combina las filas 1 y j, afladiendo a la fila j el producto de l Tila 1 por un factor e n=len(m) for c in range(n): m(j]f¢e]=m[j]{c]+e*m[i}[c] combinacion(m, 0, 1, 10) m [(2, 1, 3], [32, 16, 39], [2, 3, 2]] def intercambiaFilas(m,i,j): m[i],m{j] = m{j],m[i] intercambiaFilas(m, 0, 1) m [(32, 16, 39], [2, 1, 3], [2, 3, 2]] In [25]: In [26]: out [26]: In [27]: out [27]: In [28]: out [28] : In [29]: def determinante(matriz) : Calcula el determinante poniendo ceros debajo de la diagonal principal m = copy(matriz) en(m) det=1 tor i in range(n): j=primeroNoNuto(m,i) if j =n: return 0 if i!=j: det=-1*det intercambiaFilas(m,i,j) det=det*m[i] [4] multiplicaFita(m,4,1./m{4]{4]) for k in range(i+l,n): combinacion(m, i,k, -m[k] [i]) return det def primeroNoNulo(m, 4): A partir de la fila i, busca la primera fila j cuya entrada (i,j) es nula result=i while result eso qué es? In [33]:

También podría gustarte