Datei:N-body problem (3).gif

Aus besserwiki.de

N-body_problem_(3).gif(182 × 174 Pixel, Dateigröße: 47 KB, MIME-Typ: image/gif, Endlosschleife, 500 Bilder)

Hinweis: Aufgrund technischer Beschränkungen werden Vorschaubilder hochauflösender GIF-Dateien wie dieser nicht animiert.

Diese Datei stammt aus Wikimedia Commons und kann von anderen Projekten verwendet werden. Die Beschreibung von deren Dateibeschreibungsseite wird unten angezeigt.

Beschreibung

Beschreibung
English: The chaotic movement of 3 interacting particles.

This is an animation of the (not-reduced) three-body problem. The center of view is the mass center of the three particles.

Calculated numerically with Maple 10. Note: the 'n' parameter (currently '3') can be adapted at will.
Deutsch: n-Körper-Problem
Quelle Eigenes Werk
Urheber User:Joris_Gillis~commonswiki
Maple source code
InfoField
> restart;with(RandomTools);with(plottools):with(plots);
> n:=8;
> e:={}:for i from 1 to n do
   s:=[]:for c from 1 to n do;  if (not(c=i)) then
   s:=[op(s),G*mass[i]*mass[c]*(x[c](t)-x[i](t))/sqrt(((x[c](t)- x[i](t))^2+(y[c](t)-y[i](t))^2+(z[c](t)-z[i](t))^2))^3]: end if od:
   e:={op(e),mass[i]*diff(x[i](t),t$2)=add(s[v],v=1..n-1)}:
  
   s:=[]:for c from 1 to n do;  if (not(c=i)) then
   s:=[op(s),G*mass[i]*mass[c]*(y[c](t)-y[i](t))/sqrt(((x[c](t)- x[i](t))^2+(y[c](t)-y[i](t))^2+(z[c](t)-z[i](t))^2))^3]: end if od:
   e:={op(e),mass[i]*diff(y[i](t),t$2)=add(s[v],v=1..n-1)}:
  
   s:=[]:for c from 1 to n do;  if (not(c=i)) then
   s:=[op(s),G*mass[i]*mass[c]*(z[c](t)-z[i](t))/sqrt(((x[c](t)- x[i](t))^2+(y[c](t)-y[i](t))^2+(z[c](t)-z[i](t))^2))^3]: end if od:
   e:={op(e),mass[i]*diff(z[i](t),t$2)=add(s[v],v=1..n-1)}:
  od:e;
> G:=200;
> SetState(state=12);
> pos:=[]:for i from 1 to n do pos:=[op(pos),Generate(list(integer(range=-10..10), 3))] od;
> vel:=[]:for i from 1 to n do vel:=[op(vel),Generate(list(integer(range=-5..5), 3))] od;
> mass:=Generate(list(integer(range=5..35), n));
> with(LinearAlgebra):
> beginvwn:=NULL:
   for i from 1 to n do beginvwn:=beginvwn,x[i](0)=pos[i][1],y[i](0)=pos[i][2],z[i](0)=pos[i][3] od:
   for i from 1 to n do beginvwn:=beginvwn,D(x[i])(0)=vel[i][1],D(y[i])(0)=vel[i][2],D(z[i])(0)=vel[i][3] od:
  beginvwn;
> var:=NULL:for i from 1 to n do var:=var,x[i](t),y[i](t),z[i](t) od:var;
> astappen:=500:timescale:=0.02:
  opl:=dsolve([op(e),beginvwn],numeric,output=array([seq(m*timescale,m=0..astappen-1)]),maxfun=500000):
> sl:=convert(opl[1,1],list);
> dp:=ListTools[Flatten]([seq([2+2*k,2+2*k+2*n,2+2*k+4*n],k=0..n-1)]);
> data:=convert(opl[2,1],listlist):
> mc:=[seq(map(list->sum(list[dp[cd+3*cs]]*mass[cs+1],cs=0..n-1)/sum(mass[cs],cs=1..n),data),cd=1..3)]:
> aschijfjes:=astappen;p:=[]:
  for k from 1 to aschijfjes do
  pts:=NULL:for i from 1 to n do pts:=pts,point([seq(data[k][dp[c+3*(i-1)]],c=1..3)],symbolsize=mass[i],color=red,symbol=DIAMOND) od:
  pp:=display(pts);
  p:=[op(p),pp];
  end do:
> display(p,insequence=true,scaling=constrained,axes=boxed);
> aschijfjes:=astappen;p:=[]:
  for k from 1 to aschijfjes do
  pts:=NULL:for i from 1 to n do pts:=pts,point([seq(mc[c][k]-data[k][dp[c+3*(i-1)]],c=1..3)],symbolsize=mass[i],color=red,symbol=DIAMOND) od:
  pp:=display(pts);
  p:=[op(p),pp];
  end do:
> display(p,insequence=true,scaling=constrained,axes=boxed);

Lizenz

Public domain Ich, der Urheberrechtsinhaber dieses Werkes, veröffentliche es als gemeinfrei. Dies gilt weltweit.
In manchen Staaten könnte dies rechtlich nicht möglich sein. Sofern dies der Fall ist:
Ich gewähre jedem das bedingungslose Recht, dieses Werk für jedweden Zweck zu nutzen, es sei denn, Bedingungen sind gesetzlich erforderlich.

Kurzbeschreibungen

Ergänze eine einzeilige Erklärung, was diese Datei darstellt.

In dieser Datei abgebildete Objekte

Motiv

image/gif

Dateiversionen

Klicke auf einen Zeitpunkt, um diese Version zu laden.

Version vomVorschaubildMaßeBenutzerKommentar
aktuell12:33, 26. Jan. 2013Vorschaubild der Version vom 12:33, 26. Jan. 2013182 × 174 (47 KB)wikimediacommons>Jahobrcropped; second attempt

Die folgende Seite verwendet diese Datei: