def inversoAditivoVector(v1): """ La función inverso aditivo de un vector complejo recibe una lista de longitud n que a su vez contienen listas de longitud 2 y devuelve cada posición del vector multiplicada por el complejo [-1,0] """ res = [] for i in range(len(v1)): res.append(lc.producto(v1[i][0], [-1, 0])) return res
def productoEscalarMatriz(m1, ec1): """ La función producto de un escalar por una matriz complejo recibe un escalar (lista de longitud 2) y una matriz (listas de longitud n que contienen listas de longitud n y a su vez tienen listas de longitud 2) y devuelve la operación de multiplicar el escalar por cada elemento del vector """ res = [] for i in range(len(m1)): for j in range(len(m1[0])): res.append(lc.producto(m1[i][j], ec1)) return res
def inversoAditivoMatriz(m1): """ La función inversa aditiva de una matriz recibe una matriz (lista de longitud n que contiene una lista de longitud n y que a su vez contiene complejos, es decir listas de longitud 2) y devuelve cada posición de la matriz multiplicada por el complejo [-1,0] """ res = [] for i in range(len(m1)): for j in range(len(m1[0])): res.append(lc.producto(m1[i][j], [-1, 0])) return res
def productoTensorial(m1, m2): """ La función producto tensorial recibe dos matrices y como resultado devuelve la operación de hacer producto tensorial entre las dos matrices """ filasm1, filasm2 = len(m1), len(m2) columnasm1, columnasm2 = len(m1[0]), len(m2[0]) mr = [[[0, 0] for i in range(columnasm1*columnasm2)]for j in range(filasm1*filasm2)] for i in range(len(mr)): for j in range(len(mr[0])): mr[i][j] = lc.producto(m1[i//filasm2][j//columnasm2], m2[i%filasm2][j%columnasm2]) return mr
def productoMatrices(m1, m2): """ la función producto de matrices recibe dos matrices de números complejos y retorna la operación de multiplicar las matrices, para esto se requiere que el número de columnas de la primera matriz sea igual al número de filas de la segunda, y se opera multiplicando filas de la primera matriz con las columnas de la segunda matriz """ filasm1, filasm2 = len(m1), len(m2) columnasm1, columnasm2 = len(m1[0]), len(m2[0]) if columnasm1 == filasm2: mr = [[[0, 0] for columnas in range(columnasm2)]for filas in range(filasm1)] for i in range(filasm1): for j in range(columnasm2): for k in range(filasm2): mr[i][j] = lc.suma(mr[i][j],lc.producto(m1[i][k], m2[k][j])) return mr else: return "Syntax Error"