Globo adimensional. Análisis utilitario de la dimensión mágica


El artículo recientemente publicado sobre Habré Dynamics sobre el vuelo vertical de un avión más ligero que el aire me impulsó a escribir este breve artículo. Quería escribir un comentario, pero rápidamente se convirtió en algo más y, al parecer, más útil.

El artículo original proporciona un ejemplo de cálculo de la dinámica de un globo o un globo en la atmósfera. En este caso, se tienen en cuenta tanto la resistencia al aire como los gradientes de la densidad y la temperatura de la atmósfera, de modo que el problema se reduce a una ecuación diferencial no trivial, que puede resolverse con éxito numéricamente utilizando el lenguaje Python. Todo está bien en el artículo: la pelota despegó, se detuvo donde fue necesario, obtuvimos la altura máxima y el tiempo de subida. Me llevó lanzar otra bola, digamos más, cargarla más a fondo o cambiar hidrógeno a helio, no hay problema, cambiar los parámetros en el programa y calcular todo de nuevo. El programa es comprensible, lineal, funciona, entonces, ¿qué se puede mejorar aquí si el modelo no es complicado?

Puede hacer que el modelo y los cálculos se vuelvan universalmente útiles, no para una pelota en particular, sino para una amplia gama de tareas. Es posible asegurar una precisión de cálculo óptima en la integración numérica de la ecuación diferencial. Puede eliminar la necesidad de establecer manualmente los límites de integración y el paso al calcular en una amplia gama de parámetros. Finalmente, puedes contar mucho sobre la dinámica del vuelo de nuestra pelota sin una solución numérica. Y para todo esto, hay un truco de larga data, verdadero y confiable, una vez obligatorio para cualquier cálculo en las computadoras y antes de que aparezcan, y ahora opcional y a menudo relacionado con la magia y el arte: llevar las ecuaciones a una forma sin dimensiones y escalas propias . Usaré el problema de la aeronáutica como un ejemplo y mostraré cómo el análisis del problema se vuelve más significativo y elegante al usar esta técnica. Y luego explicaré por qué esto puede ser importante para los programadores y por qué este artículo terminó en el centro "Programación funcional".

La esencia de reducir las ecuaciones a sus propias escalas es encontrar e introducir tales unidades de medida de tiempo, distancias, masas, corrientes y otras variables dimensionales en las que la tarea toma la forma más simple y elegante. Dichas unidades se denominan escalas características o propias del problema. Al mismo tiempo, el número de parámetros que afectan su solución se reduce significativamente, y si tiene la suerte de encontrar una solución similar, ¡entonces los parámetros pueden desaparecer por completo!

Por lo general, uno se familiariza con esta técnica cuando estudian la dinámica de un oscilador armónico, llevando la ecuación de movimiento a una forma canónica. De hecho, cualquiera que sea el oscilador (grande o pequeño, baja o alta frecuencia, mecánico o electromagnético), si mide el tiempo no en segundos, sino en períodos de oscilaciones libres, y la amplitud no en metros, sino, por ejemplo, en la magnitud de la desviación inicial , entonces la ecuación para cualquier oscilador lineal tendrá la misma forma:

x + 2 z e t a x + x = 0 

Es suficiente estudiar las propiedades de las soluciones de esta ecuación para saber todo acerca de todos los osciladores armónicos de fricción viscosa. Sin fricción, los parámetros desaparecen por completo en el problema, y ​​obtenemos, como solución, una sinusoide ejemplar. Sin embargo, otras sinusoides, hasta un simple cambio lineal de coordenadas, son absolutamente idénticas, por lo que no tiene sentido analizarlas individualmente.

Este es también el caso cuando se analizan curvas de segundo orden. Después de examinar la parábola, la hipérbola o la elipse en su forma canónica (más compacta), hemos aprendido todas sus propiedades notables. Después de eso, este conocimiento se extiende a cualquier cuadric no trivial. Además, se utiliza la misma técnica en el análisis de ecuaciones de matemáticas de segundo orden (en derivadas parciales).

Llevar el problema a una forma adimensional en sus propias escalas en física corresponde a la búsqueda de la forma canónica o algún patrón en la programación. Y, afortunadamente, se puede expresar con un algoritmo completamente formal:
  1. Introducimos factores de escala formales para variables;
  2. dividimos toda la ecuación por cualquier cantidad que tenga la dimensión de sus términos;
  3. de los complejos adimensionales resultantes, incluidos los factores de escala, elegimos tantos factores como tenemos y los equiparamos a la unidad;
  4. resolvemos las ecuaciones resultantes expresando factores de escala en términos de los parámetros del problema, y ​​usamos los complejos restantes como criterios de similitud.

Como resultado, obtenemos ecuaciones en forma canónica, los valores propios del problema y también criterios de similitud para generalizar soluciones a sistemas físicamente similares. Cuantas más escalas pueda ingresar (usando, por ejemplo, simetría), más concisa será la ecuación de movimiento y menos parámetros de control permanecerán en el problema. El verdadero tesoro para el investigador es la situación en la que es posible excluir todos los parámetros del problema y presentar todas sus posibles soluciones en una curva. Dichas soluciones se llaman autosimilares y simplifican enormemente la vida, convirtiendo las ecuaciones diferenciales parciales en ecuaciones diferenciales ordinarias, o incluso en ecuaciones algebraicas. Los pasos segundo y tercero del algoritmo anterior requieren selección y razonamiento, son los menos formales, pero incluso si utiliza el método de fuerza bruta, en esta etapa puede obtener una comprensión sistemática muy profunda del problema.

Pasemos a la ecuación de movimiento original dada en el artículo sobre aviones, y muestremos con su ejemplo cómo se puede transformar en una forma sin dimensiones en sus propias escalas. La ecuación tiene la forma:

m fracd2hdt2=mg+gW rho0ebh frac12cS rho0ebh operatornamesigno left( fracdhdt right) left( fracdhdt right)2,

con condiciones iniciales

h(0)=h(0)=0.

Aqui h - la altura de la pelota, m - masa de todo el avión con carga, g - aceleración de la gravedad, W - el volumen de gas en la pelota, c - coeficiente de arrastre, S - área de resistencia característica, ρ0 - densidad del aire a altura cero, b - coeficiente en la distribución de Boltzmann.

Primer paso Introducimos las escalas formales de tiempo y distancias:

h=h0y, quadt=t0 tau qquad(1)

y reescribe la ecuación de movimiento usando trazos para denotar las derivadas:

m frach0t20y=mg+gW rho0ebh0y left[1 fraccS2Wg frach20t20 operatornamesign(y)(y)2 right].$

Las condiciones iniciales en nuestro caso son triviales, por lo que pueden omitirse, pero en general, también debemos reescribirlas.

El segundo paso, de hecho, es la falta de medida de la ecuación. Todos los términos tienen la dimensión de la fuerza y ​​somos libres de dividirlos en cualquier fuerza. Generalmente dividido por la fuerza de inercia, por un factor en la segunda derivada de la distancia. En este caso, como parámetros del problema, generalmente se obtienen criterios bien conocidos para la similitud dinámica, como los números de Reynolds o Euler. Pero en nuestra tarea, asignamos todas las fuerzas incluidas en la tarea a la gravedad mg y por eso Estamos interesados ​​principalmente en la posición de equilibrio estático: la altura máxima de la pelota a una capacidad de carga dada y el tiempo de transición hacia ella. Y el equilibrio estático no depende de las propiedades de inercia del sistema, sino que depende directamente de la gravedad. Entonces, dividimos y reducimos lo que es posible:

 frach0gt20y=1+ fracW rho0mebh0y left[1 fraccS2Wg frach20t20 operatornamesign(y)(y)2 right].

Todo, la ecuación no tiene dimensión, ahora todas las variables y todos los términos en ella son solo números. Y ahora somos libres de elegir tales escalas de longitud y tiempo para minimizar el número de parámetros de la tarea. Tenemos dos incógnitas h0 y t0 y cuatro complejos adimensionales:

 frach0gt20, quad fracW rho0m, quadbh0, quad fraccS2Wg frach20t20

eso significa que podemos hacer que dos de ellos desaparezcan simplemente al equipararlos a la unidad. Además, el segundo complejo no depende de factores a gran escala, y debemos elegir los dos restantes para la destrucción. Y nuevamente, pasamos al argumento sobre el equilibrio estático que nos interesa. La posición de equilibrio está determinada por la ecualización de la aceleración cero, es decir, no nos importará qué factor estará en la segunda derivada de la altura y podemos minimizar el número de parámetros en el lado derecho de la ecuación. Por lo tanto, llegamos a la siguiente solución: elegimos los factores de escala para que el tercero y el cuarto de los complejos enumerados por nosotros desaparezcan de la ecuación. Para esto asumimos

bh0=1, quad fraccS2Wg frach20t20=1

y obtener nuestra propia escala del problema:

h0= frac1b, quadt0= frac1b sqrt fraccS2Wg. qquad(2)

Los parámetros restantes se denotan de la siguiente manera:

 frach0gt20= frac1 gamma, quad fracW rho0m=B.

Esta es probablemente la etapa más mágica de nuestras transformaciones, la más cercana al arte. Pero la experiencia y algún razonamiento ayudan a elegir la escala correcta. Y luego esta misma experiencia nos permite ver fenómenos similares en diferentes campos de la ciencia y adivinar las propiedades características de los sistemas complejos.

Me permitiré posponer el análisis del significado físico de las escalas y los parámetros que obtuvimos, aunque esto también es muy agradable e interesante, pero pasaré inmediatamente a lo más delicioso: a la ecuación adimensional en sus propias escalas:

 frac1 gammay=Bey left(1 operatornamesign(y)(y)2 right)1, quady(0)=y(0)=0. qquad(3)

Aqui Estoy listo para resolver tal ecuación, analizar e integrar numéricamente. Y cuando decido, puedo moverme fácilmente de mis propias escalas a metros y segundos, codificados en las proporciones (1) y (2).

Entonces comencemos. En primer lugar, busquemos dónde se detendrá nuestro globo generalizado. Para hacer esto, equiparamos a cero tanto la velocidad como la aceleración en la ecuación (3):

0=Bey1,

donde conseguimos

y= lnB.

Inmediatamente concluya: para que exista la altura máxima, la condición B>1 . Luego, estimamos cuánto tiempo la pelota alcanzará esta altura. Para hacer esto, equiparamos la aceleración a cero y resolvemos el problema de Cauchy de primer orden:

0=Beey left(1(y)2 right)1, quady(0)=y.$

Se resuelve analíticamente por el método de separación de variables, y se reduce a la integral:

 tau= inty0 fracBdy sqrtBey=2 operatornamearth left( sqrt1 frac1B derecha).$

Mira, aquí están: ¡los frutos de escalas correctamente elegidas! Tanto la altura máxima como el tiempo característico de su logro se expresan solo a través del parámetro B . Esto significa que podemos fijar algún valor B>1 , construya una serie de gráficos para resolver la ecuación (3) para diferentes valores  gamma y de ese modo describir inmediatamente todas las opciones para resolver el problema para cualquier valor B !

Esta es una familia universal de soluciones de un parámetro obtenida integrando numéricamente el problema (3) para varios valores  gamma :


Después de alcanzar la altura de equilibrio, el globo realiza oscilaciones amortiguadas durante algún tiempo, sin embargo, el tiempo característico para alcanzar esta altura se estima correctamente. De criterio  gamma solo el período de oscilaciones y el tiempo de su decadencia dependen. Cuanto mayor sea este parámetro, más "duro" será nuestro sistema.

Queda por traducir esta familia de gráficos en una vista dimensional, simplemente multiplicando los valores a lo largo de los ejes por los factores de escala correspondientes. Y ahora el experimento numérico ha terminado y sus resultados han adquirido un significado universal. Puede sustituir parámetros dimensionales reales de la tarea y obtener instantáneamente números en los ejes, ¡ya en metros y segundos! Tal resultado ya puede publicarse en un manual serio para los expertos en globos aerostáticos o en un artículo científico que describa todo el fenómeno en un gráfico.

Ahora veamos qué obtuvimos en forma de parámetros y variables. Reemplazar la masa de la pelota m masa total de gas W rhog y masas de carga útil M :

m=W rhog+M=W rhog(1+ alpha),

donde  alpha= fracMW rhog - la capacidad de carga relativa de la aeronave. Además, tomamos la bola esférica y expresamos su área y volumen a través del radio R . En esta representación, obtenemos los parámetros del problema:

B= frac rho0 rhog(1+ alpha), gamma= frac3cB8Rb.

El primero es el coeficiente de flotabilidad, que depende del gas utilizado y de la carga que se eleva, un parámetro muy importante, incluye todas las cantidades másicas. El segundo muestra cómo el tamaño y la forma de la pelota están relacionados con el gradiente de densidad en la atmósfera, es decir, cómo las inhomogeneidades atmosféricas son grandes en relación con el tamaño de la pelota.

La escala se expresa de la siguiente manera:

h0=1/b tau0= frac12b sqrt frac3cB2gR= sqrt frac gammagb$

La escala de distancia está determinada solo por el gradiente de densidad. Lo cual es absolutamente cierto, porque precisamente debido a este gradiente, el ascenso de la pelota, en general, se detiene en algún lugar. El tiempo característico incluía cantidades dinámicas: aceleración gravitacional, relaciones de masa y resistencia al aire.

La altura y el tiempo característicos del acercamiento de la pelota.

h=yh0= frac1b lnB,t= taut0=2 sqrt frac gammagb operatornamearth left( sqrt1 frac1B right)

También se expresa en términos de los principales parámetros y el alcance de la tarea.

Por ejemplo, veamos qué sucede con los parámetros físicos dados en el artículo original:

B=4.57 gamma=686h0=8000 m tau0=12.47 minh=12166.6 mt=13.72 min



Para resumir. Después de haber trabajado un poco en papel antes de alimentar la tarea a la máquina, pudimos obtener un resultado universal más inteligible y notamos las propiedades más importantes de la solución. Al mismo tiempo, no perdimos la "modularidad" de la solución. Esto es lo que quiero decir. Formulamos el problema en los términos más generales, y luego, después de obtener una solución, comenzamos a agregar nuevas "características", por ejemplo, compartimos el concepto de la carga útil y la masa del gas que lo elevaba. Esta complicación afectó los valores de la escala, pero no cambió la naturaleza de la solución.

Si posteriormente es necesario agregar el gradiente de temperatura, la expresión en el exponente se volverá más complicada, pero su esencia y, lo más importante, la escala no cambiará:

 exp left( fracbhT0T0ah right)

después de dimensionar se verá así:

 exp left( fracy1 psiy right),

donde está el nuevo parámetro  psi= fracabT0 muestra cuán correlacionados están los gradientes de densidad y temperatura. Dado que estos son parámetros atmosféricos independientes de nosotros,  psi Es una constante igual a 0.17 . El valor de la constante, por cierto, muestra la importancia del efecto del gradiente de temperatura, no es grande, pero no es insignificante. La familia de gráficos cambiará un poco, pero, lo más importante, seguirá siendo un parámetro.

El uso de las propias escalas del problema para los cálculos tiene otra ventaja importante: en este caso, las variables suelen tomar valores "moderados", es decir, cercanos a la unidad. Esto es muy útil para los cálculos de coma flotante: la precisión no se pierde en operaciones con valores que varían mucho en orden de magnitud. Además, es posible comparar correctamente los roles de los efectos individuales en una tarea al comparar los valores de sus criterios de similitud o los valores de las variables. Por ejemplo, el valor B=4.5 indica cuántas veces las fuerzas de interacción con la atmósfera son mayores que la gravedad. Y el cuadrado de la característica velocidad de subida adimensional (y/ tau)2 sim0.3 muestra el grado de importancia de la resistencia del aire en el movimiento vertical de la aeronave en comparación con la flotabilidad, que se expresa mediante una unidad entre paréntesis.

Finalmente, los cálculos en variables y parámetros adimensionales tienen cierta consistencia interna con el hecho de que las soluciones de ecuaciones diferenciales son casi siempre funciones trascendentales, y solo las cantidades adimensionales pueden ser sus argumentos y resultados. La computadora también funciona exclusivamente con números: cantidades adimensionales. La escritura estática, en principio, le permite ingresar las dimensiones de las cantidades físicas a nivel de tipos y verificar que los programas estén correctos durante la compilación, pero en la etapa numérica todavía trabajamos solo con las cantidades mismas. Cualquier error asociado con unidades y dimensiones se pierde en dichos cálculos. Es razonable preparar la tarea para los cálculos, excluyendo lo superfluo y dejando solo lo más esencial y natural para el solucionador.

¿Y qué sucedería si eligiéramos otros complejos, o atribuyéramos todas las fuerzas no a la gravedad sino, por ejemplo, a la inercia? Dos parámetros permanecerían en la ecuación, pero la familia de curvas se convertiría en dos parámetros, y no podría mostrarse en un diagrama. Admito, al principio me pasó a mí, ya que la escala de longitud obtuve el radio de la pelota. Pero después de jugar con estas curvas, vi su similitud geométrica (se ve una en todas las parábolas), y un análisis superficial adicional de los criterios y ecuaciones obtenidos me llevó a una simetría oculta y sugirió cuál debería ser la "forma canónica" de nuestras ecuaciones. ¡Esto, sin embargo, es una hermosa ocupación! La tarea en sí misma comienza a contar sobre sí misma. Siento un placer construir un sistema de tipos y estructuras de datos en un programa en Haskell o C #: cuando la arquitectura del programa corresponde a la estructura interna de la tarea, todo se vuelve sorprendentemente natural, elegante, los casos especiales se resuelven "automáticamente" y el número de capas de abstracción disminuye.

Las dimensiones de las cantidades físicas en sí mismas son muy interesantes. Forman un espacio lineal, y la búsqueda de criterios de similitud puede reducirse al problema de encontrar un núcleo en un espacio dimensional, formalizando así este proceso. En cierta medida, desempeñan el papel de tipos en la computación física. Como el compilador usa tipeo estático para verificar la corrección del programa, el físico usa dimensiones para verificar sus cálculos y resultados.Como en un lenguaje funcional puro estrictamente tipificado (por ejemplo, en Haskell), un código de función puede derivarse de su tipo, de la misma manera, en función de la dimensión de las cantidades físicas, se pueden construir complejos adimensionales, cantidades características en sistemas físicos y obtener resultados extremadamente útiles y universales. Hay muchos ejemplos de esto en mecánica, gas y termodinámica, mecánica cuántica, etc. Le recomiendo que se familiarice con un trabajo maravilloso que proporciona un montón de hermosos ejemplos de aplicación de análisis dimensional a problemas desde el teorema de Pitágoras hasta las oscilaciones de las estrellas y la dispersión de Rayleigh en el cielo. Este trabajo cita las palabras de John Wheeler, el maestro Richard Feynman, quien recibió el nombre de "Reglas de Wheeler":
« , . : (! ! !) , ; . : , . , . . ».

Este consejo para programadores suena muy familiar: no comience a escribir un código de función sin haber decidido su firma (tipo) y su comportamiento (pruebas); Antes de escribir código, debe considerar los tipos, las estructuras de datos y sus relaciones. Esto es precisamente para lo que son poderosas la programación funcional y OOP: estos principios no solo funcionan allí, sino que, cuando se usan con destreza, sugieren las soluciones más naturales y elegantes, y en el caso de los FP, lo hacen a un nivel matemático profundo, lo que permite probar las propiedades de los programas y cargar algunos. trabajar en la salida de propiedades del programa al compilador.

¡Aprende matemáticas, programa maravillosamente y diviértete!

Source: https://habr.com/ru/post/es416151/


All Articles