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 / (-2*LOG10((Ru/D/3,71) + (2,51/(Rey*RAIZ(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 / (-2*LOG10((Ru/D/3,71) + (2,51/(Rey*RAIZ(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 casos con estas funciones
Más contenido de Excel en InflueXcel
- Descomposición de Cholesky con matrices dinámicas: de VBA a LAMBDA+REDUCE CasoJuan Pablo lanza un reto al grupo: tiene una descomposición de Cholesky resuelta con VBA y quiere saber si se puede hacer con matrices dinám
- Distribución equitativa con LAMBDA, REDUCE y ALEATORIO CasoHéctor plantea la necesidad de repartir un conjunto de líneas (tareas, actividades) entre varios grupos de forma equitativa y aleatoria. Ide
- Combinaciones de N elementos tomados de K en K: fórmulas con REDUCE y LAMBDA CasoSebas comparte un archivo con un listado de 11 elementos y necesita generar todas las combinaciones posibles tomados de 2 en 2 (sin repetici
- Del VBA a una sola fórmula: calcular el RFC mexicano con LET, MAP y expresiones regulares CasoHéctor llega al grupo con un problema que no se ve todos los días: tiene resuelto el cálculo del RFC mexicano, pero lo tiene en VBA, y quier
- Estructurar correctamente LAMBDA con LET y parámetros opcionales CasoNuevo reto de Excel resuelto por la comunidad: un miembro está creando una función LAMBDA personalizada para calcular potencia de bombeo (fó
- Reducir un número a un dígito con LAMBDA recursiva y secuencia intermedia CasoJoan Recasens plantea un reto matemático: reducir un número a un solo dígito sumando sus cifras de forma recursiva, y además guardar toda la
- Funciones personalizadas en Excel: LET, LAMBDA y recursividad TutorialCómo pasar de una fórmula escrita a mano a una función propia que puedes llamar por su nombre en cualquier libro. Los tres vídeos de esta pá
- Validar datos en Excel con máscaras de formato (sin VBA) TutorialValidar que un código, una matrícula o un NIF siguen el formato correcto suele acabar en una macro. No hace falta: con una función personali
- Nueva Función IMPORTTEXT TutorialNueva función IMPORTTEXT en Excel!! https://techcommunity.microsoft.com/blog/microsoft365insiderblog/bring-data-into-excel-with-the-new-impo
- Python en Excel (2024, canal Insider) TutorialPasos iniciales y ejemplos prácticos de cómo sacarle todo el provecho a Python en Excel