« Mathématiques avec Python et Ruby/Joukovski et Ruby » : différence entre les versions

Contenu supprimé Contenu ajouté
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 159 :
<source lang="ruby">
figure.puts('<circle cx="320" cy="240" r="'+R.to_s+'" fill="white" stroke="black" stroke-width="1" />')
 
figure.puts('</svg>')
figure.close
</source>
Ligne 167 ⟶ 165 :
C'est tout ce qu'il faut pour obtenir l'écoulement que voici:
 
[[Fichier:JoukovskiRuby1.svg|320px]]
 
Le défaut des isobares en-dessous du cercle (la figure aurait dû être symétrique par rapport à l'axe des abscisses) est lié au changement de feuillet de J<sup>-1</sup>. Pour y remédier, on peut remplacer la moitié du bas par la symétrique de la moitié du haut, ce qui double la longueur du script (une fonction par quadrant). La correction est laissée en exercice.
 
=Conception de l'aile d'avion=
 
Si on applique à la figure ci-dessus (avec le cercle unité), la transformation J(z), on obtient l'écoulement autour de [-2;2] qui est trivial. Mais on peut modifier le cercle pour qu'il passe toujours par le point d'affixe 1, et la transformée de Joukovski du nouveau cercle aura toujours un point de rebroussement d'affixe 2, mais peut avoir une forme de lemniscate, ou de [[w:Profil (aéronautique)|profil]] d'aile d'avion, selon le paramètre choisi.
 
==Tracé du profil==
 
Une [[w:Fonction affine|fonction affine]] complexe laisse le point d'affixe 1 invariant, si elle est de la forme ''fa(z)=P(z-1)+1''. Le meilleur moyen de choisir la valeur du coefficient directeur ''P'' est d'implémenter ''fa'' et J avec un logiciel de géométrie dynamique (par exemple, [[w:CaRMetal|CaRMetal]] qui exporte au format svg), et de bouger le point d'affixe ''P'' avec la souris jusqu'à ce que l'image du cercle par J(fa(z)) ait la forme voulue:
Le [[w:Profil (aéronautique)|profil]]
 
[[Fichier:JoukovskiCaRMetal1.svg|632px]]
 
Le choix de P=0,93+0,15i paraît satisfaisant.
 
==Calcul de l'écoulement==
 
Pour la fonction de Joukovski, on ajoute un très petit nombre à ''z'' pour que le nombre zéro passe entre les mailles du filet, ce qui évite le risque d'avoir une erreur de division par zéro.
 
==Figure obtenue==
 
[[Fichier:JoukovskiRuby2.svg]]