Python - Creando Matrices Dinámicas
#40 Ejemplos de Matrices en Python:
#1. Matriz vacía:
matriz_vacia = []
print(matriz_vacia)
#2. Matriz de una fila con tres elementos:
matriz_una_fila = [1, 2, 3]
print(matriz_una_fila)
#3. Matriz de dos filas y tres columnas:
matriz_dos_filas = [[1, 2, 3], [4, 5, 6]]
print(matriz_dos_filas)
#4. Matriz de tres filas y dos columnas:
matriz_tres_filas = [[1, 2], [3, 4], [5, 6]]
print(matriz_tres_filas)
#5. Matriz de tamaño 2x3 con valores predefinidos:
matriz2x3 = [[1, 2, 3], [4, 5, 6]]
print(matriz2x3)
#6. Matriz de tamaño 3x2 con valores predefinidos:
matriz3x2 = [[1, 2], [3, 4], [5, 6]]
print(matriz3x2)
#7. Usando una comprensión de lista:
matriz3x3 = [[0 for j in range(3)] for i in range(3)]
print(matriz3x3)
#8. Matriz de tamaño 2x3 con valores aleatorios:
import random
matriz2x3 = [[random.randint(1, 10) for j in range(3)] for i in range(2)]
print(matriz2x3)
#9. Matriz de tamaño 3x2 con valores aleatorios:
import random
matriz3x2 = [[random.randint(1, 10) for j in range(2)] for i in range(3)]
print(matriz3x2)
#10. Matriz de tamaño 2x3 con valores ingresados por el usuario:
matriz = []
for i in range(2):
fila = []
for j in range(3):
valor = int(input("Ingrese el valor para la posición ({}, {}): ".format(i, j)))
fila.append(valor)
matriz.append(fila)
#11. Matriz de tamaño 3x2 con valores ingresados por el usuario:
matriz = []
for i in range(3):
fila = []
for j in range(2):
valor = int(input("Ingrese el valor para la posición ({}, {}): ".format(i, j)))
fila.append(valor)
matriz.append(fila)
#12. Crear una matriz vacía y agregar elementos de forma dinámica:
filas = 3
columnas = 3
matriz = []
for i in range(filas):
fila = []
for j in range(columnas):
fila.append(0)
matriz.append(fila)
print(matriz)
#13. Crear una matriz a partir de una lista de listas:
lista = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
matriz = []
for fila in lista:
matriz.append(fila)
print(matriz)
#14. Crear una matriz a partir de una lista de tuplas:
lista = [(1, 2, 3), (4, 5, 6), (7, 8, 9)]
matriz = []
for tupla in lista:
fila = list(tupla)
matriz.append(fila)
print(matriz)
#15. Crear una matriz a partir de un archivo de texto:
archivo = open("matriz.txt", "r")
matriz = []
for linea in archivo:
fila = linea.strip().split(",")
fila = [int(elemento) for elemento in fila]
matriz.append(fila)
archivo.close()
print(matriz)
#16. Crear una matriz a partir de una entrada de usuario:
filas = int(input("Ingrese el número de filas: "))
columnas = int(input("Ingrese el número de columnas: "))
matriz = []
for i in range(filas):
fila = []
for j in range(columnas):
elemento = int(input("Ingrese el elemento ({}, {}): ".format(i, j)))
fila.append(elemento)
matriz.append(fila)
print(matriz)
#17. Imprimir una matriz de ceros:
filas = 3
columnas = 3
matriz = []
for i in range(filas):
fila = []
for j in range(columnas):
fila.append(0)
matriz.append(fila)
print(matriz)
#18. Imprimir una matriz identidad:
filas = 3
columnas = 3
matriz = []
for i in range(filas):
fila = []
for j in range(columnas):
if i == j:
fila.append(1)
else:
fila.append(0)
matriz.append(fila)
print(matriz)
#19. Matriz identidad de tamaño n:
def matriz_identidad(n):
matriz = []
for i in range(n):
fila = [0] * n
fila[i] = 1
matriz.append(fila)
return matriz
#20. Matriz diagonal con valores dados:
def matriz_diagonal(n, valor):
matriz = []
for i in range(n):
fila = [0] * n
fila[i] = valor
matriz.append(fila)
return matriz
#21. Matriz triangular superior con valores dados:
def matriz_triangular_superior(n, valor):
matriz = []
for i in range(n):
fila = [0] * n
for j in range(i, n):
fila[j] = valor
matriz.append(fila)
return matriz
#22. Matriz triangular inferior con valores dados:
def matriz_triangular_inferior(n, valor):
matriz = []
for i in range(n):
fila = [0] * n
for j in range(i + 1):
fila[j] = valor
matriz.append(fila)
return matriz
#23. Matriz aleatoria de tamaño n x m:
import random
def matriz_aleatoria(n, m):
matriz = []
for i in range(n):
fila = []
for j in range(m):
fila.append(random.randint(0, 9))
matriz.append(fila)
return matriz
#24. Matriz transpuesta de una matriz dada:
def matriz_transpuesta(matriz):
filas = len(matriz)
columnas = len(matriz[0])
matriz_transpuesta = []
for j in range(columnas):
fila = []
for i in range(filas):
fila.append(matriz[i][j])
matriz_transpuesta.append(fila)
return matriz_transpuesta
#25. Suma de dos matrices:
def suma_matrices(matriz1, matriz2):
filas = len(matriz1)
columnas = len(matriz1[0])
resultado = []
for i in range(filas):
fila = []
for j in range(columnas):
fila.append(matriz1[i][j] + matriz2[i][j])
resultado.append(fila)
return resultado
#26. Resta de dos matrices:
def resta_matrices(matriz1, matriz2):
filas = len(matriz1)
columnas = len(matriz1[0])
resultado = []
for i in range(filas):
fila = []
for j in range(columnas):
fila.append(matriz1[i][j] - matriz2[i][j])
resultado.append(fila)
return resultado
#27. Multiplicación por un escalar:
def multiplicacion_escalar(matriz, escalar):
filas = len(matriz)
columnas = len(matriz[0])
resultado = []
for i in range(filas):
fila = []
for j in range(columnas):
fila.append(matriz[i][j] * escalar)
resultado.append(fila)
return resultado
#28. Producto de dos matrices:
def producto_matrices(matriz1, matriz2):
filas1 = len(matriz1)
columnas1 = len(matriz1[0])
filas2 = len(matriz2)
columnas2 = len(matriz2[0])
if columnas1 != filas2:
return None
resultado = []
for i in range(filas1):
fila = []
for j in range(columnas2):
suma = 0
for k in range(columnas1):
suma += matriz1[i][k] * matriz2[k][j]
fila.append(suma)
resultado.append(fila)
return resultado
#29. Determinante de una matriz cuadrada:
def determinante(matriz):
n = len(matriz)
if n == 1:
return matriz[0][0]
elif n == 2:
return matriz[0][0] * matriz[1][1] - matriz[0][1] * matriz[1][0]
else:
det = 0
for j in range(n):
submatriz = [fila[:j] + fila[j+1:] for fila in matriz[1:]]
det += ((-1) ** j) * matriz[0][j] * determinante(submatriz)
return det
#30. Matriz inversa de una matriz cuadrada:
def matriz_inversa(matriz):
n = len(matriz)
det = determinante(matriz)
if det == 0:
return None
if n == 1:
return [[1 / matriz[0][0]]]
cofactores = []
for i in range(n):
fila = []
for j in range(n):
submatriz = [fila[:j] + fila[j+1:]
for fila in matriz[:i] + matriz[i+1:]]
cofactor = ((-1) ** (i+j)) * determinante(submatriz)
fila.append(cofactor)
cofactores.append(fila)
adjunta = matriz_transpuesta(cofactores)
inversa = multiplicacion_escalar(adjunta, 1 / det)
return inversa
#31. Matriz de cofactores de una matriz cuadrada:
def matriz_cofactores(matriz):
n = len(matriz)
cofactores = []
for i in range(n):
fila = []
for j in range(n):
submatriz = [fila[:j] + fila[j+1:]
for fila in matriz[:i] + matriz[i+1:]]
cofactor = ((-1) ** (i+j)) * determinante(submatriz)
fila.append(cofactor)
cofactores.append(fila)
return cofactores
#32. Matriz adjunta de una matriz cuadrada:
def matriz_adjunta(matriz):
cofactores = matriz_cofactores(matriz)
adjunta = matriz_transpuesta(cofactores)
return adjunta
#33. Matriz simétrica aleatoria de tamaño n x n:
def matriz_simetrica(n):
matriz = []
for i in range(n):
fila = []
for j in range(i+1):
fila.append(random.randint(0, 9))
for j in range(i+1, n):
fila.append(matriz[j][i])
matriz.append(fila)
return matriz
#34. Matriz de Hilbert de tamaño n x n:
def matriz_hilbert(n):
matriz = []
for i in range(1, n+1):
fila = []
for j in range(1, n+1):
elemento = 1 / (i + j - 1)
fila.append(elemento)
matriz.append(fila)
return matriz
#35. Matriz de Vandermonde de tamaño n x m:
def matriz_vandermonde(n, m):
matriz = []
for i in range(n):
fila = []
for j in range(m):
elemento = i ** j
fila.append(elemento)
matriz.append(fila)
return matriz
#36. Matriz de Toeplitz de tamaño n x m con valores dados:
def matriz_toeplitz(n, m, valores):
matriz = []
for i in range(n):
fila = []
for j in range(m):
if i == 0:
elemento = valores[j]
elif j == 0:
elemento = valores[i]
else:
elemento = matriz[i-1][j-1]
fila.append(elemento)
matriz.append(fila)
return matriz
#37. Matriz de circulante de tamaño n x n con valores dados:
def matriz_circulante(n, valores):
matriz = []
for i in range(n):
fila = []
for j in range(n):
elemento = valores[(i-j) % n]
fila.append(elemento)
matriz.append(fila)
return matriz
#38. Matriz de rotación de tamaño 2 x 2 con ángulo dado:
import math
def rotation_matrix(angle):
rad = math.radians(angle)
cos = math.cos(rad)
sin = math.sin(rad)
return [[cos, -sin], [sin, cos]]
angle = 45
rot_matrix = rotation_matrix(angle)
print(rot_matrix)
#39. Imprimiendo Matrices 1
import random
def imprimir_matrices():
# Definimos el tamaño de la lista y las matrices
num_matrices = 5
matrix_size = (3, 3)
# Creamos la lista de matrices aleatorias
matrices = []
for _ in range(num_matrices):
matrix = []
for i in range(matrix_size[0]):
row = []
for j in range(matrix_size[1]):
row.append(random.randint(0, 9))
matrix.append(row)
matrices.append(matrix)
print(matrices)
for matriz in matrices:
print('Matriz:')
for fila in matriz:
for col in fila:
print(col, end=' ')
print()
print()
imprimir_matrices()
#40. Imprimiendo Matrices 2
import random
def imprimir_fila(fila):
for col in fila:
print(col, end=' ')
def imprimir_matriz(matriz):
for fila in matriz:
imprimir_fila(fila)
print()
def imprimir_matrices(matrices):
for matriz in matrices:
print('Matriz:')
imprimir_matriz(matriz)
print()
# Definimos el tamaño de la lista y las matrices
num_matrices = 5
matrix_size = (3, 3)
# Creamos la lista de matrices aleatorias
matrices = []
for _ in range(num_matrices):
matrix = []
for i in range(matrix_size[0]):
row = []
for j in range(matrix_size[1]):
row.append(random.randint(0, 9))
matrix.append(row)
matrices.append(matrix)
# Imprimimos la lista de matrices
print(matrices)
imprimir_matrices(matrices)