function NBodySystem(bodies){ this.bodies = bodies; var px = 0.0; var py = 0.0; var pz = 0.0; var size = this.bodies.length; for (var i=0; i<size; i++){ var b = this.bodies[i]; var m = b.mass;
px += b.vx * m;
py += b.vy * m;
pz += b.vz * m;
} this.bodies[0].offsetMomentum(px,py,pz);
}
NBodySystem.prototype.advance = function(dt){ var dx, dy, dz, distance, mag; var size = this.bodies.length;
for (var i=0; i<size; i++) { var bodyi = this.bodies[i]; for (var j=i+1; j<size; j++) { var bodyj = this.bodies[j];
dx = bodyi.x - bodyj.x;
dy = bodyi.y - bodyj.y;
dz = bodyi.z - bodyj.z;
for ( var n = 3; n <= 24; n *= 2 ) {
(function(){ var bodies = new NBodySystem( Array(
Sun(),Jupiter(),Saturn(),Uranus(),Neptune()
)); var max = n * 100;
ret = bodies.energy(); for (var i=0; i<max; i++){
bodies.advance(0.01);
}
ret = bodies.energy();
})();
}
assertEq(ret, -0.16906933525822856)
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-06-06)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.