Es oficial: no sé cómo seguir adelante.
Con eso no me refiero a que no tenga ya nada que hacer en investigación. No, para nada. Tenemos muchos cálculos hechos y no vacilaremos en utilizarlos. El problema es que una aplicación que estoy desarrollando por mi cuenta me ha llevado a un callejón sin salida.
Explicarlo con detalle es prematuro, ya que mi “Scattering 101”, ese pequeño cursillo que os estoy dando para explicar lo que hago, está todavía a la mitad. Aun así, voy a intentarlo sin meterme en detalles.
Yo me dedico a hacer simulaciones por ordenador. Tomo partículas de cierta forma y tamaño y calculo qué le hará a la luz; de ese modo podemos intentar averiguar qué tipo de partículas hay realmente en la atmósfera.
El problema es complicado. Durante mucho tiempo se supuso que las partículas que nos interesan son esféricas, no porque creamos que lo sean (¡que no lo son!) sino porque los métodos de cálculo solamente permitían ese tipo de geometría. Sí, el chiste de la vaca esférica en el vacío es más serio de lo que pensáis. Poco a poco se fueron desarrollando métodos para partículas no esféricas, y van bastante bien en teoría.
El problema es que los programas informáticos no son perfectos. Siempre hay errores de redondeo. A lo mejor calculas, y el resultado sale 1.99999999 en lugar de 2. ¿Es relevante? Pues a veces sí, a veces no. Buena parte de mis habilidades programadoras consisten precisamente en hacer que los errores de cálculo influyan lo menos posible en el proceso. Tengo que reducir esos errores en lo posible, y además he de saber cuándo parar, ya que aumentar la precisión a lo loco puede conducirte a problemas de memoria o de tiempo de computación.
No siempre es posible, de modo que para partículas de un tamaño lo bastante grande, y lo bastante no-esféricas, los métodos de cálculo dan errores críticos y la cosa se va a TPC. Puedes aliviarlo aumentando la precisión de las variables, pero eso solamente retrasa el problema. Peor aún, a menudo tienes que calcular sumatorias con un número infinito de términos, matrices de dimensión infinita, hacer integrales mediante métodos numéricos más o menos precisos… todo eso significa que, en la práctica, tu maravilloso método computacional basado en una serie de ecuaciones que sobre el papel vas como la seda acabará fallando tarde o temprano.
En la actualidad, el método que uso (el llamado método de la matriz T, ya os lo explicaré otro día) es de lo mejorcito que tenemos. No es suficiente, así que las partículas más grandes y apepinadas (vamos, más alejadas de la esfericidad) quedan fuera de alcance. Para ir más allá, se disponen de diversas aproximaciones que funcionan más o menos bien.
Hace diez años me propuse romper la pana en ese campo. Para ello escogí un método que, en teoría, debería ser capaz de ofrecer resultados para partículas mayores de lo que se podía hasta entonces, y de forma exacta, nada de aproximaciones. Durante estos diez años he estado avanzando a trompicones. Es el típico proyecto ambicioso que, si le dejas, acaba devorándote, y yo no le he dejado, así que he ido dedicando tiempo a intervalos irregulares. No iba a dejar que se resintiese mi docencia o mi investigación habitual.
Quizá me pregunté entonces por qué nadie más lo había intentado, o más bien por qué nadie lo había aplicado a partículas grandes, y mi arrogancia respondió que tú puedes, chavalote. Me he encontrado con muchos problemas para calcular ciertas funciones, y bien que mal he ido sorteándolos, hasta el último.
Resulta que hay una función que se me resiste. Para quien sienta curiosidad, se llama función radial esferoidal prolada de segunda clase, pero los amigos y los enemigos la llamamos simplemente R2. Se trata de una de esas ecuaciones de la que sólo sabermos que cumple una cierta ecuación diferencial. El procedimiento habitual es calcular R2 como una suma infinita de funciones, y como no podemos hacer sumas infinitas nos limitamos a hacer una suma de funciones finita y suponer que el resto de funciones que no sumamos contribuyen muy poco. Es decir, si sumando cien términos ya tenemos el 99.99999% de la solución, nos vale y paramos.
Pues resulta que en el caso de R2 cada sumando de la suma es un producto de dos funciones, una muy pequeña o otra muy grande; tan pequeña es una y tan grande es la otra que los errores de cálculo, por pequeños que sean, acaban pesando tanto que dan al traste con el proceso de cálculo.
Es decir, el procedimiento habitual de cálculo no sirve. Bueno, sí suele servir en otras circusntancias, pero en los casos que a mí me interesan el cálculo se estropea: los términos de la suma, que en teoría se van haciendo cada vez más pequeños, en la práctica tienen un valor que se parece al teórico como un huevo a una castaña.
Por eso nadie usa ese método. Qué listo eres, Arturo.
¿Solución? Tirar la toalla, o bien buscar otra forma de calcular la bendita función R2.
Ocurre aquí algo curioso, y es que las investigaciones en este campo han estado fuertemente influidas por el pasado. Prácticamente todos los investigadores del ramo te remiten al libro de Flammer de 1957, y si te pones fino, al de Meixner de 1954 (que encima está en alemán). ¿Quieres ver cómo se calcula R2? Pues a consultar el Flammer. Alguna cosilla se ha publicado desde entonces con relación a R2, pero muy poco.
No fue hasta los años noventa que algunos matemáticos y físicos se dedicaron a buscar nuevos métodos de cálculo para R2. Buscaron relaciones en las que aparecía R2 y que pudieran utilizarse como procedimientos de cálculo práctico. Irónicamente, los mejores investigadores que conozco del ramo desarrollaron métodos basados en ecuaciones que encontraron… en el libro de Flammer. Alguno, en el tope de la sofisticación, echó mano del libro de Meixner. Yo tengo ambos libros encima de mi mesa, fotocopiados, y los tengo muy manoseados, os lo aseguro.
Bien, pues eché mano de esos nuevos métodos de cálculo, bastantes más complicados que los tradicionales pero oye, funcionan, así que a hacer un esfuerzo extra. He desarrollado mis algoritmos, he redactado las subrutinas y las he comprobado con datos tabulados (que tampoco hay tantos, y eso es un problema a la hora de comprobar tus números). Las buenas noticias es que he hecho avances sustanciales, y puedo hacer cálculos con partículas más alargadas y más grandes de lo que esperaba.
Las malas noticias son que eso no basta. Aunque el progreso ha sido sustancial, apenas supera a los métodos tradicionales, y eso lo convierte en un cañón para matar moscas.
Sirva esto, amigo lector, para que te quites de la cabeza esa idea que nos transmiten las películas del científico que tiene una gran teoría infalible y que funciona a la primera. No, a menudo gastas un montón de tiempo y esfuerzo para nada. En eso la actividad científica se parece a muchas otras.
Es posible que haya gastado neuronas durante una década para nada. Quizá, sencillamente, no haya solución a mi problema. O quizá sí la haya, pero luego aparecerá otro problema. Nada me asegura que el método que estoy siguiendo, bueno en teoría, sirva en un programa de ordenador. Sólo me queda seguir exprimiendo el libro de Flammer, y el de Meixner, a ver si aparece alguna fórmula mágica que pueda usar en mi programa. Lo dudo porque eso ya lo han hecho otros antes que yo, pero quién sabe. Sería como meterse en el laboratorio del doctor Fleming, abrir un cajón y descubrir un nuevo antibiótico contra bacterias multirresistentes.
Por supuesto, también puedo seguir rastreando Google Scholar en busca de una solución mágica. También lo dudo. Los pocos que trabajaban en el tema han parado. Me da la impresión de que se han jubilado, o simplemente han sido más sagaces que yo y supieron saltar del autobús cuando vieron que el camino no llegaba a ninguna parte.
Aunque quizá, solamente quizá…
Acabo de volver a releer un artículo de 2010 que tengo encima de la mesa. Describe cómo calcular esa condenada función R2 mediante un proceso que involucra la resolución de la ecuación diferencial que la define. El algoritmo de resolución es algo que yo nunca he usado, tendría que aprenderlo, evaluar si sería posible implementarlo en mi programa, hacer las pruebas, y es muy posible que luego no sirva para las partículas grandes que tengo en consideración. Tal vez sea demasiado para mí.
Pero ahí está.
Vale, vuelvo a estar en marcha. Oficialmente sigo en punto muerto. Oficiosamente me he unido a la guerrilla. Me voy a pegar algunos tiros a ver qué pasa. Y si luego resulta que tampoco sirve esto, si estoy intentando llegar un puente demasiado lejano…
Me preocuparé de ese puente a su momento.
Y ahora me voy de vacaciones, que también los científicos disfrutamos de la vida al aire libre y tal. Feliz Semana Santa a todos.
Ender Wiggins dice
por curiosidad… ¿en qué lenguaje programas?
Arturo Quirantes dice
Fortran forever! http://elprofedefisica.naukas.com/2015/11/02/programacion-jurasica/