Skip to main content

Teorema de Nicómaco


Demostrar el teorema de Nicómaco que afirma que la suma de los cubos de los \(n\) primeros números naturales es igual que el cuadrado de la suma de los \(n\) primeros números naturales; es decir, para todo número natural n se tiene que \[ 1^3 + 2^3 + ... + n^3 = (1 + 2 + ... + n)^2 \]


1. Demostración en lenguaje natural

Es consecuencia de las fórmulas de la suma de los primeros \(n\) números naturales y la de los cubos de los primeros \(n\) números naturales; es decir,

  • Lema 1: \[1 + 2 + ... + n = \dfrac{n(n+1)}{2} \]
  • Lema 2: \[1^3 + 2^3 + ... + n^3 = \dfrac{(n(n+1))^2}{4} \]

En efecto,

\begin{align} 1^3 + 2^3 + ... + n^3 &= \dfrac{(n(n+1))^2}{4} &&\text{[por el Lema 2]} \newline &= \dfrac{2(1 + 2 + ... + n)^2}{4} &&\text{[por el Lema 1]} \newline &= (1 + 2 + ... + n)^2 \end{align}

El Lema 1 es equivalente a \[ 2(1 + 2 + ... + n) = n(n+1) \] que se demuestra por inducción:

Caso base: Para \(n = 0\), la suma es \(0\) y \[ 2·0 = 0(0+1) \]

Paso de inducción: Supongamos la hipótesis de inducción: \[ 2(1 + 2 + ... + n) = n(n+1) \tag{HI} \] Entonces, \begin{align} 2(1 + 2 + ... + n + (n+1)) &= 2(1 + 2 + ... + n) + 2(n+1) \newline &= n(n+1) + 2(n+1) &&\text{[por la HI]} \newline &= (n+2)(n+1) \newline &= (n+1)((n+1)+1) \end{align}

El Lema 2 es equivalente a \[ 4(1^3 + 2^3 + ... + n^3) = (n(n+1))^2 \] que se demuestra por inducción:

Caso base: Para \(n = 0\), la suma es \(0\) y \[ 4·0 = (0(0+1))^2 \] Paso de inducción: Supongamos la hipótesis de inducción: \[ 4(1^3 + 2^3 + ... + n^3) = (n(n+1))^2 \tag{HI} \] Entonces, \begin{align} 4(1^3 + 2^3 + ... + n^3 + (n+1)^3) &= 4(1^3 + 2^3 + ... + n^3) + 4(n+1)^3 \newline &= (n(n+1))^2 + 4(n+1)^3 \newline &= (n+1)^2(n^2 + 4n + 4) \newline &= ((n+1)((n+1)+1))^2 \end{align}

2. Demostraciones con Isabelle/HOL

theory Teorema_de_Nicomaco
imports Main
begin

(* (suma n) es la suma de los primeros números naturales. *)
fun suma :: "nat ⇒ nat" where
  "suma 0 = 0"
| "suma (Suc n) = suma n + Suc n"

(* (sumaCubos n) es la suma de los cubos primeros números naturales. *)
fun sumaCubos :: "nat ⇒ nat" where
  "sumaCubos 0 = 0"
| "sumaCubos (Suc n) = sumaCubos n + (Suc n)^3"

(* Fórmula para la suma *)
lemma "2 * suma n = n^2 + n"
proof (induct n)
  show "2 * suma 0 = 0^2 + 0" by simp
next
  fix n
  assume "2 * suma n = n^2 + n"
  then have "2 * suma (Suc n) = n^2 + n + 2 + 2 * n"
    by simp
  also have "… = (Suc n)^2 + Suc n"
    by (simp add: power2_eq_square)
  finally show "2 * suma (Suc n) = (Suc n)^2 + Suc n"
    by this
qed

(* Demostración automática de la propiedad anterior *)
lemma formula_suma:
  "2 * suma n = n^2 + n"
  by (induct n) (auto simp add: power2_eq_square)

lemma "4 * sumaCubos n = (n^2 + n)^2"
proof (induct n)
  show "4 * sumaCubos 0 = (0^2 + 0)^2"
    by simp
next
  fix n
  assume "4 * sumaCubos n = (n^2 + n)^2"
  then have "4 * sumaCubos (Suc n) = (n^2 + n)^2 + 4 * (Suc n)^3"
    by simp
  then show "4 * sumaCubos (Suc n) = ((Suc n)^2 + Suc n)^2"
  by (simp add: algebra_simps
                power2_eq_square
                power3_eq_cube )
qed

(* Demostración automática de la propiedad anterior *)
lemma formula_sumaCubos:
  "4 * sumaCubos n = (n^2 + n)^2"
  by (induct n) (auto simp add: algebra_simps
                                power2_eq_square
                                power3_eq_cube)

(* Lema auxiliar *)
lemma aux: "4 * (m::nat) = (2 * n)^2 ⟹ m = n^2"
  by (simp add: power2_eq_square)

(* Teorema de Nicómaco *)
theorem teorema_de_Nicomaco:
  "sumaCubos n = (suma n)^2"
  by (simp only: formula_suma formula_sumaCubos aux)

end