#!/usr/bin/env python

# Se importa numpy como np
import numpy as np

# Se define los valores de la matriz A
A = np.array([[3, 9, -10], [1, -6, 4], [10, -2, 8]])
print(A)
# Tamaño de la matriz
print(A.shape)
# Transpuesta
print(A.transpose())
print(A.T)

# Se definen los valores de la matriz B
B = np.array([[24], [-4], [20]])
# Tamaño
print(B.shape)

# Se calcula el valor de X con X=inv(A)*B
X = np.linalg.inv(A).dot(B)
# Se muestra el resultado
print("El resultado de X es:", X)


from scipy.linalg import solve

X = solve(A, B)
# Se muestra el resultado
print("El resultado de X es:", X)


# Otras opciones
C = np.zeros((3, 2))
D = np.ones((2, 3))
R = np.random.rand(
    3, 2
)  # returns an array with random elements from 0 to 1, taken from a uniform distribution.
A = np.random.randn(
    3, 2
)  # random elements taken from a normal distribution with zero mean and unit variance

# producto matriz vector
A = np.array([[1, 2], [3, 4]])
v = np.array([[5], [6]])
x = np.dot(
    A, v
)  # To perform matrix multiplication according to the linear algebra rules
x
x = A @ v
x
