Resolver ecuaciones iterativas en Excel: Colebrook con LAMBDA recursiva y REDUCE
Caso excepcional que demuestra el poder de las funciones modernas de Excel en ingeniería. Un ingeniero industrial de casi 70 años, consultor en proyectos térmicos, plantea un problema clásico: calcular el factor de fricción de Colebrook-White, una ecuación implícita que requiere iteración (el resultado aparece a ambos lados de la ecuación). Tradicionalmente se resuelve con VBA o celdas auxiliares encadenadas.
Con LAMBDA recursiva (Leo): implementa la iteración directamente en una fórmula, sin macros ni nombre definido. La LAMBDA se pasa a sí misma como argumento (patrón Y-combinator) y itera hasta alcanzar la precisión deseada:
``
=LET(
n; 4;
D; G9;
Ru; G10;
Rey; G11;
Ffini; G12;
R; LAMBDA(R; x; i;
LET(
y; 1 / (-2LOG10((Ru/D/3,71) + (2,51/(ReyRAIZ(x)))))^2;
SI(i = 1; y; R(R; y; i - 1))
)
);
R(R; Ffini; n)
)
`
Con REDUCE + SECUENCIA (Leo): alternativa más limpia que usa REDUCE para iterar N pasos, aplicando la función de Colebrook en cada paso:
`
=LET(
n; 5;
F; LAMBDA(x;
1 / (-2LOG10((Ru/D/3,71) + (2,51/(ReyRAIZ(x)))))^2
);
REDUCE(F(Ffini); SECUENCIA(n - 1); LAMBDA(a; b; F(a)))
)
`
El autor destaca un insight clave: "LAMBDA dentro de LET" funciona mejor que "LET dentro de LAMBDA" — definir las variables del problema en LET y luego usar LAMBDA` solo para la iteración hace la fórmula mucho más legible.
Varios ingenieros del grupo (petrolero de Venezuela, profesora de estructuras de España) celebran ver Excel aplicado a problemas reales de ingeniería. Hugo lo resume: "¡Qué lindo reto para cerrar 2024!"
El problema: una ecuación que se resuelve a sí misma
Un ingeniero industrial, consultor en proyectos térmicos, trajo a la comunidad un problema que cualquiera del mundo de la ingeniería reconoce: calcular el factor de fricción de Colebrook-White. Es una ecuación implícita, es decir, la incógnita aparece a los dos lados del igual. No se despeja: hay que iterar, dar un valor inicial, calcular, volver a meter el resultado y repetir hasta que se estabilice.
Tradicionalmente esto se resolvía con VBA o con una cadena de celdas auxiliares, una por iteración. Leo demostró que las funciones modernas de Excel lo hacen en una sola celda, sin macros.
Solución 1: LAMBDA recursiva
La primera versión implementa la iteración dentro de la propia fórmula. La LAMBDA se pasa a sí misma como argumento (el patrón conocido como Y-combinator) y va reduciendo un contador hasta terminar:
`` =LET( n; 4; D; G9; Ru; G10; Rey; G11; Ffini; G12; R; LAMBDA(R; x; i; LET( y; 1 / (-2LOG10((Ru/D/3,71) + (2,51/(ReyRAIZ(x)))))^2; SI(i = 1; y; R(R; y; i - 1)) ) ); R(R; Ffini; n) ) ``
n es el número de iteraciones, Ffini el valor inicial y la LAMBDA aplica la fórmula de Colebrook en cada pasada. Cuando el contador llega a 1, devuelve el resultado.
Solución 2: REDUCE + SECUENCIA
Más limpia y, para muchos, más fácil de leer. En vez de recursión, usa REDUCE para iterar N pasos, aplicando la función de Colebrook (definida como LAMBDA con nombre local) en cada uno:
`` =LET( n; 5; F; LAMBDA(x; 1 / (-2LOG10((Ru/D/3,71) + (2,51/(ReyRAIZ(x)))))^2 ); REDUCE(F(Ffini); SECUENCIA(n - 1); LAMBDA(a; b; F(a))) ) ``
REDUCE arranca con la primera aplicación de la función sobre el valor inicial y, por cada elemento de SECUENCIA(n - 1), vuelve a aplicarla sobre el resultado anterior. El número de pasos se controla con n, así que ajustar la precisión es cambiar un número.
El insight: LAMBDA dentro de LET
Leo dejó una lección de estilo que vale para cualquier fórmula compleja: "LAMBDA dentro de LET" funciona mejor que "LET dentro de LAMBDA". Definir las variables del problema (diámetro, rugosidad, Reynolds, valor inicial) en un LET claro y reservar la LAMBDA solo para la parte iterativa hace la fórmula mucho más legible y fácil de mantener.
Funciones clave
LAMBDArecursiva: itera sin macros pasándose a sí misma como argumento.REDUCE+SECUENCIA: la alternativa iterativa limpia, con el número de pasos como parámetro.LET: nombra las variables físicas del problema y separa datos de lógica.LOG10yRAIZ: el corazón matemático de la ecuación de Colebrook.
Conclusión
Ver Excel resolviendo una ecuación implícita de mecánica de fluidos sin una sola línea de VBA emocionó a varios ingenieros del grupo, de un petrolero en Venezuela a una profesora de estructuras en España. Y esa es una de las cosas más bonitas de la comunidad de Influexcel: un problema de ingeniería de verdad, resuelto entre todos, que además enseña un patrón —iterar con REDUCE o con LAMBDA recursiva— aplicable a mil cálculos distintos.
Más contenido de Excel en InflueXcel
- Cuenta clientes y cervezas en Excel 🍺 Caso "La Taberna: El Poney Pisador" (Nivel 1) Tutorial🍺 Noche cerrada en Bree. Frodo, Sam, Merry y Pippin cruzan la puerta de El Poney Pisador huyendo de los Jinetes Negros: la sala está a reven
- SUMAR.SI.CONJUNTO en acción con El Señor de los Anillos 🃏 El 21 de La Comarca TutorialLo que practicamos en este caso: • Contar cartas por palo con CONTAR.SI • Sumar valores con condiciones (SUMAR.SI / SUMAR.SI.CONJUNTO) • Apl
- Reto de Excel: El cumpleaños de Bilbo 🎂 | CONTAR.SI y SUMAR.SI desde cero (Nivel 1) TutorialEn La Comarca se celebra el cumpleaños número 111 de Bilbo Bolsón: cerveza, pasteles, fuegos artificiales… y algún curioso escondido tras el
- ¡Excel PowerQuery Hack! Conexiones con rutas relativas en 10 minutos! Tutorial¿Harto de ajustar las conexiones en PowerQuery cada vez que compartes tu archivo de Excel? 🙄 Convierte las conexiones de PowerQuery con ruta
- Mejora un 90% el rendimiento de Power Query con SQLite TutorialPower Query es una herramienta potente para consolidar, combinar y calcular datos, pero cuando trabajamos con millones de registros y calcul
- Reorganizar tablas mensuales: cruzar por persona buscando en vertical y en horizontal CasoNuevo caso interesante de la comunidad. Juan tenía varias tablas mensuales (a veces más de una en el mismo mes) y quería reorganizarlas por
- Un dato de todas las hojas, escrito una sola vez CasoEsta semana surgió en la comunidad un reto muy habitual cuando un libro tiene muchas hojas: mostrar el valor de la celda B3 de cada hoja, in
- Un índice de hojas que se genera solo: HYPERLINK en rangos desbordados CasoEsta semana surgió en la comunidad un pequeño "expediente X". Un miembro llegó tras ver un vídeo con una idea clara en la cabeza: montar una
- Reformatear un código alfanumérico al teclear: de NN1234567 a NN-12345-67 CasoEsta semana surgió en la comunidad una duda muy práctica: cómo conseguir que al escribir un código tipo NN1234567 (dos letras seguidas de si
- Reclasificación contable: duplicar cada fila con una conversión distinta por columna, en un único bloque CasoInteresante reto contable planteado esta semana por un miembro de la comunidad. Juan parte de una tabla de apuntes contables (rango C7:P10)