Decimales del número e por Taylor

Tanto Jhon von Neumann como Steve Wozniack hicieron el ejercicio de encontrar miles de decimales del número e, en el ENIAC (uno de los primeros ordenadores de propósito general) y en un Apple II, respectivamente. Si personas de tan elevado tamaño intelectual consideraron oportuno hacerlo, ¿quién soy yo para contrariarlos? Así que, salvando las distancias, me he decidido a hacerlo.

El método empleado han sido las series de Taylor. Para el mismo, se requiere calcular el factorial, la siguiente función recursiva lo calcula para el número recibido como parámetro:

function factorial(a) {
  if (a === 0) {
      return 1;
  }else{
      return a * factorial(a - 1);
  }
}

El siguiente código Javascript calcula, a partir del polinomio de Taylor1 de grado 20 en torno al punto a=0, es decir, e1, unos cuantos decimales:

function factorial(a) {
  if (a === 0) {
      return 1;
  }else{
      return a * factorial(a - 1);
  }
}

var e = 1;

for (i = 1; i <= 19; i++) {
   e = e + 1/factorial(i);
}
console.log(e);

El lector puede copiar el código y ejecutarlo en el mismo navegador con el que está leyendo este artículo, presionando F12 y accediendo a la consola:

Decimales de e en Javascript por Taylor

Decimales de e en Javascript por Taylor. Ejecutado en Firefox.

Por culpa del uso de la coma flotante que hace Javascript (ya incluido en el microprocesador), no podemos sacar más decimales, pues el resultado será redondeado al que vemos en la imagen. Para salvar este inconveniente, en PHP existe la librería BC Math, que nos permite trabajar con números de – casi – cualquier tamaño y precisión. Para que después digan que es un lenguaje de juguete… Éste es el código:

<?php

function factorial($a) {
  if ($a === 0) {
      return 1;
  }else{
      return bcmul($a, factorial($a - 1), 3000);
  }
}

$e = '2';

for ($i = 2; $i <= 1000; $i++) {
   $e = bcadd($e, bcdiv('1', factorial($i), 3000), 3000);
}
echo ($e);

Con el que se obtienen 2572 dígitos correctos:

2.71828182845904523536028747135266249775724709369995957496696762772407663035354759457138217852516642742746639193200305992181741359662904357290033429526059563073813232862794349076323382988075319525101901157383418793070215408914993488416750924476146066808226480016847741185374234544243710753907774499206955170276183860626133138458300075204493382656029760673711320070932870912744374704723069697720931014169283681902551510865746377211125238978442505695369677078544996996794686445490598793163688923009879312773617821542499922957635148220826989519366803318252886939849646510582093923982948879332036250944311730123819706841614039701983767932068328237646480429531180232878250981945581530175671736133206981125099618188159304169035159888851934580727386673858942287922849989208680582574927961048419844436346324496848756023362482704197862320900216099023530436994184914631409343173814364054625315209618369088870701676839642437814059271456354906130310720851038375051011574770417189861068739696552126715468895703503540212340784981933432106817012100562788023519303322474501585390473041995777709350366041699732972508868769664035557071622684471625607988265178713419512466520103059212366771943252786753985589448969709640975459185695638023637016211204774272283648961342251644507818244235294863637214174023889344124796357437026375529444833799801612549227850925778256209262264832627793338656648162772516401910590049164499828931505660472580277863186415519565324425869829469593080191529872117255634754639644791014590409058629849679128740687050489585867174798546677575732056812884592054133405392200011378630094556068816674001698420558040336379537645203040243225661352783695117788386387443966253224985065499588623428189970773327617178392803494650143455889707194258639877275471096295374152111513683506275260232648472870392076431005958411661205452970302364725492966693811513732275364509888903136020572481765851180630364428123149655070475102544650117272115551948668508003685322818315219600373562527944951582841882947876108526398139559900673764829224437528718462457803619298197139914756448826260390338144182326251509748279877799643730899703888677822713836057729788241256119071766394650706330452795466185509666618566470971134447401607046262156807174818778443714369882185596709591025968620023537185887485696522000503117343920732113908032936344797273559552773490717837934216370120500545132638354400018632399149070547977805669785335804896690629511943247309958765523681285904138324116072260299833053537087613893963917795745401613722361878936526053815584158718692553860616477983402543512843961294603529133259

Aquí está el link que ejecuta este código:

https://www.victoriglesias.net/e.php

Al seguir el link, el lector con interés en el tema descubrirá que proporciona más decimales, pero, como dije, sólo los primeros 2572 son correctos, pues el error máximo cometido es:

+-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000695151928186513...

Supongamos que sabemos que e está por debajo de 3, pero no podemos concretar más, el error, por el residuo del teorema de Taylor, sería 3/(i + 1)! No por acotar mejor, por ejemplo 2.8, dejaríamos de obtener menos posiciones a 0 hasta obtener los primeros decimales del error, aunque sí ajustaríamos mejor el margen de error.

Si parece insuficiente y se desea mayor precisión, bastará con incrementar el tope de la variable i del bucle a más de 1000. Eso sí, si nos tomamos este cálculo en serio, sería aconsejable optimizar previamente la función recursiva.

En definitiva, aunque me quedé muy lejos del récord mundial ;-), fue entretenido hacerlo y espero que al lector le parezca interesante también o, por lo menos, curioso.


1 Se llama serie de Maclaurin el caso concreto de Taylor a=0

¿Por qué lo llaman logaritmo neperiano cuando quieren decir natural?

Normalmente denominamos “neperiano” al logaritmo de base e, pero viendo un vídeo en inglés escuché que se referían al mismo como “natural”, entonces me puse a indagar cual de las dos formas es correcta. El resultado fue que “natural” sería más correcto, pero entonces, ¿por qué lo llamamos neperiano? Voy a explicar en esta breve entrada lo que averigüé.

Leyenda de un libro de matemáticas de 3º de BUP

Leyenda de mi libro (I de II) de matemáticas de 3º de BUP

John Napier, un matemático escocés que vivió entre 1550 y 1617, fue el primero en definir los logaritmos. Su trabajo, como era lo usual en la época, lo publicó en latín, y fue otro matemático quien, tiempo después, traduciría la obra al inglés. En una de las ediciones, se incluyó un apéndice con una tabla de logaritmos, y en la misma aparecen algunos valores que se obtienen usando la base 2.718, pero sin hacer ninguna mención en especial a la misma. Esta base, por cierto, no aparece en la obra original de Napier.

Logarithmorum, de John Napier

Las largas noches de invierno en el norte de Europa dan para mucho.

No obstante, en aquel entonces, el número e todavía no había sido formalmente definido. Probablemente, el autor de esta tabla, que se cree que fue William Oughtred, tuvo nociones acerca de e, al igual que otros matemáticos de la época, pero al descubrimiento y su formalización todavía le faltaba entorno a un siglo. En todo caso, si bien a John Napier se le reconoce el mérito del logaritmo como su gran aportación a las matemáticas, no sería justo otorgarle el mérito de uno de los números más importantes.

En definitiva, parece que los anglosajones están más acertados que nosotros a la hora de llamar “natural” al logaritmo en base e y que somos nosotros quienes andamos algo equivocados al otorgarle a John Napier más méritos de los que le corresponden.

Álgebra lineal y sus aplicaciones

Ha llegado a mis manos un libro de matemáticas que merece una mención: Álgebra lineal y sus aplicaciones, de David C. Lay. Se trata de un vasto tratado sobre el álgebra lineal que profundiza en todos los puntos, de manera que no tan sólo es una excelente herramienta para aprender (que además cuenta con una gran cantidad de ejercicios resueltos) sino que también es una excelente obra de consulta.

Aunque suficiente motivo, no es éste el que me impulsa a mencionarlo en este espacio sino el hecho de ser el primer libro de matemáticas de nivel universitario que me encuentro que no usa expresiones como “es evidente que” o “resulta obvio” para eludir dar explicaciones detalladas. En mi opinión, no consultamos libros sobre temas que nos resultan obvios y evidentes; además, me parece que la función de un libro de carácter didáctico es transmitir al lector los conocimientos de su autor, no demostrar cuan por encima de la materia tratada está su capacidad; esto ya se le presupone.

Álgebra lineal y sus aplicaciones 2ª edicion David C. Lay

Esta es la segunda edición que conseguí a través de la biblioteca de la UOC pero ya va por la quinta edición.

David C. Lay, profesor catedrático e investigador de matemáticas, ha hecho una excelente obra para estudiantes de ingeniería, economía y, en general, de cualquier carrera que incluya las matemáticas en su programa.


Editado el 26/12/2017:

Estas navidades mi padre me lo ha regalado ^^  Aparentemente, el principal aporte de la quinta edición es que el 25% de los ejercicios son nuevos o están actualizados, principalmente ejercicios de computación, desaparece el CD (obsoleto) y la tapa es aun más blanda que la de la segunda edición (algo que compromete el futuro de un libro grueso de más de 500 páginas).

Un número real elevado a un complejo

En este tercer y último artículo contesto la pregunta con la que finalizaba el segundo: ¿cómo calcular la exponenciación de un número real a uno complejo?

Si tenemos en cuenta que para cualquier número real, a, se cumple que a = eln(a), por la misma definición de logaritmo, tenemos:

Número real elevado a complejoHasta ahora, en todos los casos que hemos visto, la base era e, y en este artículo hemos generalizado a cualquier base real. Generalizando aun más, la operación exponenciación, ab , para cualquier valor de a y b, puede calcularse mediante la operación:

Exponenciación generalizada


Como anécdota, y desviándome de la temática de estos tres artículos, está el hecho de que a partir de la igualdad a = eln(a) se deduce la derivada de las funciones exponenciales que en el Bachillerato tuvimos que memorizar, pero veamos de dónde viene: Derivada de la función exponencial 1Por la regla de la cadena, tenemos que la función exterior f(x) es ex, mientras que la interior g(x) es ln(a)x, cuya derivada g'(x) = ln(a) pues podemos y debemos ver ln(a) como un número real cualquiera. Por lo tanto, la derivada es:

Derivada de la función exponencial 2La parte derecha de la ecuación es ax pues habíamos establecido que a = eln(a), por lo que finalmente tenemos la receta que nos dieron para memorizar:
Derivada de la función exponencial 3

e elevado a un número complejo

En el artículo anterior vimos qué significa y cómo se soluciona la exponenciación de e a un número complejo imaginario puro.

Dejé pendiente cómo se realizaría el cálculo en el caso de que el número complejo del exponente tuviera también parte real, es decir, si no es un imaginario puro. En el presente artículo doy la respuesta y ésta es muy sencilla pues resulta que e elevado a un número complejo tiene las mismas propiedades que la exponenciación de cualquier otro tipo de números. Dado el número complejo b + ci tenemos que:

e elevado a b mas ci

En el artículo anterior ya vimos el cálculo de eci. Por lo tanto resulta:

e elevado a b mas ci sin cos

Veamos el caso práctico z = 2 + πi, ez sería:

e elevado a dos mas pi i

Realmente, con un número imaginario puro estamos haciendo lo mismo. En el ejemplo del artículo anterior, la parte real es 0, y por lo tanto sería:

e elevado a pi i

Como curiosidad, acabamos de trabajar con los números más importantes en matemáticas:

  • El cero. Elemento neutro de la suma.
  • El uno. Elemento neutro de la multiplicación.
  • El número imaginario i.
  • Pi, la relación entre la longitud de una circunferencia y su diámetro.
  • e, el límite de una sucesión:
    Definicion de e

En el anterior artículo vimos la función exponencial en series de Taylor y al ser e = e1, podemos también definir e como el sumatorio de una serie:

e como suma de una serie

E ora, ancora piu’ difficile! (Aunque no mucho más) ¿Cómo hacer el cálculo si la base es cualquier número real en vez de e? Eso lo veremos más adelante.

e elevado a un número imaginario puro

¿Qué significa elevar e a un número complejo? ¡Hasta los autores de Los Simpson lo saben!

Calculan y resuelven eπ*i:

e elevado a pi por i

No por aparecer en Los Simpson es evidente. Siendo b un número natural, sabemos que ab consiste en multiplicar a b veces. También sabemos que cuando b es un entero negativo la definición es otra, es el inverso de ab:

a elevado a menos b

Y que cuando el exponente es un racional, n/b, se trata de la b-enésima raíz de an:

an/b = b√an

Pero ninguna de estas tres definiciones tienen sentido en la exponenciación de e a un número complejo. Para que lo tenga hemos de tener en cuenta las series de Taylor, según las cuales sabemos que:

Taylor e elevado a x

El signo de admiración expresa el factorial. Cuanto más alargamos la serie mayor precisión decimal obtenemos.

En este caso, cuando nos dicen que x es cualquier número, nos lo dicen en un sentido amplio, puede ser también el complejo xi, y por lo tanto:

Taylor e elevado a x por iEsta agrupación final de los pares a la izquierda y los impares a la derecha no es para pasar el rato, pues como por Taylor otra vez sabemos que:

Taylor seno

Y también:

Taylor coseno

Si reemplazamos las infinitas sumas que resultan en el seno y el coseno nos queda la famosa identidad de Euler:

Formula de EulerPor lo tanto, podemos ver la exponenciación de e a un número complejo z, imaginario puro, ez,como las infinitas sumas que se pueden agrupar entre las que forman el seno y las del coseno. Hay que tener en cuenta que x expresa un ángulo en radianes. Aunque la la circunferencia completa está comprendida entre 0 y 2Π radianes, se puede calcular perfectamente el seno y el coseno de cualquier ángulo x > 2Π pues representa x mod 2Π giros.

Volviendo a la fórmula de Los Simpson, como cos(Π) = -1 y sen(Π) = 0 tenemos:

Calculo de e elevado a pi por iEn un artículo anterior vimos las potencias de la unidad imaginaria y en este hemos visto la exponenciación de e a un número imaginario puro, aquel complejo que sólo tiene parte imaginaria. ¿Qué pasaría si también tuviera parte real, por ejemplo 1 + Πi? Eso lo dejaré para un próximo artículo.