Modelo de epidemia básico con álgebra lineal y Python

Introducción

En esta entrada voy a platicar de una forma en la que se puede plantear un modelo de epidemia básico usando álgebra lineal. Es un modelo bastante simple, sin embargo a partir de él se pueden verificar varias de las lecciones que hemos estado aprendiendo durante la crisis del coronavirus. A grandes rasgos, haremos algunas suposiciones razonables para plantear una epidemia como un modelo de Markov.

Ya que hagamos esto, estudiaremos dos escenarios posibles: en el que la gente sale de sus casas y en el que la gente se queda en sus casas. Para ello usaremos las librerías NumPy y Matplotlib de Python para hacer las cuentas y generar bonitas gráficas como la siguiente:

Gráfica de evolución de la población con contagio bajo, bajo las suposiciones de nuestro modelo de epidemia básico
Ejemplo del tipo de gráficas que obtendremos en la entrada

En particular, veremos que incluso de este modelo simple se notan contrastes importantes en ambos escenarios. En particular, se puede deducir la importancia de #QuédateEnCasa para retrasar el contagio y no saturar los sistemas de salud.

Advertencia: De ninguna forma esta entrada pretende modelar, específicamente, la evolución del coronavirus. Para ello hay expertos trabajando en el tema, y están usando modelos mucho más sofisticados que el que platicaré. Esta entrada es, en todo caso, una introducción al tema y ayuda a explicar, poco a poco, algunos de los argumentos que se usan en modelación matemática de epidemias.

Suposiciones y modelo tipo Markov

Comenzemos a plantear el modelo de epidemia básico. Pensemos en una enfermedad imaginaria, que se llama «Imagivid» y en un territorio imaginario que se llama «Imagilandia», donde la población inicial es de 100,000 habitantes sanos, en el día 0.

Vamos a pensar que una persona puede estar en alguno de los siguientes cinco estados:

  • Sano
  • Síntomas leves
  • Síntomas graves
  • Recuperado
  • Fallecido

Para cada día n, consideremos el vector

    \[X(n)=(s(n),l(n),g(n),r(n),f(n))\]

de 5 entradas cuyas entradas son los sanos, de síntomas leves, de síntomas graves, recuperados y fallecidos al día n. Por ejemplo al día 0 dijimos que todos están sanos, así que X(0)=(100000,0,0,0,0).

Haremos las siguientes suposiciones de cómo se pasa de un estado a otro

  • Los únicos fallecidos del periodo de tiempo que tendremos son por Imagivid. Sólo se puede fallecer de ello tras tener síntomas graves. Si alguien tiene síntomas graves, entonces tiene cierta probabilidad g_f de fallecer al día siguiente, g_r de recuperarse y por lo tanto 1-g_r-g_f de quedarse como enfermo grave.
  • Imagivid se contagia de persona a persona, y de un día a otro una persona tiene probabilidad s_l de pasar de estar sana a tener síntomas leves. No se puede pasar directamente a tener síntomas graves, recuperarse o morir. De modo que se queda sana de un día a otro con probabilidad 1-s_l
  • Si una persona tiene síntomas leves, tiene probabilidad l_g de pasar a tener síntomas graves y l_r de pasar a recuperarse. Por lo tanto, tiene probabilidad 1-l_g-l_r de quedarse con síntomas leves.
  • Una persona que se recupera desarrolla inmunidad a Imagivid, así que se queda en ese estado.
  • Una persona que fallece, se queda en ese estado.

En otras palabras, tenemos el siguiente diagrama de cómo se pasa de tener un estado a otro, en donde los números en las flechas muestran la probabilidad de pasar de un estado a otro:

Diagrama de probabilidades de transición entre estados en el modelo de epidemia básico
Diagrama de probabilidades de transición

En lenguaje técnico, estamos modelando a la epidemia como un proceso de Markov. Sin embargo, no es necesario entender toda la teoría de procesos de Markov para entender lo que sigue, pues la idea es bastante intuitiva.

Con estos números y suposiciones, podemos entender, en valor esperado, cómo será el vector de población

    \[X(n+1)=(s(n+1), l(n+1), g(n+1), r(n+1), f(n+1))\]

si sabemos cómo es el vector

    \[X(n)=(s(n), l(n), g(n), r(n), f(n)).\]

Por ejemplo, podemos esperar que la cantidad de recuperados al día n+1 sea

    \[r(n+1)=l_r \cdot l(n)+ g_r \cdot g(n) + 1 \cdot r(n),\]

pues de los de síntomas leves del día n habrá una proporción l_r de ellos que se recuperen, de los graves del día n habrá una proporción g_r de ellos que se recuperen, y todos los recuperados del día n se quedan recuperados. De esta forma, obtenemos el siguiente sistema de ecuaciones de lo que podemos esperar:

    \begin{align*}s(n+1)&=(1-s_l) \cdot s(n)\\l(n+1)&=s_l \cdot s(n) + (1-l_r-l_g) \cdot l(n)\\g(n+1)&= l_g \cdot l(n) + (1-g_r-g_f) \cdot l(n)\\ r(n+1)&=l_r \cdot l(n) + g_r \cdot g(n) + 1 \cdot r(n)\\ f(n+1)&=g_f \cdot g(n) + 1 \cdot f(n),\end{align*}

Este sistema de ecuaciones se puede escribir de una forma mucho más compacta. Si definimos la matriz

    \[A=\begin{pmatrix} 1-s_l & 0 & 0 & 0 & 0 \\s_l & 1-l_r-l_g & 0 & 0 & 0 \\0 & l_g & 1-g_r-g_f & 0 & 0 \\ 0 & l_r & g_r & 1 & 0\\ 0 & 0 & g_f & 0 & 1 \end{pmatrix},\]

las ecuaciones anteriores se pueden abreviar simplemente a

    \[X(n+1)=AX(n).\]

De esta forma, si queremos entender qué esperar del día n, basta hacer la multiplicación matricial X(n)=A^n X(0).

Un ejemplo concreto en Python

El modelo de epidemia básico que planteamos arriba depende de cinco parámetros:

  • s_l, la probabilidad de pasar de estar sano a tener síntomas leves,
  • l_g, la probabilidad de pasar de tener síntomas leves a graves,
  • l_r, la probabilidad de pasar de tener síntomas leves a recuperarse,
  • g_r, la probabilidad de pasar de tener síntomas graves a recuperarse y
  • g_f, la probabilidad de pasar de tener síntomas graves, a fallecer.

Hagamos un ejemplo concreto, en el que estos parámetros para Imagivid son los siguientes: s_l=0.30, l_g=0.10, l_r=0.20, g_r=0.10 y g_f=0.10. En «la vida real», para hacer una modelación correcta se tienen que estimar estos parámetros de lo que ya se sepa de la enfermedad.

Si ponemos estos valores, la matriz que obtenemos es la siguiente:

    \[A=\begin{pmatrix} 0.7 & 0 & 0 & 0 & 0 \\0.3 & 0.7 & 0 & 0 & 0 \\0 & 0.1 & 0.8 & 0 & 0 \\ 0 & 0.2 & 0.1 & 1 & 0\\ 0 & 0 & 0.1 & 0 & 1 \end{pmatrix}.\]

Vamos a usar la fórmula que obtuvimos en la sección anterior para entender cómo va evolucionando la epidemia de Imagivid. Para no hacer las cuentas a mano, usaremos Python. Trabajaremos con Python 3 y usaremos Numpy (para las cuentas de matrices) y Matplotlib (para visualizar gráficas). En el siguiente código definimos la población inicial, los parámetros de transición y la matriz de la sección anterior.

import numpy as np
import matplotlib.pyplot as plt
# En cada momento tendremos un vector
# de la distribución de la población
# (sanos, sintomas leves, sintomas graves,
# recuperados, fallecidos)

# Población inicial
x_0=(100000,0,0,0,0)

# Definimos las probabilidades de
# transición

S_L = 0.30
L_G = 0.10
L_R = 0.20
G_R = 0.10
G_F = 0.10

# Definimos la matriz A
A=np.array([[1-S_L,0,0,0,0],[S_L,1-L_G-L_R,0,0,0],[0,L_G,1-G_R-G_F,0,0],[0,L_R,G_R,1,0],[0,0,G_F,0,1]])

Vamos a estudiar la evolución de Imagivid por 60 días. Por ello, vamos a hacer un bucle en Python que calcule cómo son los vectores de población de todos estos 60 días. Para empezar a entender cómo funciona nuestro modelo de epidemia, también pediremos que muestre los valores para los días 1, 2 y 3.

# Encontramos la evolución de la
# epidemia los primeros 60 días
evolution=[x_0]
for j in range(60):
    evolution.append(np.matmul(A,evolution[-1]))
# Mostramos lo que pasa los primeros
# 3 días
for j in range(1,4):
    print(evolution[j])

Los valores que obtenemos son

    \begin{align*}X_1 &= (70000,30000,0,0,0)\\X_2 &= (49000, 42000, 3000, 6000)\\X_3 &= (34300, 44100, 6600, 14700, 300).\end{align*}

Esto nos dice que al primer día hay 70000 sanos y 30000 con síntomas leves. En los primeros dos días no hay fallecidos, pues de acuerdo a nuestro modelo de epidemia un habitante primero debe presentar síntomas leves, luego graves y luego ya tal vez fallece. Al día 3 el modelo predice 300 fallecidos.

Esto son sólo tres días, pero sería bueno poder entender qué sucede en todo el periodo de 60 días. Para ello, vamos a pedir a Python que nos muestre una gráfica de cómo evoluciona la población a través del tiempo. Para ello hacemos lo siguiente

# Hacemos gráfica para mostrar la evolución de todo el tiempo
plt.plot([j[0] for j in evolution], label="Sanos")
plt.plot([j[1] for j in evolution], label="Síntomas leves")
plt.plot([j[2] for j in evolution], label="Síntomas graves")
plt.plot([j[3] for j in evolution], label="Recuperados")
plt.plot([j[4] for j in evolution], label="Fallecidos")
plt.title("Evolución de la población, contagio=0.30")
plt.legend()
plt.show()

Obtenemos la siguiente imagen

Evolución de la población con contagio 0.30

La gráfica tiene sentido es de esperarse que, tras cierta cantidad de tiempo, ya sólo haya habitantes recuperados y fallecidos. Notemos que hay un momento el el que la población con síntomas leves es de aproximadamente 40,000 habitantes y que la población con síntomas graves llega a ser, en algún momento, como de 12,000 habitantes.

¿Qué sucede al final de nuestro periodo de estudio? Si le pedimos a Python que nos de las últimas dos entradas del vector de población al día 60,

#Mostramos recuperados y fallecidos al último día
print(evolution[-1][3])
print(evolution[-1][4])

obtenemos \sim 83,333 recuperados y \sim 16,666 fallecidos al día 60, de modo que en este escenario la epidemia cobró 16,666 vidas de Imagilandia. De hecho una observación muy importante, viendo la gráfica, es que ya se tenía prácticamente esta cantidad de víctimas desde el día 30.

Disminuir la tasa de infección para retrasar la epidemia

Antes de que sucediera la tragedia, las autoridades de Imagilandia estudiaron el modelo de epidemia que acabamos de mencionar y se dieron cuenta de que tenían que tomar una acción inmediata para mejorar la situación. Decidieron que una cosa muy importante para que la situación mejorara era pedirle a la gente que se quedara en sus casas lo más posible, pues con ello se disminuiría la tasa de contagio. Para ello sacaron la campaña #QuédateEnCasa. Las personas hicieron caso.

Habiendo más personas sanas y enfermas en su propia casa, ahora ni los enfermos pueden contagiar a sanos, ni los sanos estar expuestos a enfermos. Así, una persona sana ahora tiene menor probabilidad de estar enferma al día siguiente. Supongamos que s_l pasa de ser 0.30 a ahora ser 0.05. De esta forma, ahora tenemos una nueva matriz que ayuda a calcular la evolución de la pandemia:

    \[A=\begin{pmatrix} 0.95 & 0 & 0 & 0 & 0 \\0.05 & 0.7 & 0 & 0 & 0 \\0 & 0.1 & 0.8 & 0 & 0 \\ 0 & 0.2 & 0.1 & 1 & 0\\ 0 & 0 & 0.1 & 0 & 1 \end{pmatrix}.\]

Vamos a pedirle de nuevo a Python que haga las cuentas para los primeros 60 días bajo las suposiciones de nuestro modelo de epidemia y que nos muestre una gráfica de la evolución de la población.

# Definimos las probabilidades de transición, que son iguales salvo que ahora la tasa de contagio es menor, y por lo tanto S_L es menor

S_L = 0.05
L_G = 0.10
L_R = 0.20
G_R = 0.10
G_F = 0.10

# Definimos la matriz A
A=np.array([[1-S_L,0,0,0,0],[S_L,1-L_G-L_R,0,0,0],[0,L_G,1-G_R-G_F,0,0],[0,L_R,G_R,1,0],[0,0,G_F,0,1]])

evolution2=[x_0]
for j in range(60):
    evolution2.append(np.matmul(A,evolution2[-1]))

plt.plot([j[0] for j in evolution2], label="Sanos")
plt.plot([j[1] for j in evolution2], label="Síntomas leves")
plt.plot([j[2] for j in evolution2], label="Síntomas graves")
plt.plot([j[3] for j in evolution2], label="Recuperados")
plt.plot([j[4] for j in evolution2], label="Fallecidos")
plt.title("Evolución de la población, contagio=0.05")
plt.legend()
plt.show()

La gráfica que obtenemos es la siguiente:

Evolución de la población con contagio 0.05

Una cosa fantástica en este escenario es que nunca hay muchas personas enfermas simultáneamente. En el peor día, parece haber como 12,000 personas enfermas con síntomas leves, y parece que nunca hay más de 6000 personas con síntomas graves. ¿Qué sucede con la mortalidad? Si le pedimos a Python que nos diga el número de habitantes recuperados y fallecidos al día 60,

print(evolution2[-1][3])
print(evolution2[-1][4])

obtenemos \sim 78,419 recuperados y \sim 15,438 fallecidos. Esto es ligeramente mejor que en la situación anterior, en donde había \sim 16,000 fallecidos. Donde sí hay una diferencia es en lo que sucede al día 30. Si pedimos a Python que nos muestre la cantidad de fallecidos al día 30 en ambos escenarios obtenemos lo siguiente.

print(evolution[30][4])
print(evolution2[30][4])

En el primer escenario, en el que la gente no se queda en casa, al día 30 tenemos \sim 16,493 fallecidos, que es prácticamente ya todos los que habrá. Cuando la gente se queda en casa, al día 30 sólo hay \sim 10,963, una buena parte menos.

Esto parece estar mejor, sin embargo, el tiempo va a seguir pasando, y de todas formas llegaremos al día 60, en donde ambos escenarios son muy parecidos ¿Por qué entonces todo el esfuerzo de pedirle a la gente que se quede en casa, si la diferencia es mínima? Porque el tiempo es oro.

La carrera contra el tiempo

Hay muchas razones por las cuales es conveniente retrasar la epidemia de Imagivid en Imagilandia, aunque el modelo sencillo que mostramos arriba muestre qe a los 60 días parecería que habrá la misma cantidad de fallecidos.

Primero, es importante retrasar los contagios pues existe la posibilidad de que los científicos de Imagilandia entiendan mejor a Imagivid y, por ejemplo, desarrollen una vacuna o un tratamiento. ¿Qué sucedería si los científicos encuentran una cura al día 30? En el primer escenario sólo se salvan unas \sim 150 vidas, pero en el segundo escenario se salvan unas \sim 4,500, osea, unas \sim 4350 más. En otras palabras, en el primer escenario el desarrollo científico llega demasiado tarde.

Segundo, también es importante retrasar la epidemia pues permite tener el número de casos simultáneos bajo control. Esto ya lo discutimos un poco arriba, pero pidamos a Python una gráfica más, para poder discutirlo de manera más clara. Supondremos, además, que Imagilandia cuenta con solamente 6000 camas de hospital en donde se pueden tratar los casos severos de Imagivid, y le pediremos a Python que ponga esto como una línea horizontal.

plt.plot([j[1] for j in evolution2], color="green", linestyle=":", label="Leves, Contagio=0.05")
plt.plot([j[2] for j in evolution2], color="green", label="Severos, Contagio=0.05")
plt.plot([j[1] for j in evolution], color="red", linestyle=":", label="Severos, Contagio=0.30")
plt.plot([j[2] for j in evolution], color="red", label="Severos, Contagio=0.30")
plt.hlines(6000,0,60, color="black", label="Capacidad sistema salud")
plt.title("Enfermos a través del tiempo")
plt.legend()
plt.plot()

Obtenemos la siguiente gráfica:

Comparación de enfermos leves y graves. Rojo es con alto contagio y verde con bajo.

Cuando la gente sí se queda en sus casas y la tasa de contagio es baja (en verde), siempre hay suficiente espacio en el sistema de salud para tratar a a los enfermos graves.

Cuando la gente no se queda en sus casas y la tasa de contagio es alta (en rojo), notemos que los casos severos sobrepasan al sistema de salud. Aproximadamente entre los días 3 y 15 se tienen muchos enfermos graves que no podrán ser atendidos correctamente. Por ejemplo, al día 9 hay aproximadamente \sim 6000 enfermos graves por encima de la capacidad del sistema de salud. Sin atención médica, probablemente en vez de que sólo fallezcan el 10\% de ellos (según nuestro modelo), fallecerán casi todos, dando 5400 víctimas más que no hemos contado.

De esta forma, siguiendo los consejos de quedarse en casa, la población de Imagilandia puede salvar, potencialmente, \sim 4350 personas por la vacuna y \sim 5400 personas por evitar saturar el sistema de salud, osea, salvar unas \sim 9750 vidas. Para ello es necesario que las autoridades hagan el llamado a quedarse, y que la población de Imagilandia haga caso. De aquí la importancia del #QuédateEnCasa.

Más contenido

Todo el código de Python del modelo lo corrí en una libreta de Jupyter. Puedes ver una versión en PDF de todo el código a continuación.

Si quieres el archivo de Jupyter para jugar con el modelo, puedes obtenerlo en el GitHub del proyecto: https://github.com/leomtz/linear-epidemid.

El modelo de epidemia que presentamos es una aplicación muy sencilla de álgebra lineal. En este blog hemos estado subiendo material de un curso de álgebra lineal que se imparte en la UNAM, y que ahora estamos impartiendo a distancia por la contingencia. A continuación ponemos el enlace a este curso y a otro material que te puede interesar.

Teorema de navidad de Fermat: primos suma de dos cuadrados

Comentario de Leo: Esta es una escrita en conjunto con por Alexandher Vergara, estudiante en ESFM. En ella hablamos del teorema de navidad de Fermat, una idea de la prueba y de las consecuencias. Si quieres contribuir con algún tema de matemáticas, puedes contactarme por correo electrónico, o dejando un comentario aquí en el blog.

Introducción

En entradas anteriores hemos visto temas de teoría de números, como divisibilidad y teoría de congruencias. También hablamos acerca de números primos y del teorema fundamental de la aritmética. A continuación probaremos una parte del famoso «teorema de navidad de Fermat», el cual dice cuáles primos impares son la suma de dos cuadrados.

Teorema (teorema de Navidad de Fermat). Un número primo p>2 es la suma del cuadrado de dos enteros si y sólo si p\equiv 1 \pmod 4.

Enunciado del teorema de Navidad de Fermat

El teorema recibe este nombre pues Fermat escribió una carta con muchos detalles acerca del resultado para Mersenne, cuya fecha fue el 25 de diciembre de 1640.

Este resultado nos lleva un paso más adelante en teoría de números. Por un lado, tiene «el mismo sabor» que el teorema de los cuatro cuadrados de Lagrange.

Teorema (teorema de los cuatro cuadrados de Lagrange). Todo entero no negativo puede ser escrito como suma de los cuadrados de cuatro números enteros.

Por otro lado, el teorema de Navidad de Fermat también nos ayuda a demostrar un caso particular del teorema de Dirichlet para primos sobre progresiones aritméticas.

Teorema 1. Hay infinitos números primos de la forma 4k+1 e infinitos números de la forma 4k+3.

El teorema de Dirichlet es una generalización de este resultado.

Teorema (teorema de Dirichlet). Si a y b son primos relativos, entonces existe una infinidad de primos p tales que p\equiv a \pmod b.

Las demostraciones de los teoremas de Lagrange y de Dirichlet requieren de varios argumentos para los cuales aún no hemos desarrollado teoría suficiente. La idea de esta entrada de blog es demostrar el teorema de Navidad de Fermat y usarlo para demostrar el Teorema 1.

El teorema de Navidad de Fermat

En la demostración del teorema de navidad de Fermat usaremos el siguiente resultado.

Teorema 2. Si p es un número primo y la ecuación a^2+1 \equiv 0 \pmod p tiene solución para algún a, entonces p se puede representar como una suma de dos cuadrados.

Por el momento, no nos enfocaremos en demostrar este resultado auxiliar. Existen muchas pruebas en la literatura, por ejemplo, una por J.H. Grace usando latices de enteros (The four square theorem).

Demostración del teorema de Navidad de Fermat. Supongamos primero que p=x^2+y^2 para enteros no negativos x,y. El hecho de que p \equiv 1 \pmod 4 se desprende de dos propiedades del anillo \mathbb{Z}_4. Notemos primero que cualquier entero impar es congruente con 1 \pmod 4 o con 3\pmod 4. Además, cualquier cuadrado es congruente con 0 \pmod 4 o 1\pmod 4, pues si x es congruente con 0,1,2,3 \pmod 4 entonces x^2 es congruente con 0,1,0,1 \pmod 4, respectivamente. Como p=x^2+y^2, sabemos entonces que

    \[p\equiv x^2+y^2=0,1 \text{ \'o } 2 \pmod 4.\]

Pero p es un primo mayor que 2, entonces p es impar. Así, p\equiv 1 \pmod 4.

Observación. En esta parte de la prueba en realidad es un poco más general, pues muestra que si n es un entero impar que se puede representar como suma de dos cuadrados, entonces n\equiv 1 \pmod 4.

Supongamos ahora que p\equiv 1 \pmod 4. Lo primero que haremos es mostrar que a^2+1\equiv 0 \pmod p tiene solución para alguna a, y después usaremos el Teorema 2 para obtener que p es suma de dos cuadrados.

Primero, examinaremos los factores en

    \[(p-1)!=1\cdot 2 \cdot \ldots \cdot \frac{p-1}{2} \cdot \frac{p+1}{2}\cdot \ldots \cdot (p-2) \cdot (p-1).\]

A los últimos (p-1)/2 factores los pensamos como sigue: p-1\equiv -1 \pmod p, p-2\equiv -2\pmod p, …, \frac{p+1}{2}\equiv -\frac{p-1}{2} \pmod p. El factorial se convierte entonces en

    \begin{align*}(p-1)!&\equiv 1\cdot \ldots \cdot \left(\frac{p-1}{2}\right) \cdot \left(-\frac{p-1}{2}\right) \cdot \ldots \cdot (-1)\\&\equiv (-1)^{(p-1)/2} \left(1\cdot \ldots \cdot \frac{p-1}{2}\right)^2 \pmod p.\end{align*}

Definiendo a= 1\cdot \ldots \cdot \frac{p-1}{2}, lo anterior se puede escribir como

    \[(p-1)!\equiv (-1)^{(p-1)/2} a^2 \pmod p.\]

Por el teorema de Wilson, (p-1)!\equiv -1 \pmod p. Como p\equiv 1 \pmod 4, tenemos p=4k+1 para algún entero k. Entonces, (p-1)/2=2k, que es par, de modo que (-1)^{(p-1)/2}=1. De esta forma, tenemos que

    \[-1\equiv a^2 \pmod p.\]

Sumando 1 de ambos lados, tenemos que a^2+1\equiv 0 \pmod p. Aplicando el Teorema 2, concluimos que p es suma de dos cuadrados.

\square

Infinidad de primos de las formas 4k+1 y 4k+3

Todos los primos mayores que 2 son impares, así que son o bien de la forma 4k+1, o bien de la forma 4k+3. Sabemos además que hay una infinidad de números primos. ¿Será cierto que hay una infinidad de ellos de la forma 4k+1 y una infinidad de ellos de la forma 4k+3?

Por el principio de las casillas, tiene que suceder por lo menos alguna de estas dos opciones. Si hubiera una cantidad finita de la forma 4k+1 y de la forma 4k+3, entonces por el párrafo anterior habría sólo una cantidad finita de primos, lo cual es una contradicción.

Lo que dice el Teorema 1 es más fuerte. Lo volvemos a poner aquí por conveniencia para el lector.

Teorema 1. Hay infinitos números primos de la forma 4k+1 e infinitos números de la forma 4k+3.

Es decir, el Teorema 1 afirma que para cada uno de los tipos hay una infinidad de primos. Veamos que en efecto esto sucede.

La primera parte del Teorema 1 no necesita que usemos el teorema de Navidad de Fermat.

Proposición 1. Hay una infinidad de primos de la forma 4k+3.

Demostración. Supongamos que existiera únicamente una cantidad finita n de primos de la forma 4k+3 y supongamos que ellos son p_1<\ldots<p_n, en donde p_1=3. Consideremos el número N=4p_2p_3\ldots p_n +3 (ojo: no estamos incluyendo al 3 en la multiplicación). Este número no puede ser primo pues es mayor que p_n y N\equiv 3\pmod 4. De esta forma, debe tener al menos un divisor primo.

Tenemos que N es impar, así que 2 no divide a N. Si todos los divisores primos de N fueran 1\pmod 4, entonces N sería 1\pmod 4, pero esto no es cierto. De este modo, algún divisor primo p de N debe satisfacer p\equiv 3 \pmod 4. Notemos que p no puede ser 3, pues si 3\mid N, tendríamos 3\mid 4p_1 \ldots p_n, pero esto es imposible pues el número de la derecha no tiene ningún factor 3. Con esto concluimos que p=p_i para algún entero i=2,\ldots,n. Sin embargo, si p_i\mid N, entonces p_i\mid N-(p_2\ldots p_n)=3. Esto también es imposible pues p_i\neq 3. Así, es inevitable llegar a una contradicción, por lo que hay una infinidad de primos de la forma 4k+3.

\square

La demostración anterior no funciona directamente para los primos de la forma 4k+1, pues si hubiera una cantidad finita n de ellos p_1<\ldots < p_n y consideramos al número 4p_1\ldots p_n+1, este número es congruente con 1\pmod 4, pero nada garantiza que sus factores primos deban ser de la forma 1\pmod 4 pues, por ejemplo, 3\equiv 3\pmod 4, 7\equiv 3\pmod 4, pero 3\cdot 7 \equiv 21 \equiv 1\pmod 4. Tenemos que hacer algo distinto.

Proposición 2. Hay una infinidad de primos de la forma 4k+1.

Demostración. Supongamos que existe una cantidad finita n de primos de la forma 4k+1 y que son p_1<\ldots<p_n. Consideremos al número N=4(p_1p_2\ldots p_n)^2 +1. Este número es de la forma 4k+1. Por esta razón, es imposible que N sea primo, pues es mayor que todo p_i.

Sea p un divisor primo de N. Como N es impar, p\neq 2. Como p divide a N, tenemos que (2p_1\ldots p_n)^2+1\equiv 0 \pmod p, de modo que x^2+1\equiv 0 \pmod p tiene solución y por el Teorema 2, p se puede escribir como suma de dos cuadrados. Por el teorema de Navidad de Fermat, p\equiv 1\pmod 4. De esta forma, p=p_i para alguna i. Pero entonces, p divide a N y a 4(p_1\ldots p_n)^2, de modo que divide a su resta, que es 1. Esto es imposible. Esta contradicción muestra que hay una cantidad infinita de primos de la forma 4k+1.

\square

El Teorema 1 se sigue de las proposiciones 1 y 2.

¿Dónde seguir?

Aquí en el blog hay otras entradas en donde hablamos acerca de teoría de números. Puedes revisar las siguientes:

Álgebra Superior II: Construcción de números complejos

Introducción

En una entrada anterior esbozamos las construcciones de los números racionales y los números reales. Es hora de construir a los números complejos. Para ello, debemos definir el conjunto \mathbb{C} sobre el cual trabajaremos, y después definiremos sus operaciones.

La forma intuitiva de pensar a \mathbb{C} es pensando que comenzamos con \mathbb{R}, los reales, y que en ellos introducimos a un nuevo elemento i que satisface que i^2=-1. Este, en efecto, es un nuevo elemento, pues en \mathbb{R} siempre tenemos que x^2\geq 0.

Una vez que introducimos a este elemento i, queremos que las operaciones de suma y producto estén definidas y den también números en \mathbb{C}. De este modo, necesitamos que para cualquier real b se tenga que bi también esté en los complejos, y que para cualesquiera reales a y b también tengamos que a+bi esté en los complejos.

Resulta que esto «es suficiente», en el sentido de que ya no hay que meter más números para que las operaciones estén bien definidas. En efecto si tenemos dos números de la forma a+bi y c+di con a,b,c,d reales, entonces su suma

    \[(a+bi)+(c+di)=(a+c)+(b+d)i\]

también es de esa forma, así como su producto

    \begin{align*}(a+bi)(c+di)&=ac+bci+adi+bdi^2\\&=(ac-bd)+(ad+bc)i.\end{align*}


Por supuesto, por lo pronto esto solamente es una discusión informal. En las siguientes secciones veremos cómo formalizar estas ideas.

Los números complejos se comportan muy bien en términos algebraicos y en términos de análisis. En términos algebraicos, esto se comenzará a notar en la última parte del curso en donde veremos que cualquier polinomio tiene por lo menos una raíz compleja. En cursos posteriores, como el de álgebra lineal, verás otras de las propiedades algebraicas de los polinomios. Más adelante, si llevas un curso de variable compleja verás las bellas propiedades analíticas que tienen los números complejos.

El campo de los números complejos

La construcción del conjunto de números complejos es bastante sencilla. Para hacerla, simplemente consideramos a las parejas de números reales

    \[\mathbb{C}=\{(a,b): a,b\in \mathbb{R}\}.\]

Por el momento a cada (a,b) lo puedes pensar de manera informal como al complejo a+bi. Lo interesante de los números complejos no es el conjunto de sus elementos en sí, sino las operaciones que están definidos en él. Definimos las siguientes operaciones.

Definición. Para (a,b) y (c,d) en \mathbb{C}, definimos su suma como el complejo

    \[(a,b)+(c,d)=(a+c,b+d).\]

Dentro del paréntesis se usa la suma de \mathbb{R}.

Definición. Para (a,b) y (c,d) en \mathbb{C}, definimos su producto como el complejo

    \[(a,b)(c,d)=(ac-bd,ad+bc).\]

Dentro del paréntesis se usan la suma y producto de \mathbb{R}. La definición de producto está motivada por la discusión que hicimos en la introducción.

Teorema. El conjunto \mathbb{C} con las operaciones suma y producto que definimos es un campo.

Demostración. La suma es conmutativa y asociativa pues está definida entrada a entrada y lo es en \mathbb{R}. Tiene neutro (0,0) pues

    \[(a,b)+(0,0)=(a+0,b+0)=(a,b)\]

y para (a,b) su inverso aditivo es (-a,-b).

Vayamos ahora con el producto. Probemos que es conmutativo. Para dos complejos (a,b) y (c,d) tenemos que

    \[(a,b)(c,d)=(ac-bd,ad+bc)\]

y que

    \[(c,d)(a,b)=(ca-db,cb+da).\]

Ambos resultados son iguales pues la suma y producto en \mathbb{R} son conmutativas.

Probemos que que el producto es asociativo. Para ello tomemos tres complejos (a,b), (c,d) y (e,f). Tenemos que

    \begin{align*}[(a,b)(c,d)](e,f)&=(ac-bd,ad+bc)(e,f)\\&=(ace-bde-adf-bcf,acf-bdf+ade+bce),\end{align*}

y que

    \begin{align*}(a,b)[(c,d)(e,f)]&=(a,b)(ce-df,cf+de)\\&=(ace-adf-bcf-bde,acf+ade+bce-bdf),\end{align*}

Ambas expresiones son iguales pues la suma en \mathbb{R} es conmutativa.

El complejo (1,0) actúa como neutro multiplicativo, pues

    \[(a,b)(1,0)=(a\cdot 1 - b\cdot 0, a\cdot 0 + b\cdot 1)=(a,b).\]

Además, si tomamos un complejo (a,b)\neq (0,0) y lo multiplicamos por \left(\frac{a}{a^2+b^2},\frac{-b}{a^2+b^2}\right) obtenemos

    \begin{align*}(a,b)\left(\frac{a}{a^2+b^2},\frac{-b}{a^2+b^2}\right)&= \left(\frac{a^2+b^2}{a^2+b^2}, \frac{-ab}{a^2+b^2}+\frac{ba}{a^2+b^2}\right)\\ &= (1,0),\end{align*}

lo cual muestra que tenemos inversos multiplicativos.

Sólo falta demostrar la propiedad distributiva. Su verificación se deja como tarea moral.

\square

La copia de los reales en los números complejos

Dentro de \mathbb{C} hay una copia de los números reales. Esta consiste en, a cada real a, asociarle el número complejo \varphi(a)=(a,0). Esta asociación es claramente biyectiva. Además, si a y b son números reales, tenemos que

    \[(a,0)+(b,0)=(a+b,0)=\varphi(a+b)\]

y

    \begin{align*}(a,0)(b,0) &= (ab-0\cdot 0, a\cdot 0 + b\cdot 0)\\ &= (ab,0) = \varphi(ab).\end{align*}


Además los neutros se van a neutros y los inversos a inversos. Esto muestra que \varphi es una asociación biyectiva entre \mathbb{R} y los complejos de la forma (a,0) y que respeta la estructura de campo de \mathbb{R}.

Por otro lado, notemos que

    \[(0,1) (0,1)= (0\cdot 0 - 1\cdot 1, 0\cdot 1 + 1\cdot 0).\]

En otras palabras, al elevar el complejo (0,1) al cuadrado obtenemos el número (-1,0), que es precisamente \varphi(-1).

Tras toda esta discusión, estamos justificados entonces en llamar simplemente 1 al complejo (1,0), en llamar i al complejo (0,1), y por lo tanto en llamar a+bi al complejo (a,b). A partir de aquí ya podemos olvidar la notación de parejas y tratar a los números complejos como lo discutimos en la introducción.

Operaciones en la notación a+bi

La notación a+bi para números complejos es bastante práctica. Podemos trabajar con los complejos «igualito que en \mathbb{R}, pero suponiendo que i^2=-1«.

Como i^4=(-1)^2=1, tenemos que las potencias de i se ciclan cada cuatro:

    \[1, i, i^2, i^3, i^4, i^5, i^6, \ldots\]

son

    \[1,i, -1, -i, 1, i,\ldots .\]

Ya mencionamos en la introducción que para complejos a+bi y c+di se tiene que

    \[(a+bi)+(c+di)=(a+c)+(b+d)i\]

y que

    \[(a+bi)(c+di)=(ac-bd)+(ad+bc)i,\]

de modo que cualquier composición de sumas y productos de números complejos se puede simplificar a la forma x+yi con x y y reales.

Ejemplo. Simplifica la expresión (1+i)(1-i)+(2+i)(3-4i).

Solución. Haciendo el producto del primer sumando tenemos (1+i)(1-i)=1^2-i^2=1-(-1)=2. Haciendo el producto del segundo sumando tenemos

    \begin{align*}(2+i)(3-4i)&=6+3i-8i-4i^2\\&=6-5i+4\\&=10-5i.\end{align*}


De esta forma, el resultado de la operación es

    \[2+(10-5i)=12-5i.\]

\square

En complejos también podemos usar expresiones fraccionales, como \frac{3+2i}{5-i}. Si queremos pasar estas expresiones a la forma x+yi con x y y reales, tenemos que pensar a \frac{1}{5-i} como «el inverso multiplicativo de 5-i«, que como vimos en la demostración de que \mathbb{C} es un campo, es

    \[\frac{5}{5^2+(-1)^2}+\frac{1}{5^2+(-1)^2}i=\frac{5}{26}+\frac{1}{26} i.\]

Una vez hecho esto, tenemos que

    \begin{align*}\frac{3+2i}{5-i}&=(3+2i)\left( \frac{5}{26}+\frac{1}{26} i \right)\\&=\frac{13}{26} + \frac{13}{26} i\\&=\frac{1}{2}+\frac{1}{2} i.\end{align*}

Otra forma de pensarlo es que a una expresión de la forma \frac{a+bi}{c+di} la podemos simplificar «multiplicando arriba y abajo» por c-di. De esta forma, obtenemos

    \begin{align*}\frac{a+bi}{c+di} \cdot \frac{c-di}{c-di} = \left(\frac{ac+bd}{c^2+d^2}\right) + \left(\frac{bc-ad}{c^2+d^2}\right)i.\end{align*}

Ambos métodos dan el mismo resultado.

Lo que viene

Al tomar un número complejo z=a+bi y calcular su inverso, aparecen de manera natural las expresiones a-bi y a^2+b^2. Estas expresiones son fundamentales.

  • A a-bi se le conoce como el conjugado de z, y se denota por \overline{z}.
  • A \sqrt{a^2+b^2} se le conoce como la norma de z y se denota por |z|.

En la siguiente ocasión hablaremos de las propiedades de estas dos operaciones y cómo están relacionadas entre sí. Más adelante veremos cómo nos ayudan a resolver ecuaciones cuadráticas en los números complejos.

Si quieres, puedes revisar esta entrada sobre aplicaciones interesantes de los números complejos en la resolución de problemas. Tiene teoría que no hemos visto, pero te puede servir de motivación para aprender lo que veremos a continuación.

Tarea moral

Los siguientes ejercicios no forman parte de la evaluación del curso, pero te servirán para entender mucho mejor los conceptos vistos en esta entrada, así como temas posteriores.

  • Demuestra que en los complejos se satisface la ley distributiva.
  • Verifica que bajo la asociación \varphi en efecto los neutros se van a los neutros y los inversos a inversos.
  • Realiza la operación (1+i)(2+i)(1+2i)(2+2i) y expresa el resultado de la forma x+yi con x y y reales.
  • Realiza la operación

        \[\frac{3+5i}{2+i}-\frac{1+2i}{4-3i}\]

    y expresa el resultado de la forma x+yi con x y y reales.
  • Realiza la operación

        \[1+(1+i)+(1+i)^2+(1+i)^3+(1+i)^4\]

    y expresa el resultado de la forma x+yi con x y y reales.

Álgebra Lineal I: Problemas de dualidad y base dual

Introducción

El día de hoy, comenzaremos a resolver problemas sobre un nuevo tema: espacio dual. La parte teórica ya la hemos cubierto en entradas anteriores. En la entrada de introducción a dualidad definimos el espacio dual y las formas coordenadas. Después, en una siguiente entrada, de bases duales vimos que las formas coordenadas son una base del espacio dual, hablamos de ciertos problemas prácticos para resolver, y vimos un teorema que relaciona bases, bases duales y una matriz invertible. Ahora veremos aplicaciones de la teoría desarrollada y la usaremos para resolver problemas de dualidad prácticos.

Problemas prácticos resueltos

Uno de los problemas de dualidad que discutimos la ocasión anterior es expresar a una base dual de vectores en V en términos de la base dual de la base canónica. Veamos un ejemplo de esto.

Problema 1. Sean v_1,v_2,v_3,v_4 los vectores en \mathbb{R}^4 definidos como

    \[v_1=\begin{pmatrix} 1 \\ 1 \\ 1 \\ 1 \end{pmatrix}, v_2=\begin{pmatrix} 1 \\ 2 \\ 3 \\ 4 \end{pmatrix}, v_3=\begin{pmatrix} 0 \\ 0 \\ 1 \\ 2 \end{pmatrix}, v_4=\begin{pmatrix} 1 \\ 0 \\ 0 \\ 5 \end{pmatrix}.\]

Demuestra que V:=\{v_1,v_2,v_3,v_4\} es una base de \mathbb{R}^4 y encuentra la base dual de V en términos de e_i^\ast, donde e_i^\ast es la base dual de la base canónica de \mathbb{R}^4.

Solución. Dado que V está conformado por cuatro vectores y la dimensión de \mathbb{R}^4 es 4, basta con probar que son vectores linealmente independientes. Hay dos maneras de hacerlo.

Manera 1: Sean a,b,c,d \in \mathbb{R} tales que 0=av_1+bv_2+cv_3+dv_4. Esto da cuatro ecuaciones

    \begin{align*}0&=a+b+d\\0&=a+2b\\0&=a+3b+c\\0&=a+4b+2c+5d.\end{align*}

De la segunda obtenemos que a=-2b, sustituyendo en la primera y en la segunda d=2b-b=b, c=2b-3b=-b, y sustituyendo ésto en la cuarta, tenemos que 0=-2b+4b-2b+5b=5b. Por lo tanto a=b=c=d=0, implicando que los vectores en V son linealmente independientes, y por consiguiente forman una base de \mathbb{R}^4.

Manera 2: Hacer la reducción gaussiana en la matriz (A|I) donde A es la matriz cuyas columnas son los vectores de V. Entonces

    \[\left( \begin{array}{cccc|cccc} 1 & 1 & 0 & 1 & 1 & 0 & 0 & 0 \\ 1 & 2 & 0 & 0 & 0 & 1 & 0 & 0 \\ 1 & 3 & 1 & 0 & 0 & 0 & 1 & 0 \\ 1 & 4 & 2 & 5 & 0 & 0 & 0 & 1 \end{array} \right)\]

    \[\longrightarrow \left( \begin{array}{cccc|cccc} 1 & 1 & 0 & 1 & 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & -1 & -1 & 1 & 0 & 0 \\ 0 & 2 & 1 & -1 & -1 & 0 & 1 & 0 \\ 0 & 3 & 2 & 4 & -1 & 0 & 0 & 1 \end{array} \right)\]

    \[\longrightarrow  \left( \begin{array}{cccc|cccc} 1 & 1 & 0 & 1 & 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & -1 & -1 & 1 & 0 & 0 \\ 0 & 0 & 1 & 1 & 1 & -2 & 1 & 0 \\ 0 & 0 & 2 & 7 & 2 & -3 & 0 & 1 \end{array} \right)\]

    \[\longrightarrow  \left( \begin{array}{cccc|cccc} 1 & 0 & 0 & 0 & 2 & -7/5 & 4/5 & -2/5 \\ 0 & 1 & 0 & 0 & -1 & 6/5 & -2/5 & 1/5 \\ 0 & 0 & 1 & 0 & 1 & -11/5 & 7/5 & -1/5 \\ 0 & 0 & 0 & 1 & 0 & 1/5 & -2/5 & 1/5 \end{array} \right)\]


Como podemos reducir a la identidad, los vectores iniciales son linealmente independientes y forman una base. Más aún, ya obtuvimos la inversa de A.

Ahora para obtener la base dual V^:=\{v_1^\ast,v_2^\ast,v_3^\ast,v_4^\ast\} de la base V, por lo visto en la última clase, podemos escribir V^\ast como combinación lineal de e_i^\ast, donde los coeficientes son las columnas de B:=^t(A^{-1}). Esta matriz es

    \[\begin{pmatrix} 2 & -1 & 1 & 0 \\ -7/5 & 6/5 & -11/5 & 1/5 \\ 4/5 & -2/5 & 7/5 & -2/5 \\ -2/5 & 1/5 & -1/5 & 1/5 \end{pmatrix}.\]

Por lo tanto,

    \[v_1^* = 2e_1^* -\frac{7}{5} e_2^* +\frac{4}{5} e_3^* -\frac{2}{5}e_4^*\]

    \[v_2^* = -e_1^* +\frac{6}{5} e_2^* -\frac{2}{5} e_3^* +\frac{1}{5}e_4^*\]

    \[v_3^* = e_1^* -\frac{11}{5} e_2^* +\frac{7}{5} e_3^* -\frac{1}{5}e_4^*\]

    \[v_4^* = \frac{1}{5} e_2^* -\frac{2}{5} e_3^* +\frac{1}{5}e_4^*\]

\square

Otro tipo de problemas de dualidad consisten en determinar algunos vectores en V cuya base dual sea una base dada de V^\ast.

Problema 2. Considera las siguientes formas lineales en \mathbb{R}^3:

    \begin{align*}l_1(x,y,z)&=x-y, \\l_2(x,y,z)&=y-z, \\l_3(x,y,z)&=x+y-z.\end{align*}

  1. Prueba que l_1,l_2,l_3 forman una base del dual de \mathbb{R}^3.
  2. Encuentra una base de \mathbb{R}^3 cuya base dual es l_1,l_2,l_3.

Solución. (1) Por el último teorema de la entrada de bases duales, sabemos que l_1,l_2,l_3 forman una base si la matriz A=[l_i(e_j)] es invertible, donde e_j es la base canónica de \mathbb{R}^3.

Para mostrar que A es invertible, calcularemos la forma escalonada reducida de la matríz (A|I). Entonces,

    \begin{align*}&\left( \begin{array}{ccc|ccc} 1 & -1 & 0 & 1 & 0 & 0 \\ 0 & 1 & -1 & 0 & 1 & 0 \\ 1 & 1 & -1 & 0 & 0 & 1 \end{array} \right) \\\longrightarrow &\left( \begin{array}{ccc|ccc} 1 & -1 & 0 & 1 & 0 & 0 \\ 0 & 1 & -1 & 0 & 1 & 0 \\ 0 & 2 & -1 & -1 & 0 & 1 \end{array} \right) \\ \longrightarrow &\left( \begin{array}{ccc|ccc} 1 & -1 & 0 & 1 & 0 & 0 \\ 0 & 1 & -1 & 0 & 1 & 0 \\ 0 & 0 & 1 & -1 & -2 & 1 \end{array} \right) \\ \longrightarrow &\left( \begin{array}{ccc|ccc} 1 & 0 & 0 & 0 & -1 & 1 \\ 0 & 1 & 0 & -1 & -1 & 1 \\ 0 & 0 & 1 & -1 & -2 & 1 \end{array} \right)\end{align*}

Con esto concluimos que A es invertible, y por lo tanto l_1,l_2,l_3 forman una base del dual de \mathbb{R}^3.

(2) En el inciso anterior, calculamos la inversa de A, obteniendo

    \[A^{-1}=\begin{pmatrix} 0 & -1 & 1 \\ -1 & -1 & 1 \\ -1 & -2 & 1 \end{pmatrix}.\]


Recordemos que la base v_1,v_2,v_3 de \mathbb{R}^3 está determinada por las columnas de B=A^{-1}, entonces

    \[v_1=\begin{pmatrix} 0 \\ -1 \\ -1 \end{pmatrix}, \ v_2=\begin{pmatrix} -1 \\ -1 \\ -2 \end{pmatrix}, \ v_3=\begin{pmatrix} 1 \\ 1 \\ 1 \end{pmatrix}.\]

\square

Veamos otro ejemplo, el que veremos formas lineales un poco más interesantes, relacionadas con cálculo.

Problema 3. Sea V=\mathbb{C}_2[X] el espacio vectorial de polinomios de grado a lo más 2 con coeficientes complejos, y para cada P\in V definimos

    \begin{align*}l_1(P)&=P(0), \\ l_2(P)&=\int_0^1 P(x) dx, \\ l_3(P)&=\int_0^1 P(x)e^{-2\pi ix}dx.\end{align*}

  1. Prueba que l_1,l_2,l_3 pertenecen a V^*. Más aún, forman una base de V^*.
  2. Encuentra una base v_1,v_2,v_3 de V cuya base dual es l_1,l_2,l_3.

Solución. (1) No es difícil ver que son formas lineales, ya que l_1(P+Q)=P(0)+Q(0)=l_1(P)+l_1(Q), l_1(aP)=aP(0)=al_1(P) y l_2,l_3 son lineales por las propiedades de la integral.

Para probar que son base de V^*, lo haremos de manera similar al problema anterior. Sabemos que 1,x,x^2 forman la base canónica de V, entonces L:=\{l_1,l_2,l_3\} es una base de V^* si la matriz A=[l_i(e_j)] es invertible. Calculando

    \[l_1(1)=1, \  l_1(x)=l_1(x^2)=0,\]

    \[l_2(1)=1, \  l_2(x)=\int_0^1 xdx=\frac{1}{2},\]

    \[l_2(x^2)=\int_0^1 x^2 dx=\frac{1}{3},\]

    \[l_3(1)=\int_0^1 e^{-2\pi i x}dx=0, \ l_3(x)=\int_0^1 xe^{-2\pi i x}dx=\frac{i}{2\pi},\]

    \[l_3(x^2)=\int_0^1 x^2e^{-2\pi i x}dx=\frac{1+i\pi}{2\pi^2}.\]


(Para calcular l_3(x),l_3(x^2) se usa integración por partes). Entonces la matriz es

    \[A=\begin{pmatrix} 1 & 0 & 0 \\ 1 & 1/2 & 1/3 \\ 0 & \frac{i}{2\pi} & \frac{1+i\pi}{2\pi^2}  \end{pmatrix}.\]

Ahora, reduciremos la matriz (A|I) para «matar dos pájaros en un sólo tiro»: probar que A es invertible y, al mismo tiempo, encontrar A^{-1}. Tenemos que

    \begin{align*}&\left( \begin{array}{ccc|ccc} 1 & 0 & 0 & 1 & 0 & 0 \\ 1 & 1/2 & 1/3 & 0 & 1 & 0 \\ 0 & \frac{i}{2\pi} & \frac{1+i\pi}{2\pi^2} & 0 & 0 & 1 \end{array} \right)\\\longrightarrow &\left( \begin{array}{ccc|ccc} 1 & 0 & 0 & 1 & 0 & 0 \\ 0 & 1/2 & 1/3 & -1 & 1 & 0 \\ 0 & i\pi & 1+i\pi & 0 & 0 & 2\pi^2 \end{array} \right)\\\longrightarrow & \left( \begin{array}{ccc|ccc} 1 & 0 & 0 & 1 & 0 & 0 \\ 0 & 3 & 2 & -6 & 6 & 0 \\ 0 & 1 & \frac{1+i\pi}{i\pi} & 0 & 0 & -2i\pi  \end{array} \right)\\\longrightarrow &\left( \begin{array}{ccc|ccc} 1 & 0 & 0 & 1 & 0 & 0 \\ 0 & 1 & 0 & \frac{-6-6\pi i}{3+\pi i} & \frac{6+6\pi i}{3+\pi i} & \frac{-4\pi^2}{3+\pi i} \\ 0 & 0 & 1 & \frac{6\pi i}{3+\pi i} & \frac{-6\pi i}{3+\pi i} & \frac{6\pi^2}{3+\pi i} \end{array} \right)\end{align*}

Por lo tanto A es invertible, implicando que L es una base de V^*.

(2) Ya calculada en el inciso anterior, tenemos que

    \[A^{-1}=\frac{1}{3+\pi i} \begin{pmatrix} 3+\pi i & 0 & 0 \\ -6-6\pi i & 6+6\pi i & -4\pi^2 \\ 6\pi i & -6 \pi i & 6\pi^2 \end{pmatrix}.\]

De esta matriz leemos a las coordenadas de la base que estamos buscando en términos de la la base canónica \{1,x,x^2\}. Los renglones son los vectores de coordenadas. Por lo tanto, la base de V tal que L es la base dual es:

    \begin{align*}v_1&= \frac{1}{3+\pi i} \left(3+\pi i\right) \\v_2&= \frac{1}{3+\pi i} \left( -6-6\pi i+(6+6\pi i)x-4\pi^2x^2 \right) \\v_3&= \frac{1}{3+\pi i} \left( 6\pi i-6\pi ix+6\pi^2x^2  \right). \end{align*}

\square

Fórmula de interpolación de Lagrange

La teoría de dualidad tiene amplias aplicaciones. Con ella se puede probar un resultado clásico: podemos construir un polinomio de grado n que pase por n+1 puntos que nosotros queramos. En el siguiente ejercicio vemos los detalles.

Problema 4. (Interpolación de Lagrange) Sea V=\mathbb{R}_n[X] el espacio vectorial de polinomios de grado a lo más n con coeficientes reales. Sean x_0,\dots,x_n números reales distintos. Para 0\leq i \leq n definimos

    \[L_i(x)=\prod_{0\leq j\leq n, j\neq i} \frac{x-x_j}{x_i-x_j}.\]

  1. Demuestra que L_i(x_j)=\delta_{ij} para todo 1\leq i,j \leq n, donde \delta_{ij} es igual a 1 si i=j y es igual a 0 si i\neq j.
  2. Prueba que L_0,\dots,L_n forman una base de V.
  3. Encuentra la base dual de L_0,\dots,L_n.
  4. Prueba la Fórmula de Interpolación de Lagrange: para todo P\in V tenemos que

        \[P=\sum_{i=0}^n P(x_i)L_i.\]

  5. Demuestra que para cualquiera b_0,\dots,b_n \in\mathbb{R}, podemos encontrar un único polinomio P\in V tal que P(x_i)=b_i para todo 0\leq i \leq n. Este polinomio P es llamado el polinomio de interpolación de Lagrange asociado a b_0,\dots,b_n.

Solución. (1) Si j\neq i, entonces

    \[L_i(x_j)=\frac{x_j-x_j}{x_i-x_j}\cdot\prod_{k\neq j,i} \frac{x_j-x_k}{x_i-x_k}=0.\]

Por otro lado si i=j,

    \[L_i(x_j)=L_i(x_i)=\prod_{k\neq i} \frac{x_i-x_k}{x_i-x_k} =1 .\]

(2) Dado que dim(V)=n+1, cuya base canónica es 1,x,\ldots,x^n y L_0,\dots,L_n son n+1 vectores, para probar que son base, basta con demostrar que son linealmente independientes. Sean a_0,\dots,a_n tales que a_0L_0+\dots+a_nL_n=0. Evaluando en x_i y usando el inciso anterior, tenemos que

    \[0=\sum_{j=0}^n a_jL_j(x_i)=\sum_{j=0}^n a_j\delta_{ij}=a_i,\]

pero esto pasa cualquier 0\leq i \leq n. Por lo tanto L_0,\dots,L_n son linealmente independientes, y por consiguiente, son base de V.

(3) Por definición de la base dual L_i^*(L_j)=\delta_{ij}, y por el inciso (a) tenemos que L_j(x_i)=\delta_{ij}, entonces L_i^*(L_j)=L_j(x_i), para toda i,j. Ahora, fijamos i. Dado que L_0,\dots, L_n forman una base de V y dado que L_i^* es lineal, para toda P\in V, con P(x)=a_0L_0+a_1L_1+\ldots+a_nL_n, tenemos que

    \begin{align*}L_i^*(P)&=a_0L_i^*L_0)+\ldots+a_nL_i^\ast(L_n)\\&=a_0L_0(x_i)+\ldots+a_nL_n(x_i)\\&=P(x_i).\end{align}


Por lo tanto la base dual es L_i^*=\text{ev}_{x_i}.

(4) Sabemos que la base dual satisface que

    \[P=\sum_{i=0}^n \langle L_i^*,P \rangle L_i.\]

Pero por el inciso anterior, \langle L_i^*,P\rangle =L_i^*(P)=P(x_i), entonces P=\sum_i P(x_i)L_i.

(5) Definimos P=\sum_{i=0}^n b_iL_i. Por el inciso (1), tenemos que

    \[P(x_j)=\sum_i b_iL_i(x_j)=\sum_i b_i\delta_{ij}=b_j.\]

Entonces el polinomio existe. Falta probar la unicidad.

Suponemos que existe Q\in V tal que Q(x_i)=b_i para todo i. Notemos que P-Q es un polinomio de grado a lo más n (por definición) y (P-Q)(x_i)=0 para todo i, esto implica que P-Q tiene n+1 raíces distintas, lo cual es imposible si P-Q \neq 0, por lo tanto, P-Q=0, es decir P=Q.

\square

Observemos que este problema también se satisface para los polinomios con coeficientes complejos, V=\mathbb{C}_n[X].

Expresar integral como suma de evaluaciones

Terminamos esta entrada con el siguiente problema. El enunciado no menciona dualidad, pero podemos usar la teoría desarrollada hasta ahora para resolverlo.

Problema 5. Sean x_0,x_1,x_2\in [0,1], y sea V=\mathbb{R}_2[X]. Definimos el mapeo

    \[l(P)=\int_0^1 P(x)e^{-x} dx.\]

Demuestra que l es una forma lineal en V y prueba que existe una única tercia (a_0,a_1,a_2) de números reales tales que

    \[\int_0^1 P(x)e^{-x}dx=\sum_{i=0}^2 a_iP(x_i).\]

Solución. Debido a las propiedades de la integral, es fácil ver que l es lineal, ya que

    \begin{align*}l(aP+Q)&=\int_0^1 (aP(x)+Q(x))e^{-x} dx \\&= a\int_0^1 P(x)e^{-x}dx+\int_0^1 Q(x)e^{-x}dx \\&=al(P)+l(Q).\end{align*}

Usando el problema anterior, tenemos que L_0^*=\text{ev}_{x_0}, L_1^*=\text{ev}_{x_1} y L_2^*=\text{ev}_{x_2} forman una base de V^. Por lo tanto existen (a_0,a_1,a_2) tales que l=a_0L_0^*+a_1L_1^*+a_2L_2^*. Entonces

    \begin{align*}     \int_0^1 P(x)e^{-x}&=l(P)=\sum_{i=0}^2 a_iL_i^*(P) \\     &= \sum_{i=0}^2 a_iP(x_i). \end{align*}

Es fácil ver que es única esa tercia, ya que, si existiera otra (b_0,b_1,b_2) tal que

    \[l=b_0L_0^*+b_1L_1^*+b_2L_2^*,\]

esto implica que

    \[0=(a_0-b_0)L_0^*+(a_1-b_1)L_1^*+(a_2-b_2)L_2^*,\]

y dado que L_i^* son una base, tendríamos a_i=b_i.

\square

Álgebra Superior II: Simplificación, suma y producto de complejos

Introducción

En una entrada de blog anterior, construimos el campo de los números complejos y definimos sus operaciones básicas. Ahora resolveremos algunos problemas de operaciones con complejos.

Haremos dos tipos de problemas. El primer tipo se trata de simplificar expresiones en números complejos para que se vuelvan de la forma x+yi con x y y números reales. El segundo tipo es de realizar operaciones de suma, resta, producto y división de complejos, y luego simplificar.

Simplificación de expresiones complejas

Comenzamos con un video de simplificar expresiones de números complejos.

Expresar en la forma a+bi las expresiones…

Problemas de operaciones con complejos

Ahora vemos varios ejemplos de realizar sumas con números complejos.

Sumar números complejos

En todos los ejemplos del video, realizamos sólo sumas de dos números, pero se podrían realizar sumas con cualquier cantidad de sumandos. Por ejemplo, podemos considerar la suma

    \[(5+2i)+(8+i)-(1-7i).\]

¿Cuál sería el resultado de esta operación?

Finalmente, a continuación se muestra un video en donde see realizan operaciones de productos y de divisiones de números complejos.

Productos y divisiones de números complejos

En el video se define al conjugado del número complejo z=a+bi, que se denota por \overline{z} y se obtiene de cambiarle el signo a la parte imaginaria. Por ejemplo, \overline{4-5i}=4+5i. Si multiplicas a un número complejo a+bi por su conjugado, obtienes el real a^2+b^2. Esto es útil para quitar las partes imaginarias de los denominadores de expresiones fraccionales con complejos.

Más ejemplos y práctica extra

En otro curso, el Seminario de Resolución de Problemas, escribimos una entrada de cómo se pueden usar los números complejos para la resolución de problemas matemáticos. Ahí hay teoría más avanzada, pero puedes echarle un ojo para que veas lo que veremos más adelante en el curso.

En la página de Khan Academy en Español, puedes aprender más acerca de los números complejos, así como hacer muchos ejercicios de práctica.