Traducir el blog
Calculadora de números grandes Fibonacci
Trilogía para calcular la sucesión de Fibonacci
- Cálculo iterativo de Fibonacci
- Cómo calcular números Fibonacci con VBA
- Calculando números grandes Fibonacci. Artículo dividido en 2 fragmentos:
Este es el tercer artículo sobre números Fibonacci, donde veremos cómo calcular números grandes, que ningún tipo de datos de Excel o de VBA puede soportar.
Como el artículo es demasiado extenso, lo he dividido en 2 fragmentos. El primer fragmento es este mismo artículo. En el segundo fragmento explicaré cómo he diseñado esta calculadora de la sucesión de Fibonacci para números grandes...
La división de un problema complejo en fragmentos es una solución elegante y eficaz, como veremos en este artículo fragmentado en dos partes...
Divide y vencerás (DYV) es uno de los principales métodos a seguir para diseñar algoritmos complejos. El método está basado en la resolución recursiva de un problema dividiéndolo en dos o más subproblemas de igual o similar tipo. El proceso continúa hasta que éstos llegan a ser lo suficientemente sencillos como para que se resuelvan directamente. Al final, las soluciones a cada uno de los subproblemas se combinan para dar una solución al problema original.
En esta técnica se basan los algoritmos de ordenamiento, de multiplicación de números grandes, de análisis sintácticos y muchos más.
Para calcular números grandes Fibonacci he usado esta misma técnica, dividiendo los números grandes en fragmentos de números más pequeños, que se puedan sumar, y así poder vencer los límites de los tipos de datos en VBA.
Límites de los tipos numéricos
En los dos primeros artículos hemos comprobado que el límite es de 15 cifras significativas, para un número dentro de una celda de Excel, y que en VBA el límite es de 29 cifras significativas, para el subtipo Decimal del tipo Variant.
Ahora definiremos tipos de datos personalizados con matrices de números fragmentados, para alcanzar más de 29 cifras significativas con lo que, por ejemplo, podremos calcular el número de Fibonacci:
Fibonacci(518) - Wolfram|Alpha (wolframalpha.com) =
805587367387474993557712643417250666635155463347703764181824844653814375958479581952978891769754733107167209
Que ni siquiera cabe en una línea de texto, de unos 80 caracteres, pues contiene 108 cifras significativas.
En esta imagen se muestra la sucesión de Fibonacci desde Fib(492) hasta Fib(518), todos ellos números de más de 100 cifras significativas.
La pregunta es: ¿Cómo puedo hacer cálculos con números tan grandes?
¡Si no hay ningún tipo de dato numérico, ni en Excel ni en VBA, que admita tantas cifras!
Cómo sobrepasar los límites de cálculo
Lo que me encanta de los ordenadores es que obedecen sin rechistar a
cualquier orden que se les dicte mediante un programa.
No como los humanos que, aún dándoles la receta de cocina, no saben cocinar... (me pongo yo mismo como ejemplo)
Siempre que se respeten las reglas del lenguaje de programación, se pueden obtener resultados de salida que a priori son imposibles.
Para demostrarlo vamos a saltarnos las barreras de los límites de los tipos de datos numéricos definidos por el lenguaje VBA.
¿Te imaginas hacer cálculos con números grandes antes de la invención del ordenador?
¿Te imaginas a mi nieto aprendiendo a calcular con un ábaco?
Enlace a unos cuantos artículos sobre cálculos manuales, antes de que se inventara el cálculo automático:Calculadora humana - Wikipedia, la enciclopedia libre
Los inicios de los cálculos computacionales – The Smoke Sellers
Instrumentos de cálculo en la historia - Ciencia (redestrategia.com)
Descarga la calculadora de Fibonacci
Descarga esta calculadora de Fibonacci para números grandes, con la hoja protegida sin contraseña, desde cualquiera de estos enlaces:
- Microsoft OneDrive: Calculando números grandes Fibonacci - PW1.xlsm
- Sites Google Drive: Calculando números grandes Fibonacci - PW1.xlsm
Abre el archivo y habilita la edición y las macros para poder hacer cálculos con números grandes de la sucesión de Fibonacci.
Características de la calculadora
Para calcular un número de Fibonacci se escribe en la celda E1 y se hace
clic en la imagen con la espiral de Fibonacci. Haciendo clic en la papelera
se borran los números.
Características de la calculadora:
- Calcula hasta el número Fib(156790), debido al límite máximo de 32767 cifras guardadas como texto en una celda.
- Visualiza un único número si es mayor que Fib(4901), debido al límite máximo de 1024 caracteres visualizados en una celda.
- Visualiza todos los números si el Fibonacci máximo a calcular es el número Fib(4901).
- Permite arrancar, pausar y abortar el cálculo.
- Muestra el progreso del cálculo en la barra de estado.
- Mide los tiempos de cálculo, de transformación y de carga en la hoja.
- Avisa si se produce un error de memoria o de desbordamiento.
- Borra datos del cálculo manual y automáticamente.
- Imprime los números calculados. A partir del Fib(14605) es mejor usar copiar y pegar, pues se imprimen parcialmente.
- Protege la hoja de cálculo sin contraseña.
Vídeo: Números grandes Fibonacci
En este vídeo presento la plantilla que has descargado y que permite calcular números grandes de la sucesión de Fibonacci, de mucho más que 29 cifras significativas:
Otros algoritmos Fibonacci
El 10 de diciembre publiqué el segundo artículo de esta trilogía, y avisé de su publicación en este enlace a LinkedIn, cuando ya había programado la parte del algoritmo que calcula números grandes de Fibonacci, usando el método divide y vencerás con las matrices de tipo Long fragmentadas, que explicaré en el segundo fragmento de este artículo.
Un comentario de D. Tello, Ph.D. me puso sobre aviso de que Rick Rothstein, excelente Microsoft MVP en Excel, había escrito un código para Fibonacci usando VBA parecido al mío. La sorpresa fue que el mismísimo Rick Rothstein me contestó:
Hace un tiempo publiqué una calculadora de Fibonacci "infinita" que un tal Eric W aceleró ** drásticamente ** usando mi algoritmo, pero intercambiando las manipulaciones de cadenas con manipulaciones de arrays binarias.
Y adjuntaba el algoritmo que Eric W había publicado, con matrices del tipo Byte, en este foro: MrExcel.com - Fibonacci - Eric W
como mejora y en contestación al algoritmo de Rick Rothstein con cadenas del tipo String, de su comentario en el foro: MrExcel.com - Fibonacci - Rick Rothstein
Probando en mi maravillosa tableta (con 2 GB de RAM) a calcular el Fib(99999):
- Con el algoritmo de Eric W tarda unos 489 segundos, más de 8 minutos.
- Con mi algoritmo, incluido en la descarga, tarda unos 204 segundos, menos de 3,5 minutos.
- ¡La mitad de tiempo del algoritmo de Eric W! ¡Y eso que mi calculadora incluye otras funcionalidades, además del cálculo propiamente dicho!
Me gustaría conocer los tiempos de cálculo en otras máquinas...
Y para eso necesito tus comentarios con tus resultados...
Diseño de la calculadora Fibonacci
Dejo pendiente el segundo fragmento de este artículo, con el tutorial de cómo se ha diseñado esta calculadora Fibonacci, que pronto publicaré...
Mi lista de blogs
-
Crea desde Cero tu Propio Gestor de Tareas en Excel - Hace unos días buscaba un software para gestionar mis tareas. Prioridades, responsables, fecha de inicio, fecha de fin, indicadores de […] The post Crea ...Hace 12 horas
-
GENERAR ORGANIGRAMA CON AZURE FUNCTIONS, AUTOMATE Y POWER APPS - Hola a todos, Este es uno de esos post que me gusta escribir porque la herramienta sobre que voy a hablar me ha encantado crearla. … La entrada GENERAR ...Hace 22 horas
-
ConBeamU and Strand7 check update - Results of the continuous beam spreadsheet were last checked against Strand7 results 10 years ago. I have now updated this check with the latest version (4...Hace 4 días
-
Un número como diferencia entre potencias (2) - En la anterior entrada sobre este tema se usó la descomposición en factores primos de un número. Esto supone declarar los vectores *primo()* y *expo()* d...Hace 5 días
-
Tu agente secreto para entender las finanzas del negocio - Descubre cómo crear de forma sencilla y práctica un agente de IA que actúe como «agente secreto”, Interpretando los números de tu negocio y ayudándote a ...Hace 1 semana
-
Get Ready for an Excellent Holiday Season - Happy Thanksgiving, if you’re celebrating tomorrow! And then it’s Black Friday, so get your shopping list spreadsheet ready for that! Note: For some produc...Hace 1 semana
-
Nuevo mapa de municipios - Domadores - 🔝*To translate this blog post to your language, select it in the top left Google box. * *A partir de ahora aprenderás a domar fieras 🐈⬛ 🐘 🐯 🦁 🐍...Hace 2 semanas
-
Excel de Diseño de Mezclas de Concreto Método ACI 211 (Dosificación de hormigón) - El método ACI 211, desarrollado por el Comité 211 del American Concrete Institute, es uno de los procedimientos más utilizados a nivel internacional para e...Hace 2 semanas
-
How to Use the COPILOT Function in Microsoft Excel - Wondering if you could use the mighty Copilot AI from Microsoft in your Excel workbooks to think and work faster? I’ve got you covered! Read on to learn ho...Hace 5 semanas
-
Mostrar datos de dos celdas en un cuadro de texto de Microsoft Excel - En Microsoft Excel es posible vincular el contenido de una celda a un cuadro de texto o a una forma. Vincular contenido de cuadro de texto a valor de cel...Hace 5 semanas
-
El error #¡NULO! y el operador de intersección - En este vídeo te muestro la utilidad del operador de intersección (el espacio) para hacer búsquedas en tablas de doble entrada. Te dejo una descripción… ...Hace 5 semanas
-
Who is my boss’s boss? [Data Analytics Challenge – 001] - Let’s try something different. I will share a data analytics challenge here. Post your solutions in the comments. Our first challenge involves Employee D...Hace 4 meses
-
🛠️ Error Formula.Firewall en Power Query: ¿Qué es y cómo solucionarlo? - Power Query es una herramienta poderosa para transformar y combinar datos en Excel o Power BI. Sin embargo, en algunos escenarios comunes, puedes encontrar...Hace 4 meses
-
Cómo hacer gráficos en Excel - Excel es una de las herramientas más potentes y versátiles para el análisis y la presentación de datos. Los gráficos en Excel no solo ayudan a visualizar...Hace 8 meses
-
Fin - Llevo tiempo pensando esta entrada y no sé que decir. Analisis y Decisión nació en 2008 y no ... Leer más »Hace 10 meses
-
Análisis DAFO (FODA, DOFA) las decisiones con Excel - Para conocer la situación de una empresa, proyecto o persona, recurrimos al análisis DAFO (FODA, DOFA) en la toma de decisiones con Excel. El los años sese...Hace 1 año
-
Color, Conditions, and Copilot: How to save time using conditional formatting with Copilot in Excel - Hi everyone, this is part 11 in a series of posts to show you some of the things that are possible to do with Copilot in Excel. *What is conditional f...Hace 1 año
-
How To Predict Bearing Life With Excel - When you work in mechanical engineering, understanding the reliability and performance of bearings under various conditions is crucial. Bearings are the co...Hace 1 año
-
TikTok’s search evolution - 2 in 5 Americans use TikTok as a search engine. Nearly 1 in 10 Gen Zers are more likely to rely on TikTok than Google as a search engine. More than half of...Hace 1 año
-
Unblocking and Enabling Macros - When Windows detects that a file has come from a computer other than the one you're using, it marks the file as coming from the web, and blocks the file....Hace 2 años
-
Office Scripts: Trabajando con Tablas - [image: Office Scripts: Trabajando con Tablas] Me he dado cuenta que últimamente solo escribo de lenguaje M (es mi pequeño vicio)... pero hay que liberar l...Hace 2 años
-
Hello world! - [image: Hello world!] Welcome to WordPress. This is your first post. Edit or delete it, then start writing!Hace 3 años
-
La importancia de saber mecanografía en 2022 - [image: Resultado de imagen de mecanografía viñeta escribiendo a máquina] Según la RAE, la mecanografía es el arte de escribir a máquina. Hace unos cuantos...Hace 3 años
-
London Excel Meetup Workbooks - The workbooks used in my presentation on “Analytical and Interactive Dashboards in Excel” at the London Excel Meetup, September 3, 2020Hace 5 años
-
Cálculo de jornada que termina al día siguiente (Power Query) y despedida - [image: Cálculo de jornada que termina al día siguiente (Power Query) y despedida] Este blog se ha ocupado de cálculos de tiempo con bastante intensidad, c...Hace 5 años
-
International Keyboard Shortcut Day 2019 - The first Wednesday of every November is International Keyboard Shortcut Day. This Wednesday, people from all over the world will become far less efficient...Hace 6 años
-
Welcome, Prashanth! - Last March, I shared that we were starting to look for a new CEO for Stack Overflow. We were looking for that rare combination of someone who… Read more "W...Hace 6 años
-
Visualize parts and whole - combine clustered column and stacked column charts - *Inga: Disa what?* *Igor: -ppeared.* by The FrankensTeam ------------------------------ Really it was 3 years ago we posted our last article? *Freddy: Th...Hace 6 años
-
Salvador Sostres, analfabeto profesional - Los nuevos tiempos traen nuevas profesiones. Internet, además, ha revolucionado el mundo del periodismo y la palabra escrita. Adaptarse o morir, ese es el ...Hace 7 años
-
Planificación de compras - Realizar una lista con los productos que necesitamos y que formarán parte de nuestra cesta de la compra nos ayuda a *encontrar la combinación de bienes p...Hace 13 años
-
-
-
-
-
-
-
-
-
No Response to "Calculadora de números grandes Fibonacci"
Leave A Reply
Comenta este artículo, critícalo o avisa si detectas algún error que haya que corregir.