Ballon sans dimension. Magie d'analyse de dimension utilitaire


J'ai été incité à écrire ce court article par l'article récemment publié sur Habré Dynamics du vol vertical d'un avion plus léger que l'air . Je voulais écrire un commentaire, mais il est rapidement devenu quelque chose de plus et, semble-t-il, plus utile.

L'article original fournit un exemple de calcul de la dynamique d'un ballon ou d'un ballon dans l'atmosphère. Dans ce cas, la résistance à l'air et les gradients de la densité et de la température de l'atmosphère sont pris en compte, de sorte que le problème se réduit à une équation différentielle non triviale, qui peut être résolue avec succès numériquement en utilisant le langage Python. Tout va bien dans l'article: le ballon a décollé, s'est arrêté là où il fallait, on a à la fois la hauteur maximale et le temps de montée. Il m'a fallu lancer une autre balle, disons plus, la charger plus complètement, ou changer l'hydrogène en hélium - pas de problème - changer les paramètres dans le programme et tout calculer à nouveau. Le programme est compréhensible, linéaire, il fonctionne, alors que peut-on améliorer ici si le modèle n'est pas compliqué?

Vous pouvez faire en sorte que le modèle et les calculs deviennent universellement utiles, non pour une balle en particulier, mais pour un large éventail de tâches. Il est possible d'assurer une précision de calcul optimale dans l'intégration numérique de l'équation différentielle. Vous pouvez éliminer la nécessité de définir manuellement les limites d'intégration et l'étape lors du calcul dans un large éventail de paramètres. Enfin, vous pouvez en dire beaucoup sur la dynamique du vol de notre balle sans solution numérique. Et pour tout cela, il existe une vieille astuce, vraie et fiable, une fois obligatoire pour tous les calculs sur ordinateur et avant qu'ils n'apparaissent, et maintenant facultative et souvent liée à la magie et à l'art - amener les équations à une forme sans dimension et à ses propres échelles . Je vais utiliser le problème de l'aéronautique comme exemple et montrer comment l'analyse du problème devient plus significative et élégante lors de l'utilisation de cette technique. Et puis je vais expliquer pourquoi cela peut être important pour les programmeurs, et pourquoi cet article s'est retrouvé dans le hub "Programmation fonctionnelle".

L'essence de réduire les équations à leurs propres échelles est de trouver et d'introduire de telles unités de mesure du temps, des distances, des masses, des courants et d'autres variables dimensionnelles dans lesquelles la tâche prend la forme la plus simple et élégante. De telles unités sont appelées échelles caractéristiques ou appropriées du problème. Dans le même temps, le nombre de paramètres affectant sa solution est considérablement réduit, et si vous avez la chance de tomber sur une solution auto-similaire, les paramètres peuvent disparaître complètement!

Habituellement, on se familiarise avec cette technique lorsqu'ils étudient la dynamique d'un oscillateur harmonique, apportant l'équation du mouvement à une forme canonique. En effet, quel que soit l'oscillateur (grand ou petit, basse ou haute fréquence, mécanique ou électromagnétique), si vous mesurez le temps non pas en secondes, mais en périodes d'oscillations libres, et l'amplitude non pas en mètres, mais, disons, dans l'amplitude de l'écart initial , alors l'équation pour tout oscillateur linéaire aura la même forme:

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

Il suffit d'étudier les propriétés des solutions de cette équation pour tout savoir sur tous les oscillateurs à frottement visqueux harmoniques. Sans frottement, les paramètres disparaissent complètement dans le problème, et on obtient, comme solution, une sinusoïde exemplaire. Néanmoins, d'autres sinusoïdes, jusqu'à un simple changement linéaire de coordonnées, sont absolument identiques, il est donc inutile de les analyser individuellement.

C'est également le cas lors de l'analyse de courbes de second ordre. Après avoir examiné la parabole, l'hyperbole ou l'ellipse sous leur forme canonique (la plus compacte), nous avons appris toutes leurs propriétés remarquables. Après cela, cette connaissance s'étend à tout quadrique non trivial. De plus, la même technique est utilisée dans l'analyse des équations de mathématiques du second ordre (en dérivées partielles).

Porter le problème à une forme sans dimension à ses propres échelles en physique correspond à la recherche de la forme canonique ou d'un modèle de programmation. Et, heureusement, cela peut être exprimé avec un algorithme complètement formel:
  1. Nous introduisons des facteurs d'échelle formels pour les variables;
  2. nous divisons toute l'équation par n'importe quelle quantité ayant la dimension de ses termes;
  3. parmi les complexes sans dimension qui en résultent, y compris les facteurs d'échelle, nous choisissons autant de facteurs que nous en avons et les assimilons à l'unité;
  4. nous résolvons les équations résultantes en exprimant les facteurs d'échelle en termes de paramètres du problème, et utilisons les complexes restants comme critères de similarité.

En conséquence, nous obtenons des équations sous forme canonique, les valeurs propres du problème, ainsi que des critères de similitude pour généraliser des solutions à des systèmes physiquement similaires. Plus vous pouvez entrer d'échelles (en utilisant, par exemple, la symétrie), plus l'équation du mouvement sera concise et moins les paramètres de contrôle resteront dans le problème. Le vrai trésor pour le chercheur est la situation où il est possible d'exclure tous les paramètres du problème et de présenter toutes ses solutions possibles sur une courbe. De telles solutions sont appelées auto-similaires et elles simplifient grandement la vie, transformant des équations différentielles partielles en équations différentielles ordinaires, ou même en équations algébriques. Les deuxième et troisième étapes de l'algorithme ci-dessus nécessitent une sélection et un raisonnement, elles sont les moins formelles, mais même si vous utilisez la méthode de la force brute, à ce stade, vous pouvez obtenir une compréhension systématique très approfondie du problème.

Tournons-nous vers l'équation originale du mouvement donnée dans l'article sur les avions, et montrons par son exemple comment il peut être transformé en une forme sans dimension à ses propres échelles. L'équation a la forme:

m fracd2hdt2=mg+gW rho0ebh frac12cS rho0ebh operatornamesigne gauche( fracdhdt droite) gauche( fracdhdt droite)2,

avec conditions initiales

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

Ici h - la hauteur du ballon, m - masse de l'ensemble de l'avion avec le fret, g - accélération de la gravité, W - le volume de gaz dans la balle, c - coefficient de traînée, S - zone de résistance caractéristique, ρ0 - densité de l'air à hauteur nulle, b - coefficient dans la distribution de Boltzmann.

Première étape. Nous introduisons les échelles formelles pour le temps et les distances:

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

et réécrivez l'équation du mouvement en utilisant des traits pour désigner les dérivées:

m frach0t20y=mg+gW rho0ebh0y left[1 fraccS2Wg frach20t20 operatornamesigne(y)(y)2 droite].

Les conditions initiales dans notre cas sont triviales, elles peuvent donc être omises, mais en général, nous devons également les réécrire.

En fait, la deuxième étape est la non-mesure de l'équation. Tous les termes y ont la dimension de la force et nous sommes libres de les diviser en n'importe quelle force. Généralement divisé par la force d'inertie - par un facteur dans la dérivée seconde de la distance. Dans ce cas, en tant que paramètres du problème, des critères bien connus de similitude dynamique, tels que les nombres de Reynolds ou d'Euler, sont généralement obtenus. Mais dans notre tâche, nous attribuons toutes les forces incluses dans la tâche à la gravité mg et c'est pourquoi. Nous nous intéressons principalement à la position de l'équilibre statique - la hauteur maximale de la balle à une capacité de charge donnée et le temps de transition vers celle-ci. Et l'équilibre statique ne dépend pas des propriétés inertielles du système, mais il dépend directement de la gravité. Donc, nous divisons et réduisons ce qui est possible:

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

Tout, l'équation est sans dimension, maintenant toutes les variables et tous les termes ne sont que des nombres. Et maintenant, nous sommes libres de choisir de telles échelles de longueur et de temps afin de minimiser le nombre de paramètres de tâche. Nous avons deux inconnues h0 et t0 et quatre complexes sans dimension:

 frach0gt20, quad fracW rho0m, quadbh0, quad fraccS2Wg frach20t20

cela signifie que nous pouvons faire disparaître deux d'entre eux simplement en les assimilant à l'unité. De plus, le deuxième complexe ne dépend pas de facteurs à grande échelle, et nous devons choisir les deux restants à détruire. Et encore une fois, nous nous tournons vers l'argument de l'équilibre statique qui nous intéresse. La position d'équilibre est déterminée par l'égalisation de l'accélération nulle, c'est-à-dire que peu importe le facteur qui sera dans la dérivée seconde de la hauteur et nous pouvons faire la minimisation du nombre de paramètres sur le côté droit de l'équation. Ainsi, nous arrivons à la solution suivante: nous choisissons les facteurs d'échelle pour que le troisième et le quatrième des complexes que nous énumérons disparaissent de l'équation. Pour cela, nous supposons

bh0=1, quad fraccS2Wg frach20t20=1

et obtenir notre propre échelle du problème:

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

Les paramètres restants sont indiqués comme suit:

 frach0gt20= frac1 gamma, quad fracW rho0m=B.

C'est probablement l'étape la plus magique de nos transformations, la plus proche de l'art. Mais l'expérience et certains raisonnements aident à choisir la bonne échelle. Et puis cette même expérience nous permet de voir des phénomènes similaires dans différents domaines scientifiques et de deviner les propriétés caractéristiques de systèmes complexes.

Je vais me permettre de reporter l'analyse de la signification physique des échelles et des paramètres que nous avons obtenus, bien que cela soit aussi très agréable et intéressant, mais je vais immédiatement passer à la plus délicieuse - à l'équation sans dimension à ses propres échelles:

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

Ici! Je suis prêt à résoudre une telle équation, à l'analyser et à l'intégrer numériquement. Et quand je décide, je peux facilement passer de mes propres échelles aux mètres et aux secondes, encodées dans les rapports (1) et (2).

Commençons donc. Voyons, pour commencer, où s'arrêtera notre ballon généralisé. Pour ce faire, nous équivalons à zéro à la fois la vitesse et l'accélération dans l'équation (3):

0=Bey1,

où trouvons-nous

y= lnB.

Concluez immédiatement: pour que la hauteur maximale existe, la condition B>1 . Ensuite, nous estimons combien de temps la balle atteindra cette hauteur. Pour ce faire, nous égalisons l'accélération à zéro et résolvons le problème de Cauchy du premier ordre:

0=Êtreey gauche(1(y)2 droite)1, quady(0)=y.

Il est résolu analytiquement par la méthode de séparation des variables, et se réduit à l'intégrale:

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

Regardez, les voici - les fruits d'échelles correctement choisies! La hauteur maximale et le temps caractéristique de sa réalisation ne sont exprimés que par le paramètre B . Cela signifie que nous pouvons fixer une valeur B>1 , construire une série de graphiques pour résoudre l'équation (3) pour différentes valeurs  gamma et ainsi décrire immédiatement toutes les options pour résoudre le problème pour toutes les valeurs B !

Il s'agit d'une famille universelle de solutions à un paramètre obtenue en intégrant numériquement le problème (3) pour diverses valeurs  gamma :


Après avoir atteint la hauteur d'équilibre, le ballon fait des oscillations amorties pendant un certain temps, cependant, le temps caractéristique pour atteindre cette hauteur est estimé correctement. Du critère  gamma seules dépendent la période des oscillations et le temps de leur désintégration. Plus ce paramètre est grand, plus notre système est «dur».

Reste à traduire cette famille de graphes en une vue dimensionnelle, simplement en multipliant les valeurs le long des axes par les facteurs d'échelle correspondants. Et maintenant, l'expérience numérique est terminée et ses résultats ont acquis une signification universelle. Vous pouvez remplacer les paramètres dimensionnels réels de la tâche et obtenir instantanément des nombres sur les axes, déjà en mètres et en secondes! Un tel résultat peut déjà être publié dans un manuel sérieux pour les aérostiers durs ou dans un article scientifique décrivant l'ensemble du phénomène sur un graphique.

Voyons maintenant ce que nous avons obtenu sous forme de paramètres et de variables. Remplacer la masse de la balle m masse totale de gaz W rhog et masses utiles M :

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

 alpha= fracMW rhog - la capacité de charge relative de l'aéronef. De plus, nous prenons la boule sphérique et exprimons sa surface et son volume à travers le rayon R . Dans cette représentation, nous obtenons les paramètres du problème:

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

Le premier est le coefficient de flottabilité, qui dépend du gaz utilisé et de la charge soulevée, paramètre très important, il inclut toutes les quantités massiques. La seconde montre comment la taille et la forme de la balle sont liées au gradient de densité dans l'atmosphère, c'est-à-dire comment les inhomogénéités atmosphériques sont grandes par rapport à la taille de la balle.

L'échelle est exprimée comme suit:

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

L'échelle de distance est déterminée uniquement par le gradient de densité. Ce qui est absolument vrai, car précisément à cause de ce gradient la montée de la balle, en général, s'arrête quelque part. Le temps caractéristique comprenait des quantités dynamiques - accélération gravitationnelle, rapports de masse et résistance à l'air.

La hauteur et le temps caractéristiques de l'approche du ballon

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

également exprimée en termes de paramètres principaux et de portée de la tâche.

Par exemple, voyons ce qui se passe pour les paramètres physiques donnés dans l'article d'origine:

B=4,57 gamma=686h0=8000 m tau0=12,47 minh=12166,6 mt=13,72 min



Pour résumer. Après avoir travaillé un peu sur le papier avant d'alimenter la tâche en machine, nous avons pu obtenir un résultat plus intelligible et universel et avons remarqué les propriétés les plus importantes de la solution. Dans le même temps, nous n'avons pas perdu la «modularité» de la solution. Voici ce que je veux dire. Nous avons formulé le problème dans les termes les plus généraux, puis, ayant déjà obtenu une solution, nous avons commencé à ajouter de nouvelles «fonctionnalités», par exemple, nous avons partagé le concept de la charge utile et la masse du gaz qui le soulève. Cette complication a affecté les valeurs d'échelle, mais n'a pas changé la nature de la solution.

Si par la suite il est nécessaire d'ajouter le gradient de température, l'expression dans l'exposant deviendra plus compliquée, mais son essence et, surtout, l'échelle ne changera pas:

 exp left( fracbhT0T0ah right)

après le dimensionnement, il ressemblera à ceci:

 exp left( fracy1 psiy right),

où est le nouveau paramètre  psi= fracabT0 montre à quel point les gradients de densité et de température sont corrélés. Puisque ce sont des paramètres atmosphériques indépendants de nous,  psi Est une constante égale à 0,17 $ . La valeur de la constante, soit dit en passant, montre l'importance de l'effet du gradient de température, il n'est pas grand, mais pas négligeable. La famille de graphiques changera un peu, mais surtout, elle restera un paramètre.

L’utilisation des propres échelles du problème pour les calculs présente un autre avantage significatif: dans ce cas, les variables prennent généralement des valeurs «modérées», c’est-à-dire proches de l’unité. Ceci est très utile pour les calculs en virgule flottante: la précision n'est pas perdue dans les opérations avec des valeurs qui varient considérablement par ordre de grandeur. De plus, il devient possible de comparer correctement les rôles des effets individuels dans une tâche en comparant les valeurs de leurs critères de similitude ou les valeurs des variables. Par exemple, la valeur B=4,5 indique combien de fois les forces d'interaction avec l'atmosphère sont supérieures à la gravité. Et le carré de la vitesse de montée sans dimension caractéristique (y/ tau)2 sim0,3 montre le degré d'importance de la résistance de l'air dans le mouvement vertical de l'aéronef par rapport à la flottabilité, qui est exprimée par une unité entre parenthèses.

Enfin, les calculs dans les variables et paramètres sans dimension ont une certaine cohérence interne avec le fait que les solutions d'équations différentielles sont presque toujours des fonctions transcendantales, et seules les quantités sans dimension peuvent être leurs arguments et leurs résultats. L'ordinateur fonctionne également exclusivement avec des nombres - des quantités sans dimension. Le typage statique, en principe, vous permet d'entrer les dimensions des quantités physiques au niveau des types et de vérifier l'exactitude des programmes lors de la compilation, mais au niveau numérique, nous ne travaillons toujours qu'avec les quantités elles-mêmes. Toutes les erreurs associées aux unités et aux dimensions sont perdues dans ces calculs. Il est raisonnable de préparer la tâche pour les calculs, à l'exclusion du superflu et en ne laissant que le plus essentiel et le plus naturel pour le solveur.

Et que se passerait-il si nous choisissions d'autres complexes ou attribuions toutes les forces non pas à la gravité, mais, disons, à l'inertie? Deux paramètres resteraient dans l'équation, mais la famille de courbes deviendrait à deux paramètres, et elle ne pourrait pas être représentée sur un diagramme. J'avoue, au début, cela m'est juste arrivé, car l'échelle de longueur m'a donné le rayon de la balle. Mais après avoir joué avec ces courbes, j'ai vu leur similitude géométrique (vous en voyez une dans toutes les paraboles), et une nouvelle analyse superficielle des critères et des équations obtenues m'a conduit à une symétrie cachée et a suggéré ce que devrait être la «forme canonique» de nos équations. Mais c'est une belle occupation! La tâche elle-même commence à se raconter. Je ressens un tel plaisir à construire un système de types et de structures de données dans un programme en Haskell ou C #: lorsque l'architecture du programme correspond à la structure interne de la tâche, tout devient étonnamment naturel, élégant, des cas particuliers sont élaborés «automatiquement» et le nombre de couches d'abstraction diminue.

Les dimensions des quantités physiques en elles-mêmes sont très intéressantes. Ils forment un espace linéaire, et la recherche de critères de similitude peut être réduite au problème de trouver un noyau dans un espace dimensionnel, formalisant ainsi ce processus. Dans une certaine mesure, ils jouent le rôle de types dans l'informatique physique. Comme le compilateur utilise le typage statique pour vérifier l'exactitude du programme, le physicien utilise des dimensions pour vérifier ses calculs et ses résultats.Comme dans un langage fonctionnel pur strictement typé (par exemple, dans Haskell), un code de fonction peut être dérivé de son type, de la même manière, basé sur la dimension des quantités physiques, on peut construire des complexes sans dimension, des quantités caractéristiques dans les systèmes physiques et obtenir des résultats extrêmement utiles et universels. Les exemples en sont nombreux en mécanique, gaz et thermodynamique, mécanique quantique, etc. Je vous recommande de vous familiariser avec un travail merveilleux qui fournit un tas de beaux exemples d'application de l'analyse dimensionnelle à des problèmes du théorème de Pythagore aux oscillations des étoiles et à la diffusion de Rayleigh dans le ciel. Cet ouvrage cite les mots de John Wheeler, l'enseignant Richard Feynman, qui a reçu le nom de "Wheeler Rules":
« , . : (! ! !) , ; . : , . , . . ».

Ce conseil aux programmeurs semble très familier: ne commencez pas à écrire un code de fonction sans avoir décidé de sa signature (type) et de son comportement (tests); Avant d'écrire du code, vous devez considérer les types, les structures de données et leurs relations. C'est précisément pour cela que la POO et la programmation fonctionnelle sont puissantes - ces principes ne fonctionnent pas seulement là-bas, ils, lorsqu'ils sont utilisés habilement, suggèrent eux-mêmes les solutions les plus naturelles et les plus élégantes, et dans le cas des FP, ils le font à un niveau mathématique profond, ce qui permet de prouver les propriétés des programmes et d'en facturer certains. travailler sur la sortie des propriétés du programme vers le compilateur.

Apprenez les mathématiques, programmez magnifiquement et amusez-vous!

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


All Articles