Álgebra Superior I: Reducción de Gauss-Jordan

Por Eduardo García Caballero

Introducción

En la entrada anterior vimos que los sistemas de ecuaciones se encuentran íntimamente relacionados con los vectores y las matrices. Teniendo esto en cuenta, en esta entrada abordaremos una estrategia que nos permitirá encontrar soluciones de los sistemas de ecuaciones lineales.

Operaciones elementales por filas

Antes de pasar a describir el algoritmo con el cual podremos resolver un sistema de ecuaciones lineales, deberemos definir algunas operaciones y conceptos que nos ayudaran a efectuarlo. Empecemos con una lista de operaciones que se pueden aplicar a las matrices, las cuales son con conocidas como operaciones elementales por filas.

Para esto, consideremos una matriz
\[
A=
\begin{pmatrix}
5 & \pi & 3 \\
\sqrt{2} & -1 & 2 \\
-1/3 & 4 & 0 \\
9 & -3 & 2/3
\end{pmatrix},
\]
y veamos cómo la afecta cada una de estas operaciones.

La primera de estas operaciones es el reescalamiento. Esta operación consiste en seleccionar una fila de una matriz, y multiplicar cada una de las entradas de esta fila por un mismo número real distinto de cero. Por ejemplo, si reescalamos la tercera fila de $A$ por el número $-3$, obtendremos la matriz
\[
\begin{pmatrix}
5 & \pi & 3 \\
\sqrt{2} & -1 & 2 \\
(-3)(-1/3) & (-3)(4) & (-3)(0) \\
9 & -3 & 2/3
\end{pmatrix}
=
\begin{pmatrix}
5 & \pi & 3 \\
\sqrt{2} & -1 & 2 \\
1& -12 & 0 \\
9 & -3 & 2/3
\end{pmatrix}.
\]

Otra operación que podemos aplicar a las matrices es la trasposición, la cual consiste en intercambiar el contenido de dos filas distintas. Por ejemplo, si transponemos las filas 2 y 4 de $A$, el resultado será la matriz
\[
\begin{pmatrix}
5 & \pi & 3 \\
9 & -3 & 2/3 \\
-1/3 & 4 & 0 \\
\sqrt{2} & -1 & 2
\end{pmatrix}.
\]

La última de las operaciones que nos interesa es la transvección. Esta consiste en sumar el múltiplo de una fila (el resultado de multiplicar cada entrada de una fila por un mismo escalar) a otra fila (la suma se realiza entrada por entrada). Por ejemplo, si en $A$ realizamos la transvección que corresponde a “sumar 3/2 de la cuarta fila a la primera fila”, obtendremos la matriz
\[
\begin{pmatrix}
5 + (3/2)(9) & \pi+(3/2)(-3) & 3+(3/2)(2/3) \\
\sqrt{2} & -1 & 2 \\
-1/3 & 4 & 0 \\
9 & -3 & 2/3
\end{pmatrix}
=
\begin{pmatrix}
37/2 & -9/2+\pi & 4 \\
\sqrt{2} & -1 & 2 \\
-1/3 & 4 & 0 \\
9 & -3 & 2/3
\end{pmatrix}.
\]

Si recuerdas, todos los sistemas de ecuaciones se pueden escribir como $Ax=b$. Las operaciones elementales son muy importantes por las siguientes dos razones:

  • Si aplicamos la misma operación elemental a $A$ y $b$ para obtener la matriz $A’$ y el vector $b’$, entonces $Ax=b$ y $A’x=b’$ tienen exactamente el mismo conjunto solución. Decimos que «las operaciones elementales no cambian las soluciones del sistema».
  • Usando operaciones elementales se puede llevar el sistema $Ax=b$ a un sistema mucho más sencillo $A_{red}x=b_{red}$ (que discutiremos más abajo). Entonces «las operaciones ayudan a simplificar un sistema de ecuaciones».

Juntando ambas observaciones, con operaciones elementales podemos llevar cualquier sistema de ecuaciones a uno mucho más sencillo y con el mismo conjunto solución.

Puedes intentar convencerte de la primera afirmación pensando en lo siguiente. En un reescalamiento de filas corresponde a multiplicar por una constante no nula ambos lados de una ecuación; la transposición corresponde a cambiar el orden en el que aparecen dos ecuaciones diferentes; mientras que la transvección corresponde a sumar un múltiplo de una ecuación a otra ecuación, y el sistema tiene las mismas soluciones pues, si un conjunto de valores es solución para dos ecuaciones, entonces es solución para cualquier combinación lineal de estas. En un curso de Álgebra Lineal I puedes encontrar las justificaciones con mucho más detalle.

En las siguientes secciones hablamos un poco más de la segunda afirmación.

Forma escalonada y escalonada reducida para una matriz

Además de las operaciones elementales por filas, es importante definir algunos conceptos.

Comencemos con el concepto de pivote: diremos que una entrada de una matriz es un pivote si es el primer elemento distinto de cero en una fila.

Diremos que una matriz se encuentra en forma escalonada si se cumple: 1. Todas las filas nulas se encuentran hasta abajo; 2. Todos los pivotes de filas no-nulas tienen valor 1; 3. El pivote de cada fila se encuentra la derecha del pivote de una fila superior. Es fácil identificar las matrices en forma escalonada porque parecen “estar en escalerita”. Por ejemplo, la matriz
\[
\begin{pmatrix}
1 & 9 & 1 & 1 \\
0 & 1 & 2 & 3 \\
0 & 0 & 1 & 1
\end{pmatrix}
\]
se encuentra en forma escalonada, mientras que las matrices
\[
\begin{pmatrix}
1 & 0 & 2 & 4 \\
0 & 0 & 9 & 2 \\
0 & 3 & 0 & 0
\end{pmatrix}
\qquad
\text{y}
\qquad
\begin{pmatrix}
0 & 6 & 8 & -5 \\
0 & 0 & 0 & 0 \\
0 & 0 & 9 & 2
\end{pmatrix}
\]
no lo están. ¿Puedes justificar por qué?

Por su parte, diremos que una matriz se encuentra en forma escalonada reducida si está en forma escalonada y, además, si hay un pivote en alguna fila, todas las entradas que no sean pivote en la misma columna del pivote son iguales a $0$ (Ojo. Siempre hablamos de pivotes de renglones).

Por ejemplo, la matriz
\[
\begin{pmatrix}
1 & 0 & -1 & 0 \\
0 & 1 & 3 & 0 \\
0 & 0 & 0 & 1
\end{pmatrix}
\]
está en forma escalonada reducida.

Como recordarás de la entrada anterior, un sistema de ecuaciones lineales
\[
\begin{cases}
a_{11}x_1 + a_{12}x_2 + \cdots + a_{1n}x_n & = b_1 \\
a_{21}x_1 + a_{22}x_2 + \cdots + a_{2n}x_n & = b_2 \\
& \vdotswithin{\mspace{15mu}} \\
a_{m1}x_1 + a_{m2}x_2 + \cdots + a_{mn}x_n &= b_m
\end{cases}
\]
se puede codificar como
\[
\begin{pmatrix}
a_{11} & a_{12} & \cdots & a_{1n} \\
a_{21} & a_{22} & \cdots & a_{2n} \\
\vdots & \vdots & \ddots & \vdots \\
a_{m1} & a_{m2} & \cdots & a_{mn}
\end{pmatrix}
\begin{pmatrix}
x_1 \\
x_2 \\
\vdots \\
x_n
\end{pmatrix}
=
\begin{pmatrix}
b_1 \\
b_2 \\
\vdots \\
b_m
\end{pmatrix}.
\]

Como podemos cambiar el nombre de las variables, pero el vector de soluciones sigue siendo el mismo, es común codificar el sistema como una única matriz aumentada
\[
\left(
\begin{matrix}
a_{11} & a_{12} & \cdots & a_{1n} \\
a_{21} & a_{22} & \cdots & a_{2n} \\
\vdots & \vdots & \ddots & \vdots \\
a_{m1} & a_{m2} & \cdots & a_{mn}
\end{matrix}
\
\middle|
\
\begin{matrix}
b_1 \\
b_2 \\
\vdots \\
b_m
\end{matrix}
\right).
\]

Aquí pusimos una línea vertical, pero sólo es por ayuda visual. Esa matriz la puedes tratar como cualquier matriz que hemos platicado.

Teniendo esto en cuenta, las matrices en forma escalonada reducida nos son de gran utilidad al resolver sistemas de ecuaciones lineales. Por ejemplo, consideremos el sistema
\[
\begin{cases}
x + 3y + 2w &= 8 \\
z + w &= 9,
\end{cases}
\]
el cual tiene como matriz aumentada a
\[
\left(
\begin{matrix}
1 & 3 & 0 & 2 \\
0 & 0 & 1 & 1
\end{matrix}
\
\middle|
\
\begin{matrix}
8 \\
9
\end{matrix}
\right),
\]
la cual se encuentra en forma escalonada.

Gracias a que la matriz está en forma escalonada, podemos elegir en orden inverso $w$, $z$, $y$, $x$ a las variables libres y pivote como en la entrada anterior. En este caso, podemos elegir como queramos el valor de $w$ ($w$ es variable libre). Usando la segunda ecuación, podemos despejar $z$ en términos de $w$ ($z$ es variable pivote). Estos dos valores los sustituimos en la primera ecuación y notamos que $y$ puede ser lo que queramos ($y$ es variable libre). Finalmente, $x$ queda totalmente determinado por las demás variables ($x$ es pivote). Las variables pivote justo corresponden a columnas de la matriz que tengan pivote de alguna fila.

La ventaja de la forma escalonada es que podremos ir obteniendo fácilmente el valor de cada variable “de abajo hacia arriba”. En el caso de un sistema cuya matriz se encuentre en forma escalonada reducida, será aún más sencillo pues ya no tendremos que sustituir valores y obtenemos el despeje directamente.

Teorema de reducción de Gauss-Jordan

El siguiente teorema relaciona las operaciones elementales por filas con la forma escalonada reducida de una matriz.

Teorema (de reducción de Gauss-Jordan o reducción gaussiana). Cualquier matriz con entradas reales se puede a una forma escalonada reducida aplicando una cantidad finita de pasos.

A continuación presentamos un algoritmo con el cual podemos pasar de una matriz arbitraria a una matriz en su forma escalonada reducida. Para hacer más sencilla su aplicación, nos enfocaremos en comprender la estrategia que sigue el algoritmo. La descripción formal del algoritmo y demostración de que en efecto funciona como esperamos es un tema que abordarás en el curso de Álgebra Lineal I (puedes echarle un ojo a esta entrada).

Primeramente, describiremos los pasos del algoritmo, al que se le conoce como reducción de Gauss-Jordan o reducción gaussiana.

Estrategia: Iremos arreglando la matriz de izquierda a derecha. Para ello, haremos los siguientes pasos repetidamente.

  1. Buscamos la primera columna de la matriz (de izquierda a derecha) que no tenga puros ceros.
  2. Una vez encontrada dicha columna, buscamos la primera entrada (de arriba hacia abajo) que no sea cero.
  3. Pasamos la fila que contiene a dicha entrada hasta arriba mediante la operación de transposición.
  4. Multiplicamos cada entrada de la fila que acabamos de mover hasta arriba por el inverso multiplicativo de su primera entrada (aquí usamos la operación de reescalamiento). La primera entrada de esta fila ahora será 1.
  5. Mediante la operación de transvección, sustraemos múltiplos de la primera fila al resto de renglones de la matriz, de modo que el resto de los valores en la columna correspondiente a la primera entrada de la fila en la que estamos trabajando pasen a ser 0 (como puedes observar, la entrada primera entrada no-nula de la fila en la que estamos trabajando ahora será un pivote).
  6. Ignorando la primera fila, buscamos la primera columna (de izquierda a derecha) que no tenga puros ceros.
  7. Repetimos los pasos anteriores (2 a 6), pero ahora, en vez de mover la fila con la que estamos trabajando “hasta arriba”, la moveremos inmediatamente después de la última fila con la que trabajamos.
  8. Hacemos esto hasta haber arreglado todas las columnas.

Ejemplo de reducción de Gauss-Jordan

Ahora, como ejemplo, veamos cómo podemos implementar este algoritmo en la matriz
\[
\begin{pmatrix}
0 & 1 & 2 & 3 & 4 \\
-1 & 0 & 1 & 2 & 3 \\
3 & 1 & -1 & 0 & 2 \\
0 & 1 & 1 & 1 & 1
\end{pmatrix},
\]
la cual, si la consideramos como la matriz aumentada
\[
\left(
\begin{matrix}
0 & 1 & 2 & 3 \\
-1 & 0 & 1 & 2 \\
3 & 1 & -1 & 0 \\
0 & 1 & 1 & 1
\end{matrix}
\
\middle|
\
\begin{matrix}
4 \\
3 \\
2 \\
1
\end{matrix}
\right),
\]
corresponde al sistema de ecuaciones
\[
\begin{cases}
y + 2z + 3w &= 4 \\
-x + z + 2w &= 2 \\
3x + y -z &= 0 \\
y + z + w &= 1.
\end{cases}
\]

Buscamos la primera la primera columna no nula, la cual resulta ser la primera columna de la matriz. En esta columna, vemos que la segunda entrada es la primera entrada distinta de cero. Entonces, mediante trasposicón, intercambiamos las filas 1 y 2 (“movemos la segunda columna hasta arriba”):
\[
\begin{pmatrix}
-1 & 0 & 1 & 2 & 3 \\
0 & 1 & 2 & 3& 4 \\
3 & 1 & -1 & 0 & 2 \\
0 & 1 & 1 & 1 & 1
\end{pmatrix}.
\]

Ahora, nos fijamos en la primera entrada no nula de la primera fila, que es $-1$, y reescalamos la fila por su inverso multiplicativo, que es $-1$:
\[
\begin{pmatrix}
(-1)(-1) & (-1)(0) & (-1)(1) & (-1)(2) & (-1)(3) \\
0 & 1 & 2 & 3 & 4 \\
3 & 1 & -1 & 0 & 2 \\
0 & 1 & 1 & 1 & 1
\end{pmatrix}
=
\begin{pmatrix}
1 & 0 & -1 & -2 & -3 \\
0 & 1 & 2 & 3 & 4 \\
3 & 1 & -1 & 0 & 2 \\
0 & 1 & 1 & 1 & 1
\end{pmatrix}.
\]

Ahora, observamos el valor de la primera entrada de la tercera fila, el cual es $3$. Entonces, mediante transvección, sumamos $-3$ veces la fila 1 a la fila 3:
\[
\begin{pmatrix}
1 & 0 & -1 & -2 & -3 \\
0 & 1 & 2 & 3 & 4 \\
3+(-3)(1) & 1+(-3)(0) & -1+(-3)(-1) & 0+(-3)(-2) & 2+(-3)(-3) \\
0 & 1 & 1 & 1 & 1
\end{pmatrix}
=
\begin{pmatrix}
1 & 0 & -1 & -2 & -3 \\
0 & 1 & 2 & 3 & 4 \\
0 & 1 & 2 & 6 & 11 \\
0 & 1 & 1 & 1 & 1
\end{pmatrix},
\]
y realizamos lo mismo, pero ahora considerando la fila 4.
\[
\begin{pmatrix}
1 & 0 & -1 & -2 & -3 \\
0 & 1 & 2 & 3 & 4 \\
0 & 1 & 2 & 6 & 11 \\
0+(0)(1) & 1+(0)(0) & 1+(0)(-1) & 1+(0)(-2) & 1+(0)(-3)
\end{pmatrix}
=
\begin{pmatrix}
1 & 0 & -1 & -2 & -3 \\
0 & 1 & 2 & 3 & 4 \\
0 & 1 & 2 & 6 & 11 \\
0 & 1 & 1 & 1 & 1
\end{pmatrix}
\]
Como puedes observar, ninguna de las transvecciones influye en la otra, de manera que las podemos enlistar en un único paso. Además, al hacer una transvección con escalar $0$ no cambia nada de la fila, así que estas no se necesita hacerlas.

Ahora, ignorando la última fila con la que trabajamos (que es la primera), buscamos la primera columna no-nula, que en este caso será la segunda, posteriormente buscamos el primer elemento no nulo de la columna, el cual se encuentra en la segunda fila, y la “movemos enseguida de la última fila con la que trabajamos” (en este caso no tendríamos que realizar ninguna transposición, o bien, la transposición sería la de la segunda fila consigo misma, ya que ya se encuentra en seguida de la última fila con la que trabajamos). Después, reescalamos por el inverso multiplicativo del primer elemento no nulo de la fila, que es $1$:
\[
\begin{pmatrix}
1 & 0 & -1 & -2 & -3 \\
(1)(0) & (1)(1) & (1)(2) & (1)(3) & (1)(4) \\
0 & 1 & 2 & 6 & 11 \\
0 & 1 & 1 & 1 & 1
\end{pmatrix}
=
\begin{pmatrix}
1 & 0 & -1 & -2 & -3 \\
0 & 1 & 2 & 3 & 4 \\
0 & 1 & 2 & 6 & 11 \\
0 & 1 & 1 & 1 & 1
\end{pmatrix}
\]
(observa que reescalar por $1$ deja todas las entradas iguales) y posteriormente realizamos las transvecciones necesarias para que el resto de entradas de la segunda columna sean cero.
\[
\begin{pmatrix}
1 & 0+(0)(1) & -1+(0)(2) & -2+(0)(3) & -3+(0)(4) \\
0 & 1 & 2 & 3 & 4 \\
0 & 1+(-1)(1) & 2+(-1)(2) & 6+(-1)(3) & 11+(-1)(4) \\
0 & 1+(-1)(1) & 1+(-1)(2) & 1+(-1)(3) & 1+(-1)(4)
\end{pmatrix}
=
\begin{pmatrix}
1 & 0 & -1 & -2 & -3 \\
0 & 1 & 2 & 3 & 4 \\
0 & 0 & 0 & 3 & 7 \\
0 & 0 & -1 & -2 & -3
\end{pmatrix}
\]

De manera similar, ignorando ahora las primeras dos filas, buscamos la primera columna no-nula, la cual corresponde ahora a la tercera, y buscamos el primer elemento no-nulo de esta columna, el cual se encuentra en la cuarta fila. Entonces, transponemos las filas 3 y 4 para que el primer elemento no-nulo quede inmediatamente después de la última fila con la que trabajamos:
\[
\begin{pmatrix}
1 & 0 & -1 & -2 & -3 \\
0 & 1 & 2 & 3 & 4 \\
0 & 0 & -1 & -2 & -3 \\
0 & 0 & 0 & 3 & 7
\end{pmatrix}.
\]

Seguidamente, reescalamos la tercera fila,
\[
\begin{pmatrix}
1 & 0 & -1 & -2 & -3 \\
0 & 1 & 2 & 3 & 4 \\
(-1)(0) & (-1)(0) & (-1)(-1) & (-1)(-2) & (-1)(-3) \\
0 & 0 & 0 & 3 & 7
\end{pmatrix}
=
\begin{pmatrix}
1 & 0 & -1 & -2 & -3 \\
0 & 1 & 2 & 3 & 4 \\
0 & 0 & 1 & 2 & 3 \\
0 & 0 & 0 & 3 & 7
\end{pmatrix}
\]
y relizamos las transvecciones necesarias:
\[
\begin{pmatrix}
1+(1)(0) & 0+(1)(0) & -1+(1)(1) & -2+(1)(2) & -3+(1)(3) \\
0+(-2)(0) & 1+(-2)(0) & 2+(-2)(1) & 3+(-2)(2) & 4+(-2)(3) \\
0 & 0 & 1 & 2 & 3 \\
0 & 0 & 0 & 3 & 7
\end{pmatrix}
=
\begin{pmatrix}
1 & 0 & 0 & 0 & 0 \\
0 & 1 & 0 & -1 & -2 \\
0 & 0 & 1 & 2 & 3 \\
0 & 0 & 0 & 3 & 7
\end{pmatrix}.
\]

Finalmente, como nuestra última columna no cero es la cuarta y la primera fila no cero (ignorando las filas que ya tienen pivote) tiene un $3$, reescalamos de la siguiente manera:
\[
\begin{pmatrix}
1 & 0 & 0 & 0 & 0 \\
0 & 1 & 0 & -1 & -2 \\
0 & 0 & 1 & 2 & 3 \\
(1/3)(0) & (1/3)(0) & (1/3)(0) & (1/3)(3) & (1/3)(7)
\end{pmatrix}
=
\begin{pmatrix}
1 & 0 & 0 & 0 & 0 \\
0 & 1 & 0 & -1 & -2 \\
0 & 0 & 1 & 2 & 3 \\
0 & 0 & 0 & 1 & 7/3
\end{pmatrix},
\]

Y hacemos las transvecciones necesarias:
\[
\begin{pmatrix}
1 & 0 & 0 & 0 & 0 \\
0+(1)(0) & 1+(1)(0) & 0+(1)(0) & -1+(1)(1) & -2+(1)(7/3) \\
0+(-2)(0) & 0+(-2)(0) & 1+(-2)(0) & 2+(-2)(1) & 3+(-2)(7/3) \\
0 & 0 & 0 & 1 & 7/3
\end{pmatrix}
=
\begin{pmatrix}
1 & 0 & 0 & 0 & 0 \\
0 & 1 & 0 & 0 & 1/3 \\
0 & 0 & 1 & 0 & -5/3 \\
0 & 0 & 0 & 1 & 7/3
\end{pmatrix}.
\]

Notemos que si consideramos esta matriz como la matriz aumentada
\[
\left(
\begin{matrix}
1 & 0 & 0 & 0 \\
0 & 1 & 0 & 0 \\
0 & 0 & 1 & 0 \\
0 & 0 & 0 & 1
\end{matrix}
\
\middle|
\
\begin{matrix}
0 \\
1/3 \\
-5/3 \\
7/3
\end{matrix}
\right),
\]
este corresponde al sistema
\[
\begin{cases}
x = 0 \\
y = 1/3 \\
z = -5/3 \\
w = 7/3,
\end{cases}
\]
del cual sabemos inmediatamente su solución. Como mencionamos anteriormente, los sistemas de ecuaciones asociados a la matriz original y la matriz escalonada reducida resultante de aplicar operaciones elementales por filas, consideradas como matrices aumentadas, tienen las mismas soluciones. Entonces, ¡este último sistema es la solución para nuestro sistema de ecuaciones original!

Como podemos ver, los sistemas de ecuaciones asociados a una matriz en su forma escalonada reducida son fáciles de resolver por que vamos escogiendo valores arbitrarios para las variables en posición que no es pivote, mientras que podemos obtener el valor de las variables que son pivote mediante despejes sencillos.

Recuerda que este algoritmo funciona para cualquier matriz con entradas reales. ¿Podrías proponer otro sistema de ecuaciones e implementar la misma estrategia para resolverlo?

Más adelante…

Ahora vimos una estrategia para resolver sistemas de ecuaciones lineales de distintos tamaños. En las siguientes entradas conoceremos más propiedades sobre las matrices. Estas nuevas propiedades también juegan un rol fundamental en poder determinar de manera más rápida cuándo un sistema de ecuaciones lineales tiene solución, y tener otras alternativas para resolverlo bajo ciertas condiciones.

Tarea moral

  1. Aplica reducción gaussiana a las siguientes matrices:
    $$\begin{pmatrix} 5 & 2 \\ 13 & 5 \end{pmatrix},\quad \begin{pmatrix} 1 & 1 & 0 \\ 1 & 0 & 1 \\ 0 & 1 & 1 \end{pmatrix}.$$
  2. Resuelve el siguiente sistema de ecuaciones llevándolo a forma escalonada reducida, y luego aplicando a técnica de variables libres y pivote:
    $$\begin{cases} a + b + c + d + e &= -5\\2a+2b-3c-3d+e&=5 \\ a – b + c – d + e &= 0. \end{cases}$$
  3. Sea $I$ la matriz identidad de $n\times n$ y $A$ otra matriz de $n\times n$. Sea $E$ la matriz obtenida de aplicar una transvección a $I$. Sea $B$ la matriz de aplicar esa misma transvección a $A$. Demuestra que $EA=B$.
  4. Demuestra que una matriz $A$ de $2\times 2$ es invertible si y sólo si al aplicar reducción de Gauss-Jordan al final se obtiene la matriz identidad $I$. ¿Puedes hacerlo para matrices de $3\times 3$? ¿De $n\times n$?
  5. Sea $A$ una matriz de $2\times 2$ invertible. A $A$ le «pegamos» una identidad del mismo tamaño a la derecha para llegar a $(A|I)$, por ejemplo $\begin{pmatrix} a & b \\ c & d \end{pmatrix}$ se convertiría en $\begin{pmatrix} a & b & 1 & 0 \\ c & d & 0 & 1 \end{pmatrix}$. Muestra que si aplicamos reducción de Gauss-Jordan a $(A|I)$, se llega a $(I|A^{-1})$. Intenta extender tu demostración a matrices de $3\times 3$ ó $n\times n$.

Entradas relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.