Principio de inducción matemática#

Introducción#

En este capítulo vamos a retomar el principio de inducción. Recordemos de los cursos de Álgebra que el principio de inducción matemática es una técnica poderosa de demostración, que nos ayuda a comprobar que un enunciado matemático es válido para todos los números naturales. La inducción nos puede ayudar para demostrar resultados del siguiente estilo:

  • Para todo natural \(n\in \mathbb{N}\) se cumple que

    \[\sum_{i=1}^{n} i = \frac{n(n+1)}{2}.\]

  • Para cualquier natural \(n\geq 1\) y reales \(x_1,\ldots, x_n\) positivos se cumple que

    \[\log(x_1 \cdot \ldots \cdot x_n) = \sum_{i=1}^{n}\log x_i.\]

  • Para todo entero positivo \(n\) se cumple que

    \[n! \le n^n.\]

  • Para todo entero positivo \(n\) se cumple que

    \[\sum_{k=1}^{n} \frac{1}{k^2} = \frac{1}{1^2} + \frac{1}{2^2} + \ldots + \frac{1}{n^2} \le 2-\frac{1}{n}.\]

  • Para cada \(n\in \mathbb{N}\) el número \(n(n+1)(n+2)\) es múltiplo de \(3\).

  • Para todo entero positivo \(n\) el número

    \[5^{5n+1} + 4^{5n+2} + 3^{5n},\]
    es múltiplo de \(11\).

Necesitamos el principio de inducción matemática ya que de otra manera sería complicado demostrar que algunos enunciados como estos se cumplen para cada entero \(n \ge 1\). El principio de inducción nos ayuda a establecer la validez y un método mediante el cual con dos (o tres) pasos se demuestra la veracidad de la afirmación para todos los naturales.

También vamos a recordar la recursividad la cual es una técnica que consiste en definir un objeto o proceso en términos de sí mismo. En matemáticas, esto significa que una función o una estructura se define en función de valores anteriores de la misma función o de una versión más simple de la misma estructura.

Refrescando la memoria: Los números naturales#

Trabajaremos con el conjunto de naturales \(\mathbb{N}=\{0,1,2,3,4,5,\ldots\}\), con el que estás familiarizado desde los cursos de Álgebra. Aunque no es necesario que conozcas totalmente cómo se construye este conjunto de manera formal, lo cierto es que te puede ser de mucha ayuda para entender algunos de los argumentos que usaremos. Una posible referencia para consultar esta construcción es el curso: Álgebra Superior II.

Al construir a los naturales de manera formal, se hace de tal manera que cumplan una serie de axiomas. El axioma crucial para nuestros fines es el siguiente.

Axioma 1 (\(5^{to}\) axioma de Peano)

Sea \(S\) un conjunto de números naturales que satisface las siguientes propiedades:

  1. \(0\in S.\)

  2. Si \(k\) es elemento de \(S\), entonces \(k+1\in S.\)

Entonces \(S= \mathbb{N}.\)

Este axioma puede simplemente suponerse y dar como un hecho que sucede en \(\mathbb{N}\). También es posible demostrar que en la construcción conjuntista de \(\mathbb{N}\) el axioma es válido. Nosotros lo tomaremos como un hecho. Pero observa que es un hecho bastante intuitivo. El primer requisito para \(S\) es tener a \(0\). Luego, con el segundo requisito podemos conseguir a \(0+1=1\). Y después a \(1+1=2\). Y después a \(2+1=3\), y «así sucesivamente». El axioma es la formalización de que el «así sucesivamente» en efecto es una garantía de que tenemos a todos los elementos de \(\mathbb{N}\).

A partir del axioma anterior podemos demostrar la siguiente variante, cuya demostración se dejará como ejercicio.

Proposición 1

Sea \(n_0\) un natural fijo. Sea \(S\) un conjunto de naturales que satisface las siguientes condiciones.

  1. \(n_0 \in S\).

  2. Si \(k\) es un natural tal que \(k\geq n_0\) y \(k\in S,\) entonces \(k+1 \in S.\)

Entonces \(S\) tiene todos los enteros \(n\ge n_0.\)

Así mismo, el quinto axioma nos permite introducir la siguiente técnica de demostración matemática.

Teorema 1 (Principio de inducción matemática)

Sea \(P(n)\) una propiedad matemática cuya veracidad depende de una variable \(n\) natural. Supongamos que se cumplen las siguientes condiciones:

  1. \(P(n)\) es verdadera para algún natural \(n=n_0\).

  2. Si \(P(n)\) es verdadera para un entero arbitrario \(n\geq n_0,\) entonces \(P(n+1)\) es también verdadera.

Entonces \(P(n)\) es verdadera para todo entero \(n \ge n_0.\)

Demostración. Sea \(S\) el conjunto de los naturales \(n\) para los cuales \(P(n)\) es verdadera. Como \(P(n_0)\) es verdadera, se tiene que \(n_0\in S\). Supongamos que \(n\in S\) y \(n\geq n_0\). Por definición de \(S\) tendríamos entonces que \(P(n)\) es verdadera, y \(n\geq n_0\). Por la hipótesis (2), tendríamos entonces que \(P(n+1)\) es verdadera. Así, \(n+1\in S\). De este modo, podemos aplicar la Proposición 1 para concluir que \(S\) tiene a todos los enteros \(n\geq n_0\). Consecuentemente, \(P(n)\) es verdadera para todo entero \(n\ge n_0\). \(\square\)

De nuevo, la idea detrás es intuitiva. La condición (1) nos dice que \(P(n_0)\) es verdadera. La condición (2) nos permite entonces concluir que \(P(n_0+1)\) es verdadera, y luego que \(P(n_0+2)\) es verdadera y «así sucesivamente» a partir de \(n_0\) siempre se tiene que la proposición es verdadera.

El teorema anterior nos da entonces una estrategia para demostrar («demostrar por inducción»). Pensemos que queremos saber si una proposición \(P(n)\) es cierta para \(n\geq n_0\). Necesitamos entonces hacer los siguientes pasos:

  • Base inductiva. Verificar que \(P(n_0)\) es una afirmación verdadera para algún natural \(n_0\).

  • Hipótesis inductiva. Asumir que \(P(k)\) es verdadera para un natural arbitrario \(k \ge n_0\).

  • Paso inductivo. Usar la veracidad de \(P(k)\), así como cualquier otra información verdadera que tengamos, para verificar que \(P(k+1)\) también es verdadera.

En el segundo paso, al asumir la hipótesis inductiva, estamos asumiendo \(P(k)\) para un natural arbitrario. ¿Qué no es esto suponer lo que queremos demostrar? No realmente. En ese paso suponemos la veracidad sólo para un natural. Es arbitrario, pero es solamente uno. Lo que nos garantiza al final el principio de inducción es la veracidad para todos los naturales.

Problemas resueltos con inducción matemática#

Veamos algunos ejemplos de problemas que pueden ser resueltos usando inducción matemática.

Ejemplo 1

Demuestra que para todo entero positivo \(n\) se cumple que:

\[1+2+3+\ldots+n = \frac{n(n+1)}{2}.\]

Solución.

Sea \(P(n)\) la proposición que afirma que para el entero positivo \(n\) se cumple que

\[\sum_{i=1}^{n} i = \frac{n(n+1)}{2}.\]

Base inductiva. Verifiquemos que \(P(1)\) es verdadera. Cuando \(n=1\), en el lado derecho tenemos

\[\frac{1(1+1)}{2}=1,\]
y en el lado izquierdo tenemos
\[\sum_{i=1}^{1}i=1,\]
así que ambas expresiones coinciden.

Hipótesis inductiva. Supongamos que \(P(k)\) es verdadera para algún entero positivo \(k\), es decir que

\[\sum_{i=1}^{k} i = \frac{k(k+1)}{2}.\]

Paso inductivo. Una vez que hemos supuesto la hipótesis inductiva, probaremos que \(P(k)\) implica \(P(k+1)\). Para ello, comencemos con el lado izquierdo de la afirmación \(P(k+1)\) y procedamos de la siguiente manera:

\[\begin{align*} \sum_{i=1}^{k+1} i &= \sum_{i=1}^{k} i + (k+1)\\ & \\ &= \frac{k(k+1)}{2} + (k+1)\\ & \\ &= (k+1) \left(\frac{k}{2}+1\right)\\ & \\ &= \frac{(k+1)(k+2)}{2} \\ & \\ &= \frac{(k+1) \left[ (k+1)+1 \right]}{2}. \\ \end{align*}\]

Entonces, si \(P(k)\) es verdadera, \(P(k+1)\) también lo es. Así, por el principio de inducción, \(P(n)\) es verdadera para todo entero \(n \geq 1\), lo que quiere decir que la fórmula se cumple para todo entero positivo. \(\square\)

En el problema anterior ya nos dieron la fórmula que debíamos demostrar. Veamos ahora un ejemplo en el que antes de poder usar inducción, debemos descubrir la fórmula a demostrar.

Ejemplo 2

Calcula algunos casos para conjeturar una fórmula para la suma de los primeros \(n\) números impares, después usa inducción para demostrar que la fórmula siempre es verdadera.

Solución.

Primero, listemos las primeras cinco sumas de números impares, y luego veamos si podemos encontrar un patrón.

\[1 = 1^2\]
\[1+3 = 4 = 2^2\]
\[1+3+5 = 9 = 3^2\]
\[1+3+5+7 = 16 = 4^2\]
\[1+3+5+7+9 = 25 = 5^2\]
\[\vdots\]

Es claro que tenemos un patrón, pues van apareciendo los cuadrados de los números \(1,2,\ldots.\) Entonces podemos conjeturar que la suma de los primeros \(n\) números impares es \(n^2\). De esta forma, planteamos como conjetura para demostrar la proposición \(P(n)\) que afirma que

\[\sum_{i=1}^{n}(2i-1)=n^2.\]

La demostraremos con el principio de inducción.

Base inductiva. Cuando \(n=1\), tenemos la igualdad, y de hecho en nuestra exploración ya vimos que la igualdad se vale hasta \(n=5\).

Hipótesis inductiva. Supongamos que la proposición es verdadera para cierta \(k\) fija, es decir, que

\[\sum_{i=1}^{k}(2i-1)=k^2.\]

Paso inductivo. Queremos ver que la proposición también es verdadera para \(k+1\). Para ello, comencemos con el lado izquierdo de la proposición \(P(k+1)\) y procedamos de la siguiente manera:

\[\begin{align*} \sum_{i=1}^{k+1}(2i-1) &= \sum_{i=1}^{k}(2i-1) + \left[ 2(k+1)-1 \right] \\ & \\ &= k^2 + \left[ 2(k+1)-1 \right]\\ & \\ &= k^2 + 2k + 1\\ & \\ &= (k+1)^2. \end{align*}\]

Por lo tanto, la fórmula es verdadera para \(n = k +1\), si también lo es para \(n = k\). Por lo tanto, por el principio de inducción la fórmula es verdadera para todo entero positivo \(n\). \(\square\)

Veamos ahora un ejemplo más cercano a lo que aprenderemos en este curso. A continuación se verá que cierta expresión es divisible entre \(5\). Estudiaremos la divisibilidad y sus propiedades con más generalidad posteriormente. Por ahora, entenderemos que un entero es divisible por \(5\) si es de la forma \(5k\) con \(k\) entero.

Ejemplo 3

Demuestra que \(n^5 - n\) es divisible por \(5\) para todo \(n \in \mathbb{N}\).

Solución.

Sea \(P(n)\) la proposición que afirma que para el entero \(n\) se cumple que \(n^5 - n\) es divisible entre \(5\).

Base inductiva. Verifiquemos que \(P(1)\) es verdadera.

Cuando \(n = 1\), tendríamos que \(n^5 - n = 1^5 - 1 = 0\), y sabemos que \(0=5\cdot 0\). Por lo tanto \(P(1)\) es verdadera.

Hipótesis inductiva. Supongamos que \(P(k)\) es verdadera para algún entero positivo \(k\), es decir que el número \(k^5 - k\) es divisible entre \(5\).

Paso inductivo. Ahora, como \(P(k)\) es verdadera se probará que \(P(k+1)\) es verdadera. Queremos ver que la expresión \((k+1)^5 - (k+1)\) es divisible entre \(5\). Tenemos lo siguiente

\[\begin{align*} (k+1)^5 - (k+1) &= k^5 + 5k^4 + 10k^3 + 10k^2 + 5k + 1 - k - 1 \\ & \\ &= k^5 + 5k^4 + 10k^3 + 10k^2 + 5k - k \\ & \\ &= (k^5 - k) + 5k^4 + 10k^3 + 10k^2 + 5k \\ & \\ &= (k^5 - k) + 5(k^4 + 2k^3 + 2k^2 + k). \\ \end{align*}\]

Por hipótesis de inducción tenemos que el número \(k^5 - k\) es divisible entre \(5\), digamos \(k^5-k=5l\). Por otro lado \(5(k^4 + 2k^3 + 2k^2 + k)\) es divisible entre \(5\).
Por lo tanto, el número \((k+1)^5 - (k+1)=5(l+k^4 + 2k^3 + 2k^2 + k)\) es divisible entre \(5\) y así hemos demostrado que si \(P(k)\) es verdadera, entonces \(P(k+1)\) es verdadera.

Así, por inducción, \(P(n)\) es verdadera para todo entero \(n\ge 1\).

En el último ejemplo, nuevamente pensaremos que un número entero es divisible entre \(3\) cuando es de la forma \(3k\) para algún entero \(k\).

Ejemplo 4

Demuestra que \(2^{2n} - 1\) es divisible por \(3\) para toda \(n > 0\).

Solución.

Sea \(P(n)\) la proposición que afirma que para el entero \(n > 0\) el número \(2^{2n} - 1\) es divisible por \(3\).

Base inductiva. Vamos a verificar que \(P(1)\) es verdadera.

Si tomamos \(n = 1\), tendremos que

\[2^{2n} - 1= 2^{2\cdot 1} - 1 = 4 - 1 = 3=3\cdot 1,\]
por lo tanto se cumple que \(2^{2\cdot 1} - 1\) es divisible por \(3\) y así \(P(1)\) es verdadera.

Hipótesis inductiva. Supongamos que \(P(k)\) es verdadera, es decir que \(2^{2k} - 1\) es divisible por \(3\).

Paso inductivo. Sabiendo que se cumple \(P(k)\), entonces \(2^{2k} - 1 = 3t\), para algún entero \(t\), de esto podemos obtener que \(2^{2k} = 3t + 1\).

Ahora vamos a demostrar que la proposición \(P(k+1)\) es verdadera. Entonces tenemos lo siguiente

\[\begin{align*} 2^{2(k+1)} - 1 &= 2^{2k + 2} - 1 = 2^2\cdot 2^{2k} - 1 \\ & \\ &= 4\cdot (3t + 1) - 1 = 12t + 4 - 1 \\ & \\ &= 12t + 3 = 3(4t + 1). \end{align*}\]

Podemos concluir que el número \(2^{2(k+1)} - 1\) es divisible por \(3\) si \(P(k)\) es verdadera.

Así, por inducción hemos demostrado que \(P(n)\) es verdadera para todo entero \(n>0\).

Inducción fuerte#

Veamos ahora el principio de inducción fuerte o también conocido como el segundo principio de inducción matemática. Es una ligera variante del principio de inducción matemática que es útil para algunas demostraciones matemáticas. Si \(P(n)\) es una proposición, en algunas ocasiones la veracidad de la proposición \(P(k)\) puede no ser suficiente para probar la veracidad de \(P(k+1)\). Veamos qué dice el principio de inducción fuerte y mostremos su uso con un ejemplo.

Teorema 2 (Principio de inducción fuerte)

Sea \(P(n)\) una proposición que satisface las siguientes condiciones, donde \(n\in \mathbb{Z}\):

  1. \(P(n_0)\) es verdadera para algún entero \(n_0\).

  2. Si \(k\) es un entero arbitrario mayor o igual a \(n_0\) tal que \(P(n_0),P(n_0 + 1),\ldots ,P(K)\) son verdaderas, entonces \(P(k+1)\) también es verdadera.

Entonces \(P(n)\) es verdadera para todo entero \(n\ge n_0\).

Veamos un ejemplo para mostrar el uso del principio de inducción fuerte.

Ejemplo 5

Sea \(n \ge 12\) un número entero, entonces \(n\) siempre se puede escribir de la forma \(n = 4a + 5b\) para algunos \(a,b\in \mathbb{N}\).

Solución.

Usaremos el principio de inducción fuerte.

Sea \(P(n)\) la proposición que afirma que para el entero \(n\ge 12\), \(n = 4a + 5b\).

Base inductiva. Veamos que los siguientes casos se cumplen.

Ya que \(12 = 4\cdot 3 + 5\cdot 0\), entonces \(P(12)\) es verdadera. Como \(13 = 4\cdot 2 + 5\cdot 1\), entonces \(P(13)\) es verdadera. Tenemos que \(14 = 4\cdot 1 + 5\cdot 2\), entonces \(P(14)\) es verdadera. Por último, \(15 = 4\cdot 0 + 5\cdot 3\) y así \(P(15)\) es verdadera.

Hipótesis inductiva. Vamos a suponer que \(P(12),P(13),\ldots ,P(k)\) son verdaderas para algún entero \(k\ge 12\).

Paso inductivo. Con la hipótesis inductiva vamos a demostrar que \(P(k+1)\) es verdadera.

Ya probamos que para \(12, 13, 14\) y \(15\) se cumple la proposición. Supongamos que \(k+1 \ge 16\). Si \(k+1 \ge 16\), entonces \(k-3\ge 12\) y \(k-3<k+1\). Entonces por hipótesis de inducción \(k-3 = 4a + 5b\), para algunos enteros \(a,b \in \mathbb{N}\).
Ahora, veamos que

\[\begin{align*} k-3 &= 4a + 5b \\ & \\ k-3+4 &= 4a + 5b +4 \\ & \\ k+1 &= 4(a+1) + 5b \\ & \\ k+1 &= 4a' + 5b, \end{align*}\]

en donde \(a' = a+1\). Por lo tanto, \(k+1 = 4a' + 5b\) para algunos enteros \(a',b\in \mathbb{N}\).

Así, por el principio de inducción fuerte la proposición \(P(n)\) es verdadera para todo entero \(n\ge 12\). \(\square\)

Recursividad#

Definición 1

Sea \(a \in \mathbb{N}\) y \(X=\{a,a+1,a+2,...\}\). Una definición recursiva de una función \(f\) con dominio \(X\) consiste de tres partes:

  • Paso base. Algunos valores iniciales \(f(a),f(a+1),...,f(a+k-1)\) son especificados. Las ecuaciones que especifican dichos valores iniciales son llamadas condiciones iniciales.

  • Paso recursivo. Una fórmula para computar \(f(n)\) a partir de los \(k\) valores anteriores \(f(n-1),f(n-2),...,f(n-k).\) Dicha fórmula es la relación de recurrencia (o fórmula recursiva).

  • Paso terminal. Solo los valores obtenidos de forma recursiva, son valores válidos. (Por conveniencia, se quita esta cláusula de la definición de recursividad.)

Problemas resueltos con recursividad#

Ejemplo 6

Define por recursión la función factorial \(f.\)

Solución.
Recordemos que la función factorial \(f\) está definida por \(f(n)=n!\), donde \(f(0)=1\) y además como \(n!=n(n-1)!\), puede ser definida recursivamente como se muestra a continuación:

\[\begin{split}\begin{cases} f(0) = 1 \quad \quad\leftarrow \text{condición inicial.} \\ & \\ f(n) = n\cdot f(n-1) \text{ , para } n\ge 1 \quad \quad \leftarrow \text{relación de recurrencia.} \end{cases}\end{split}\]

Supongamos que queremos calcular \(f(3)\) con la función factorial \(f\). Debemos aplicar la relación de recurrencia hasta que alcancemos la condición inicial, de la siguiente forma:

\[\begin{align*} f(3) &= 3\cdot f(2), \\ & \\ f(2) &= 2\cdot f(1), \\ & \\ f(1) &= 1\cdot f(0), \\ & \\ f(0) &= 1. \end{align*}\]

Después sustituimos los valores anteriores, para finalmente obtener:

\[f(3)=3\cdot f(2)=3\cdot 2\cdot f(1)=3\cdot 2\cdot 1\cdot f(0)=3\cdot 2\cdot 1\cdot 1=6.\]

Ejemplo 7 (El problema del apretón de manos.)

Hay \(n\) personas en una fiesta. Cada persona le da la mano a todos los demás exactamente una vez. Define recursivamente el número de apretones \(h(n)\) que se dieron.

Solución.
La condición inicial era \(h(1)=0\), es decir que si hay una persona en la fiesta, no habría ningún apretón de manos.

Hagamos algunos casos para ver la relación recursiva:

Si \(n=2\). Tendríamos dos personas en la fiesta, entonces \(h(2)=1\) ya que solamente habría un apretón de manos.

Si \(n=3\). Tendríamos 3 personas en la fiesta, sea \(x\) uno de los invitados. El número de apretones dados por los 2 invitados restantes sería \(h(2)\) y el invitado \(x\) daría 2 apretones de manos, entonces \(h(3)=h(2)+2=1+2=3\).

Si \(n=4\). Tendríamos 4 personas en la fiesta, sea \(x\) uno de los invitados. El número de apretones dados por los 3 invitados restantes sería \(h(3)\) y el invitado \(x\) daría 3 apretones de manos, entonces \(h(4)=h(3)+3=3+3=6\).

Si continuamos con este procedimiento podríamos ver que:

Si \(n=k\). Tendríamos \(k\) personas en la fiesta, sea \(x\) uno de los invitados. El número de apretones dados por los \(k-1\) invitados restantes sería \(h(k-1)\) y el invitado \(x\) daría \(k-1\) apretones de manos, entonces \(h(k)=h(k-1)+k-1\).

Entonces, \(h(n)\) puede ser definido recursivamente como:

\[\begin{split}\begin{cases} h(1) = 0 \quad \quad \leftarrow \text{condición inicial.} \\ & \\ h(n) = h(n-1)+n-1 \text{ , para } n\ge 2 \quad \quad\leftarrow \text{relación de recurrencia.} \end{cases}\end{split}\]

Ejemplo 8

Define recursivamente la siguiente sucesión aritmética: \(1,4,7,10,13,\ldots\)

Solución.
Veamos que podemos escribir los números en términos del número anterior:

\[\begin{split}\begin{cases} a(1)=1 \\ & \\ a(2)=4=1+3=a(1)+3 \\ & \\ a(3)=7=4+3=a(2)+3 \\ & \\ a(4)=10=7+3=a(3)+3 \\ \vdots \end{cases}\end{split}\]

Entonces tendríamos lo siguiente:

\[\begin{split}\begin{cases} a(1) = 1 \quad \quad \leftarrow \text{condición inicial.} \\ & \\ a(n) = a(n-1)+3 \text{ , para } n\ge 2 \quad \quad \leftarrow \text{relación de recurrencia.} \end{cases}\end{split}\]

Código para comprobar una igualdad#

El siguiente código nos ayudará a calcular y a comprobar que el lado izquierdo y el lado derecho de la siguiente igualdad son iguales,

\[1+2+3+\ldots+n = \frac{n(n+1)}{2}.\]

Si bien es algo que ya demostramos por inducción, esto nos ayudará a hablar un poco de cómo funciona Python. Por ahora sólo daremos el código, pero un poco más abajo está la explicación paso a paso.

Si queremos que el código sume los números naturales desde \(1\) hasta \(n\), el código sería el siguiente:

n_d = 10
k_d = 0
for i in range(1, n_d + 1):
    k_d = k_d + i

Por otro lado, si queremos que el código utilice la fórmula para sumar los números naturales desde \(1\) hasta \(n\), el código sería el siguiente:

n_i = 10
k_i = n_i * (n_i + 1)//2 

Para comprobar si dos valores son iguales, escribiríamos lo siguiente en Python para obtener una respuesta.

print(k_d == k_i)
True

Usemos el código con otros valores para las variables «n_d» y «n_i».

n_d = 54
k_d = 0
for i in range(1, n_d + 1):
    k_d = k_d + i
n_i = 54
k_i = n_i * (n_i + 1)//2 
print(k_d == k_i)
True

Ahora veamos cuál es el resultado si los valores de las variables «n_d» y «n_i» no fueran los mismos.

n_d = 34
k_d = 0
for i in range(1, n_d + 1):
    k_d = k_d + i
n_i = 45
k_i = n_i * (n_i + 1)//2 
print(k_d == k_i)
False

Explicación del código#

Primero vamos a explicar algunas características del lenguaje de programación Python y luego pasaremos a comentar el funcionamiento de los bloques de código usados en el capítulo.

En estos códigos vimos la declaración de variables. En Python podemos declarar variables con el símbolo =, la sintaxis sería la siguiente.

nombre_de_la_variable = valor_asignado

Python reconoce el tipo de valor que le estamos asignando a la variable. Tres tipos de datos que usan muy frecuentemente en Python son: valores enteros, valores flotantes y valores booleanos.
Los valores enteros como su palabra lo dice son números enteros, los valores flotantes son números que tienen parte decimal (podrían pensarse como los racionales con expansión decimal finita) y los valores booleanos son valores binarios, es decir, pueden ser True o False, si o no, \(0\) o \(1\).

El operador == es un operador de comparación. Compara dos valores y devuelve True si son iguales y False en caso contrario, es decir, que como respuesta nos regresa un valor booleano.

También utilizamos una función incorporada en Python, la función range(arg_1,arg_2) la cual se utiliza para generar una secuencia de números. Esta función requiere que introduzcamos argumentos, estos son valores con los que la función opera. En el caso de esta función, requiere que le demos dos números enteros, el primero es el valor que indica en dónde inicia la secuencia y el segundo es el valor que indica en dónde termina la secuencia, este valor no se incluye. La sintaxis sería,

range(valor_inicial, valor_final)  

Otra función incorporada en Python es la función print(). La función print() en Python es una herramienta esencial para la comunicación entre el programa y nosotros. Su principal función es mostrar información en la consola.

Python utiliza la identación, es decir, la cantidad de espacios o tabulaciones al comienzo de una línea, para indicar la estructura y jerarquía del código. La identación se utiliza para definir bloques de código, como instrucciones condicionales (if, else, elif) y bucles (for, while), así como para definir funciones y clases.

De momento, veamos el ciclo for.
En Python, for es una estructura de control de flujo que se utiliza para iterar sobre una secuencia (como una lista, una tupla, una cadena o un rango numérico) y ejecutar un bloque de código para cada elemento de la secuencia. La sintaxis utilizando la función range() sería la siguiente.

for i in range(1,5):
    # Bloque de código a ejecutar
    # Bloque de código a ejecutar

Los dos puntos en Python se utilizan para indicar el inicio de un bloque de código y se colocan al final de la línea que precede al bloque. La identación posterior determina el alcance y la pertenencia del código al bloque en cuestión. La variable «i» es la variable a la que se le va asignando cada valor dentro de la secuencia, es decir que en la primera iteración \(i = 1\), en la segunda iteración \(i = 2\) y así sucesivamente hasta terminar con la secuencia.
La palabra clave in se utiliza para decirle al ciclo for sobre que secuencia va a iterar.

Finalmente utilizamos dos símbolos para indicar operaciones en Python.

  • Para multiplicar dos valores usaremos el símbolo *.

  • Para realizar una división y que únicamente nos regrese la parte entera de la operación usaremos el símbolo //.

Ahora pasemos a ver cómo funcionan los códigos.

Primero veamos cómo funciona el código para sumar los números naturales desde \(1\) hasta \(n\).

n_d = 10
k_d = 0
for i in range(1, n_d + 1):
    k_d = k_d + i
  1. Primero, creamos la variable «n_d» y le asignamos un valor entero. Después, creamos la variable «k_d» y le asignamos un valor entero. El valor asignado a la variable «n_d» puede ser sustituido por cualquier otro, mientras que el valor asignado a la variable «k_d» no puede ser modificado, si se modifica se vería afectado el resultado final del código.

n_d = 10
k_d = 0
  1. Enseguida iniciamos un ciclo for el cual va a recorrer los valores de la secuencia creada por la función range(), el bloque de código que se reproduce con este ciclo va actualizando el valor de la variable «k_d». En cada iteración la variable «k_d» va acumulando el valor de la variable «i», es decir, en la primera iteración tendríamos que \(k_d = k_d + i = 0 + 1 = 1\), en la segunda iteración tendríamos \(k_d = k_d + i = 1 + 2 = 3\), y así sucesivamente hasta terminar con los números en la secuencia.

for i in range(1, n_d + 1):
    k_d = k_d + i

Pasemos a el código que utiliza la fórmula para calcular la suma de los números naturales desde \(1\) hasta \(n\).

n_i = 10
k_i = n_i * (n_i + 1)//2 
  1. En este código creamos la variable «n_i» y le asignamos un valor.

n_i = 10
  1. Luego creamos la variable «k_i» a la cual le asignamos el valor de la fórmula \(\frac{n(n+1)}{2}\). En Python, podemos asignar como valor a una variable otra variable que esté definida previamente. Como la variable «n_i» fue creada primero entonces podemos usarla en lo que resta de nuestras líneas de código y tomará el valor que se le fue asignado.

k_i = n_i * (n_i + 1)//2 

Por último veamos el código que nos muestra si se cumple la igualdad.

print(k_1 == k_2)

Utilizamos el operado == para comprobar si los valores de las variables «k_d» y «k_i» son iguales, este operador nos regresaría un valor de True o False pero no podemos verlo es por eso que necesitamos de la función print(), esta función nos imprimirá en la consola el resultado.

Ejercicios de práctica#

  1. Usa el principio de inducción para demostrar las siguientes fórmulas:

    • \(\sum_{i=1}^{n}i^2=\frac{n(n+1)(2n+1)}{6}\).

    • \(\sum_{i=1}^{n}i^3=\left( \frac{n(n+1)}{2} \right)^2\).

    • \(\sum_{i=1}^{n}a\cdot r^{i-1} = \frac{a(r^n -1)}{r-1}\).

  2. Usa el principio de inducción para mostrar los siguientes enunciados.

    • Demuestra que para todo número natural \(n\), el número \(11^n + 7^n\) es divisible por \(9\).

    • Demuestra que para todo número natural \(n\), el número \(2^{3n+1} + 5^n\) es divisible por \(7\).

    • Demuestra que para todo número natural \(n\), el número \(3^{3n+1} - 26n - 27\) es divisible por \(13\).

  3. Observa el siguiente patrón:

    \[\begin{align*} \frac{1}{1\cdot 2} &= \frac{1}{2} = 1-\frac{1}{2}\\ \frac{1}{1\cdot 2} + \frac{1}{2\cdot 3} &= \frac{2}{3} = 1-\frac{1}{3}\\ \frac{1}{1\cdot 2} + \frac{1}{2\cdot 3} + \frac{1}{3\cdot 4} &= \frac{3}{4} = 1-\frac{1}{4} \end{align*}\]

    Enuncia qué es lo que está pasando, y luego usa inducción para demostrar que la fórmula siempre es verdadera.

  4. Demuestra la Proposición 1.

  5. Supón que ya hemos demostrado que \(\log(ab)=\log(a)+\log(b)\) para todos los reales \(a,b\) positivos. Demuestra que para todo natural \(n\geq 1\) y reales \(x_1,\ldots,x_n\) positivos que se cumple que

    \[\log(x_1 \cdot \ldots \cdot x_n) = \sum_{i=1}^{n}\log(x_i).\]