






Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Numpy python array 1D 2D OPERACIONES CON MATRICES
Tipologia: Exercícios
1 / 11
Esta página não é visível na pré-visualização
Não perca as partes importantes!







In [1]: (^) m = [[ 1 , 2 ],[ 3 , 4 ]] m
In [2]: (^) def dibujaMatriz(M): for i in range(len(M)): print '[', for j in range(len(M[i])): print '{:>3s}'.format(str(M[i][j])), print ']' dibujaMatriz(m) In [3]: (^) n = [[ 1 , 10 , 100 ], [ 20 , 2 , 200 ],[ 300 , 30 , 3 ]] dibujaMatriz(n)
Out[1]: [[1,^ 2],^ [3,^ 4]] [ 1 2 ] [ 3 4 ] [ 1 10 100 ] [ 20 2 200 ] [ 300 30 3 ]
In [4]: (^) def matriz2str(matriz): cadena = '' for i in range(len(matriz)): cadena += '[' for j in range(len(matriz[i])): cadena += '{:>4s}'.format(str(matriz[i][j])) cadena += '] \n ' return cadena In [5]: (^) s = matriz2str(n) print s
In [6]: (^) def creaMatriz(n,m): ''' Esta función crea una matríz vacía con n filas y n columnas. @param n : Número de filas. @param m : Número de columnas @type n: int @type m: int @return: 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 [10]: (^) def matrizCorrecta(M): ''' Nos dice si una matriz es correcta. @param M: una matriz @type M: matriz @return: True si es correcta, False en caso contrario ''' filas = len(M) columnas = len(M[ 0 ]) correcto = True i = 1 while i < filas and correcto: correcto = (len(M[i]) == columnas) i += 1 return correcto In [11]: (^) M = [[ 1 , 2 , 3 ], [ 2 , 4 ]] matrizCorrecta(M)
Out[11]: False
In [12]: (^) def filas(M): ''' Nos dice el número de filas de una matriz correcta. @param M: una matriz @type M: matriz @return: número de filas ''' if matrizCorrecta(M): return len(M) def columnas(M): ''' Nos dice el número de columnas de una matriz correcta. @param M: una matriz @type M: matriz @return: número de columnas ''' if matrizCorrecta(M): return len(M[ 0 ]) def matrizIdentidad(n): ''' Crea una matriz identidad de tamaño n @param n : número de filas. @type n : entero @return: matriz identidad de tamañ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
In [16]: (^) def multiplicaMatriz(A,B): ''' Multiplica dos matrices. El número de columnas de la primera de be ser igual al número de filas de la segunda. @param A: una matriz nxm @param B: una matriz mxk @type A: Matriz @type B: Matriz @return: Matriz multiplicación 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)): C[i][j] += A[i][k] * B[k][j] return C In [17]: (^) def traspuesta(M): ''' Calcula la matriz traspuesta de M ''' m = len(M) #filas n = len(M[ 0 ]) # columnas T = creaMatriz(n,m) for i in range(n): for j in range(m): T[i][j] = M[j][i] return T Determinantes
In [18]: (^) def multiplicaFila(m,f,e): ''' Multiplica la fila f por el valor e ''' n=len(m) for c in range(n): m[f][c]=m[f][c]*e In [19]: (^) m=[[ 2 , 1 , 3 ],[ 4 , 2 , 3 ],[ 2 , 3 , 2 ]]
In [20]: (^) multiplicaFila(m, 1 , 3 ) m In [21]: (^) def combinacion(m,i,j,e): ''' Combina las filas i y j, añadiendo a la fila j el producto de l a fila i por un factor e ''' n=len(m) for c in range(n): m[j][c]=m[j][c]+e*m[i][c] In [22]: (^) combinacion(m, 0 , 1 , 10 ) m In [23]: (^) def intercambiaFilas(m,i,j): m[i],m[j] = m[j],m[i] In [24]: (^) intercambiaFilas(m, 0 , 1 ) m Out[20]: [[2,^ 1,^ 3],^ [12,^ 6,^ 9],^ [2,^ 3,^ 2]] Out[22]: [[2,^ 1,^ 3],^ [32,^ 16,^ 39],^ [2,^ 3,^ 2]] Out[24]: [[32,^ 16,^ 39],^ [2,^ 1,^ 3],^ [2,^ 3,^ 2]]
In [30]: (^) determinante(b)
In [31]: (^) def menor(A,f,c): ''' Calcula el "menor" que se obtiene a partir de A al quitar la fi la f y la columna c. Suponemos que A es cuadrada ''' if filas(A) == columnas(A): m = filas(A) M = creaMatriz(m- 1 , m- 1 ) _''' Dividimos la matriz en cuatro trozos [1 | 2] [3 | 4] '''
for i in range(f): for j in range(c): M[i][j] = A[i][j] # 2 for i in range(f): for j in range(c,m- 1 ): M[i][j] = A[i][j+ 1 ] # 3 for i in range(f,m- 1 ): for j in range(c): M[i][j] = A[i+ 1 ][j] # 4 for i in range(f,m- 1 ): for j in range(c,m- 1 ): M[i][j] = A[i+ 1 ][j+ 1 ] return M Out[30]: 0
In [32]: (^) def determinante_rec(matriz): ''' Calcula el determinante de forma recursiva, calculando los sucesivos menores ''' if len(matriz) == 1 : result = matriz[ 0 ][ 0 ] elif len(matriz) == 2 : result = matriz[ 0 ][ 0 ]matriz[ 1 ][ 1 ] - matriz[ 0 ][ 1 ]matriz[ 1 ] [ 0 ] else : result = 0 i = 0 sig = + 1 while i < len(matriz): mm = menor(matriz, i, 0 ) result += sig * matriz[i][ 0 ]* determinante_rec(mm) sig = - sig i += 1 return result In [33]: (^) determinante_rec(mat)
In [33]: Out[33]: -