Algo de álgebra con Nx
En esta entrada pretendo mostrar la capacidad de la library Nx para trabajar con matrices.
Algo de álgebra con Nx
En esta entrada pretendo mostrar la capacidad de la library Nx para trabajar con matrices. Es cierto que no se puede comparar con un lenguaje como R y todas las herramientas que tiene el lenguaje, pero en gran medida tiene lo básico (y más) para quienes necesiten trabajar con álgebra lineal.
La idea es usar este blog https://rpubs.com/hllinas/R_Multivariado_Algebra_Lineal como ejemplo de las cosas que se pueden emular con Elixir.
Comencemos.

Operaciones básicas con matrices
Primero, con la función Nx.tensor() se crean los tensores (matrices o vectores). Se debe tener en cuenta que las líneas y las columnas se separan usando [ ]
Usaré las siguientes matrices para mostrar las funciones de transposición, suma, resta, multiplicación, la inversa de una matriz y hallar la determinante.
Nota: todos los ejercicios los ejecuto en Livebook
c = Nx.tensor([[-1, 3], [2, 4]])

b = Nx.tensor([[5, 7], [-6, 1]])

Transponer
Para transponer una matriz (la matriz "b" en este ejemplo), se usa la función:
Nx.transpose(b)

Suma y resta
Para sumar dos matrices se usa Nx.add():

Nx.add(c, b)

Para la resta, sería:

Nx.subtract(c, b)

Multiplicación
Para esta operación, sabemos que también se puede hacer multiplicación por un número escalar y multiplicación entre matrices. En ambos casos la función es la misma: Nx.dot()
Por ejemplo, multiplicar la matriz “u” por -2
u = Nx.tensor([[4], [2]])
Nx.dot(-2, u)

Y el producto de matrices sería:

a = Nx.tensor([[1, 3], [2, 4]])
b = Nx.tensor([[5, 7], [-6, 1]])
Nx.dot(a, b)

Inversa de una matriz

Para esto, vamos a usar este ejercicio ya desarrollado. Cabe aclarar que el ejercicio no maneja más de dos decimales por lo que la diferencia se debe a ello.

Teniendo la siguiente matriz, procedemos usando la función Nx.LinAlg.invert()
a = Nx.tensor([[1, 9], [5, 2]])
Nx.LinAlg.invert(a)

Hallar la determinante
Un determinante es una función que mapea una matriz cuadrada en un escalar real (valor único). En matemáticas, el determinante de una matriz cuadrada A se indica como det(A) o |A|.
Por ejemplo, teniendo la siguiente matriz, podemos obtener el determinante de la siguiente manera:

Usando la función Nx.LinAlg.determinant() tenemos:
Nx.tensor([[1, 2], [3, 4]])
|>Nx.LinAlg.determinant()

Es todo por ahora..
En la siguiente entrada seguiré con algo de álgebra incluyendo problemas que he tenido con Elixir y su library Nx: Es cierto que R está enfocado en estadística computacional, pero no deja de ser interesante ver hasta qué punto se puede reemplazar un lenguaje por otro.
Hasta la próxima
Leonardo Linares
Ad gloriam Dei
메타데이터
- post_id
- 4fd4ddcabf81
- slug
- algo-de-álgebra-con-nx-4fd4ddcabf81
- url
- https://medium.com/@elixirparami/algo-de-%C3%A1lgebra-con-nx-4fd4ddcabf81
- canonical_url
- https://medium.com/@elixirparami/algo-de-%C3%A1lgebra-con-nx-4fd4ddcabf81
- author_url
- https://medium.com/@elixirparami
- status
- ok
- fetched_at
- 2026-06-22 12:55:45