Producto matriz-vector
Sea \(A\in\mathbb{R}^{n\times n}\) una matriz y \(\mathbf{b}\in\mathbb{R}^n\) un vector, definidos como:
El producto matriz-vector se calcula de la siguiente manera:
o escrito de forma compacta
Desarrolle un programa que calcule el producto matriz-vector para un valor de \(n\) ingresado por usuario. El programa debe mostrar la matriz y el vector y finalmente el producto.
Puede generar la matriz \(A\) y el vector \(\mathbf{b}\) con valores aleatorios utilizando el siguiente código:
Example
from random import random
def crear_vector(n):
v = []
for i in range(n):
v.append(random())
return v
def crear_matriz(n):
m = []
for i in range(n):
m.append(crear_vector(n))
return m
Ejemplo
Ingrese n: 4
A:
0.29897956887511123 0.4854449886464737 0.6208100585958172 0.09177889843579046
0.9185016249163171 0.9914276017940338 0.11848324268473831 0.6943613227580757
0.5430249582511094 0.16139741654489315 0.5672829232809159 0.5307077861481704
0.39333373239457714 0.6079569057108376 0.023416842116470327 0.012533574907011902
b:
0.13577465224021967
0.32505790640569954
0.272909157229402
0.4923975548377869
Ab:
0.41300803374191936
0.8212175987039882
0.5423284519216363
0.2635881219700423
Solución
from random import random
# Función para crear un vector de n elementos con valores aleatorios
def crear_vector(n):
v = []
for i in range(n):
v.append(random())
return v
# Función para crear una matriz de n x n elementos con valores aleatorios
def crear_matriz(n):
m = []
for i in range(n):
m.append(crear_vector(n))
return m
# Función para mostrar un vector
def mostrar_vector(v):
for e in v:
print(e)
# Función para mostrar una matriz
def mostrar_matriz(m):
for fila in m:
f = "" # Se crea un string vacio para visualizar la fila
for e in fila:
f += str(e) + " " # Se agrega un espacio para visualizar
print(f)
# Función para calcular el producto matriz-vector
def producto_matriz_vector(A, b):
n = len(b)
Ab = [] # Se crea un vector vacío para guardar el producto
for i in range(n): # Se recorre cada fila i
c = 0 # Se crea una variable para guardar el elemento c_i
for j in range(n): # Se recorre cada elemento j de la fila i
c += A[i][j] * b[j] # Se calcula el elemento c_i
Ab.append(c) # Se agrega el elemento c_i al vector
return Ab # Se retorna el vector
# Solicitar n
n = int(input("Ingrese n: "))
# Crear matriz y vector
A = crear_matriz(n)
b = crear_vector(n)
# Mostrar matriz
print("A: ")
mostrar_matriz(A)
print()
# Mostrar vector
print("b: ")
mostrar_vector(b)
print()
# Producto matriz-vector
Ab = producto_matriz_vector(A, b)
# Mostrar producto
print("Ab: ")
mostrar_vector(Ab)
Producto matriz-matriz
Sean \(A, B\in\mathbb{R}^{n\times n}\) matrices definidas como:
El producto de matrices se calcula de la siguiente manera:
Extienda su programa anterior o desarrolle uno nuevo para calcular el producto de matrices. El programa debe solicitar el valor de \(n\), mostrar las matrices y luego el resultado. Puede generar las matrices con valores aleatorios utilizando el código de la sección anterior.
Ejemplo
Ingrese n: 3
A:
0.7579130713983545 0.7051866951144764 0.7093682532601882
0.6835898432342268 0.5076784751826147 0.7544466570278985
0.2875664351545816 0.10466389947529275 0.8882499269287549
B:
0.8871720889936138 0.06174559217119968 0.9311381318484788
0.3335438666265823 0.11681278877449985 0.8556315217419117
0.3278333631933946 0.34297234504926755 0.26754793936057886
AB:
1.1401646000190586 0.37246630919492857 1.4988917408659321
1.0231276557758922 0.36026633733502067 1.272752924301118
0.5812288776290825 0.33462720223749903 0.5949672423786242
Solución
from random import random
# Función para crear un vector de n elementos con valores aleatorios
def crear_vector(n):
v = []
for i in range(n):
v.append(random())
return v
# Función para crear una matriz de n x n elementos con valores aleatorios
def crear_matriz(n):
m = []
for i in range(n):
m.append(crear_vector(n))
return m
# Función para mostrar una matriz
def mostrar_matriz(m):
for fila in m:
f = "" # Se crea un string vacio para visualizar la fila
for e in fila:
f += str(e) + " " # Se agrega un espacio para visualizar
print(f)
# Función para calcular el producto matriz-matriz
def producto_matriz_matriz(A, B):
n = len(A) # Se asume que A y B son matrices cuadradas
C = [] # Se crea una "matriz" vacía para guardar el producto
for i in range(n): # Se recorre cada fila i
fila = [] # Se crea una fila vacia para guardar los elementos de la fila i
for j in range(n): # Se recorre cada columna j
c = 0 # Se crea una variable para guardar el elemento c_ij
for k in range(n): # Se recorre cada elemento k de la fila i y columna j
c += A[i][k] * B[k][j]
fila.append(c) # Se agrega el elemento c_ij a la fila
C.append(fila) # Se agrega la fila a la matriz
return C
# Solicitar n
n = int(input("Ingrese n: "))
# Crear vector y matriz
A = crear_matriz(n)
B = crear_matriz(n)
# Mostrar matrices
print("A: ")
mostrar_matriz(A)
print()
print("B: ")
mostrar_matriz(B)
print()
# Producto matriz-vector
print("AB: ")
AB = producto_matriz_matriz(A, B)
# Mostrar producto
mostrar_matriz(AB)