Courbe de gumowski-mira

Contenu du snippet

En 1980, deux physiciens I. Gumowski et C. Mira, du centre de recherche CERN de Genève en Suisse utilisèrent le système d'équations

xn+1 = Byn + f(xn)
yn+1 = -xn + f(xn+1)

où : f(x) = Ax + (2*(1-A)x² )/(1+x²)

pour simuler la trajectoire de particules se déplaçant à très haute vitesse dans un accélérateur de particules de la forme d'une mince boîte cylindrique de plusieurs mètres de long. Ils donnèrent à la constante A des valeurs entre -1 et 1, à la constante B (beaucoup plus sensible) des valeurs très près de 1 et à xo et yo des valeurs entre -20 et 20. Ils découvrirent à leur grande surprise que les trajectoires issues de ce système et portées sur un plan cartésien produisent des images surprenantes nous rappelant certaines formes de vie marine.

Le programme présent ci-dessous permet de sauvegarder les points x et y dans un fichier. J'ai utilisé GnuPlot pour tracer les points sauvegardés dans le fichier output.dat

Source / Exemple :


/* Valeurs à essayer éventuellement:
A=-0.31; B=1; x0=3.0; y0=1.0
A=-0.23; B=1; x0=0.8; y0=0.4
A=-0.05; B=1; x0=15; y0=0.0
A=-0.6; B=0.99; x0=0.09; y0=-2.76
A=0.31; B=1; x0=3; y0=1
A=-0.77; B=0.95; x0=3; y=1 */

#include <stdio.h>
#include <math.h>
#define A -0.48
#define B 0.93

int main(int argc, char *argv[])
{

  int i,n;
  float x,y,xp,yp;
  FILE *fichier;
  fichier = fopen("output.dat","w");

  x = 4.0;
  y = 4.0;
  n = 30000;
  for(i=1;i<=200;i++) {
  xp = B*y+A*x+2*(1-A)*x*x/(1+xp*xp);
  y = -x+A*xp+2*(1-A)*xp*xp/(1+xp*xp);
  x = xp;

  }
  for(i=1;i<=n;i++) {
  xp = B*y+A*x+2*(1-A)*x*x/(1+x*x);
  y = -x+A*xp+2*(1-A)*xp*xp/(1+xp*xp);
  x = xp;
  fprintf(fichier,"%f %f \n",x,y);
  }
  fclose(fichier);
  return 0;
}

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.