Introducción a las matrices en Python

Documentos relacionados
TEST DE DETERMINANTES

2.- TIPOS DE MATRICES

Matrices y Determinantes. Prof. Nilsa I. Toro Catedrática Recinto Universitario de Mayagüez Residencial - AFAMaC

Es una tabla bidimensional de números consistente en cantidades abstractas que pueden sumarse y multiplicarse.

CURSO BÁSICO DE MATEMÁTICAS PARA ESTUDIANTES DE ECONÓMICAS Y EMPRESARIALES

Matrices 1. Se denomina matriz a todo conjunto de números o expresiones dispuestos en forma rectangular, formando filas y columnas.

Determinantes. Concepto de determinante A cada matriz cuadrada A se le asigna un número denominado determinante de A, denotado por A o por det (A).

Sistema de ecuaciones lineales. Expresión matricial. Matriz de los coeficientes 3 filas 3 columnas matriz 3 3. x y z

MATRICES Y DETERMINANTES DEFINICIÓN DE MATRIZ. TIPOS

Matemáticas 2.º Bachillerato. Matemáticas 2.º Bachillerato. Matemáticas 2.º Bachillerato. Ejemplo:

Estos apuntes se han sacado de la página de internet de vitutor con pequeñas modificaciones.

UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO

MATRICES OPERACIONES BÁSICAS CON MATRICES

Menor, cofactor y comatriz

Tema 1: MATRICES. OPERACIONES CON MATRICES

MATRICES Y DETERMINANTES II.

Matemáticas Física Curso de Temporada Verano Ing. Pablo Marcelo Flores Jara

MATRICES. Una matriz es un conjunto de números o expresiones dispuestos en forma rectangular, formando filas y columnas.

1. Lección 3: Matrices y Determinantes

Tema 5. Matrices y Determinantes

MATRICES. Matriz de los coeficientes. Matriz de las incógnitas. Matriz de los términos independientes. Matriz ampliada. Información general

Tema I. Matrices y determinantes

Guía de uso de DERIVE. 2) Botones de acceso rápido Al colocar el cursor sobre el botón aparece un recuadro con su función

Clase 8 Matrices Álgebra Lineal

Concepto de matriz Se denomina matriz a todo conjunto de números o expresiones dispuestos en forma rectangular, formando filas y columnas.

ÁLGEBRA DE MATRICES TRASPUESTA DE UNA MATRIZ SUMA Y RESTA DE MATRICES

MATEMÁTICAS 2º BACH CIENCIAS DETERMINANTES DETERMINANTES

3. ÁLGEBRA LINEAL // 3.1. SISTEMAS DE

3. ÁLGEBRA LINEAL // 3.1. SISTEMAS DE

TEMA 1: MATRICES. Una matriz de orden mxn es un conjunto de m n números reales dispuestos en m filas y n columnas ...

MATRICES. Se denomina matriz de dimensión m n a todo conjunto cuyos elementos están dispuestos en m filas y n columnas. o simplemente A = (a.

TEMA 7: MATRICES. OPERACIONES.

Programación I: Matrices - Arreglos bidimensionales

Cursada Segundo Cuatrimestre 2012 Guía de Trabajos Prácticos Nro. 1

!MATRICES INVERTIBLES

Cátedra I Informática Autor I Carlos Bartó

Determinantes. = a 11a 22 a 12 a 21 = ( 3) ( 5) ( 4) 7 = 15 ( 28) = = 43

El determinante de una matriz se escribe como. Para una matriz, el valor se calcula como:

MATEMÁTICA LIC. Y PROF. EN CS. BIOLÓGICAS

Matrices y determinantes

DETERMINANTES Profesor: Fernando Ureña Portero

Se llama adjunto de un elemento de una matriz A, al número resultante de multiplicar por el determinante de la matriz complementaria

Matrices: repaso. Denotaremos con M m n el conjunto de matrices de tamaño m n, o sea, de m filas y n columnas. Una matriz A M m n es de la forma A =

Programa EUROPA Ayuda a la Mejora en el Aprendizaje Matemáticas Cuarta sesión

MATRICES, DETERMINANTES Y SISTEMAS DE ECUACIONES LINEALES

MATRICES Y DETERMINANTES MATRIZ INVERSA

CONTENIDOS MATEMÁTICAS II SEGUNDA EVALUACIÓN CURSO 2017/2018 MATRICES

2 - Matrices y Determinantes

Matrices. En este capítulo: matrices, determinantes. matriz inversa

a11 a12 a13 columna a

En general, llamaremos matriz de dimensión mxn a un conjunto de m.n números reales distribuidos en m filas y n columnas.

Retículos y Álgebras de Boole

UNIVERSIDAD TECNICA LUIS VARGAS TORRES Esmeraldas - Ecuador MATRICES Y VECTORES

Matrices. Primeras definiciones

1 SISTEMAS DE ECUACIONES LINEALES. MÉTODO DE GAUSS

Ejercicios sobre recursividad

Anexo. Aplicaciones de los Determinantes

Matrices. Matrices Transversal de Programación Básica Proyecto Curricular de Ingeniería de Sistemas

MATRICES. 2º Bachillerato. Se llama matriz a una disposición rectangular de números reales, a los cuales se les denomina elementos de la matriz.

Matriz sobre K = R o C de dimensión m n

Matriz A = Se denomina MATRIZ a todo conjunto de números o expresiones dispuestos en forma rectangular, formando filas y columnas.

DOCENTE: JESÚS E. BARRIOS P.

Una matriz es un arreglo rectangular de elementos. Por ejemplo:

Matemática 2 MAT022. Clase 1 (Complementos) Departamento de Matemática Universidad Técnica Federico Santa María. Matrices

Una forma fácil de recordar esta suma (regla de Sarrus): Primero vamos a estudiar algunas propiedades de los determinantes.

TEMA 1: MATRICES Y DETERMINANTES

Un calculadora avanzada... y algo más!

Matrices y Sistemas Lineales

Determinantes. Determinante de orden uno. a 11 = a 11 5 = 5

1. Matrices. Operaciones con matrices

APUNTES ALGEBRA SUPERIOR

Se denomina matriz a todo conjunto de números o expresiones dispuestos en forma rectangular, formando filas y columnas.

introducción a la computación

Matrices. Concepto de matriz Se denomina matriz a todo conjunto de números o expresiones ordenados en filas y columnas.

DETERMINANTES. Resuelve los siguientes sistemas y calcula el determinante de cada matriz de coeficientes: 2x + 3y = x + 6y = 16.

ALGEBRA y ALGEBRA LINEAL

1 ÁLGEBRA DE MATRICES

crear con python Materiales de inicio a la programacion con codigo Ejercicios practicos con soluciones

Matrices. Una matriz es una forma de representar un conjunto de números que guardan una relación entre sí, dando un orden mediante filas y columnas.

Matrices, Determinantes y Sistemas Lineales.

INGENIERO EN COMPUTACION TEMA: DETERMINANTES

TEMA 1. MATRICES, DETERMINANTES Y APLICACIÓN DE LOS DETERMINANTES. CONCEPTO DE MATRIZ. LA MATRIZ COMO EXPRESIÓN DE TABLAS Y GRAFOS.

Teoría Tema 7 Operar con matrices

Tema 1: Matrices y Determinantes

Examen Fundamentos de Programación 15 de enero de 2016 Curso 2015/16

Transcripción:

Introducción 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 matemático. Es decir, la estructura m = [[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 interpretación. In [1]: m = [[1,2],[3,4]] m Out[1]: [[1, 2], [3, 4]] Para representar una matriz, debemos crear una función específica. 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) [ 1 2 ] [ 3 4 ] In [3]: n = [[1,10,100], [20,2,200],[300,30,3]] dibujamatriz(n) [ 1 10 100 ] [ 20 2 200 ] [ 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(len(matriz[i])): cadena += '{:>4s}'.format(str(matriz[i][j])) cadena += ']\n' return cadena In [5]: s = matriz2str(n) print s [ 1 10 100] [ 20 2 200] [ 300 30 3] Podemos crear matrices de diversas maneras 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 = [] a = [0]*m matriz.append(a) return matriz

In [7]: def creamatrizdato(n,m, dato): Esta función crea una matríz con n filas y n columnas. Cada celda contiene el valor "dato" @param n : Número de filas. @param m : Número de columnas @param dato: Un valor @type n: entero @type m: entero @type dato: tipo simple @return: devuelve una matriz n por m @rtype: matriz (lista de listas) matriz = [] a = [dato]*m matriz.append(a) return matriz Cuidado: hay que crear bien las matrices In [8]: def badmatrix(n,m): a = [0]*m matriz = [a]*n return matriz M = badmatrix(2,2) print M [[0, 0], [0, 0]] In [9]: M[0][0]=1 print M [[1, 0], [1, 0]] Dada una matriz, podemos estudiar si es correcta

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 Puede ser útil la utilización de funciones auxiliares

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) 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 leematriz(n,m): Esta función lee por teclado una matríz con n filas y n columna s. @param n : Número de filas. @param m : Número de columnas @type n: entero @type m: entero @return: devuelve una matriz n por m A = creamatriz(n,m) for j in range(m): A[i][j] = int(raw_input('introduce la componente (%d,%d ): '%(i,j))) return A Puede ser más 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(f[:]) return result Algunas operaciones matemáticas con matrices In [15]: def sumamatriz(a,b): Suma dos matrices. Las dos matrices deben ser de la misma dimen siã³n @param A: una matriz nxm @param B: una matriz nxm @type A: Matriz @type B: Matriz @return: Matriz suma if filas(a) == filas(b) and columnas(a) == columnas(b): C = creamatriz(filas(a), columnas(a)) for i in range(filas(a)): for j in range(columnas(a)): C[i][j] = A[i][j] + B[i][j] return C

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 j in range(m): T[i][j] = M[j][i] 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 básicas, 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[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 Out[20]: [[2, 1, 3], [12, 6, 9], [2, 3, 2]] 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 Out[22]: [[2, 1, 3], [32, 16, 39], [2, 3, 2]] In [23]: def intercambiafilas(m,i,j): m[i],m[j] = m[j],m[i] In [24]: intercambiafilas(m, 0, 1) m Out[24]: [[32, 16, 39], [2, 1, 3], [2, 3, 2]]

In [25]: def determinante(matriz): Calcula el determinante poniendo ceros debajo de la diagonal principal m = copy(matriz) n=len(m) det=1 j=primerononulo(m,i) if j == n: return 0 if i!=j: det=-1*det intercambiafilas(m,i,j) det=det*m[i][i] multiplicafila(m,i,1./m[i][i]) for k in range(i+1,n): combinacion(m,i,k,-m[k][i]) return det def primerononulo(m,i): A partir de la fila i, busca la primera fila j cuya entrada (i,j) es nula result=i while result<len(m) and m[result][i]==0: result=result+1 return result In [26]: mat = [[0, 1, 3], [1, 2, 3], [2, 0, 1]] determinante(mat) Out[26]: -7.0 In [27]: a = matrizidentidad(4) a Out[27]: [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]] In [28]: determinante(a) Out[28]: 1.0 In [29]: b = creamatrizdato(5,5,1)

In [30]: determinante(b) Out[30]: 0 Otra posible solución, sería calcular menores de la matriz original y calcular el determinante a partir del cálculo de determinantes de matrices más pequeñas. 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] # 1 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

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) Out[33]: -7 Recursión? ---> eso qué es? In [33]: