← Back to list

Algo de álgebra con Nx

En esta entrada pretendo mostrar la capacidad de la library Nx para trabajar con matrices.

Elixir para mí · 2026-01-26 20:44 · 0 claps · 3.1 min read
#elixir #elixirlang #livebook #linear-algebra #r-language
Open on Medium ↗
Wiki topics: 📐 · Mathematics 📚 · Books & Reading

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