double dt = deltaT; // ΔT
double M = AttractorMass; // 重力源質量
double m = SatelliteMass; // 衛星質量
Vector3 r = AttractorPos - SatellitePos; // 中心方向ベクトル
double dist = r.length(); // 半径の大きさ
double v = velocity.length(); // 速度の大きさ
double v2 = v * v;
double r2 = dist * dist;
// ニュートン万有引力
double newton = G * M / r2;
double G3 = pow(G, 3);
double c2 = c * c;
double c5 = pow(c, 5);
double r4 = pow(dist, 4);
// 1PN補正
double pnFactor = 1.0 + 3.0 * (v2 / c2);
// 2.5PN(重力放射減衰)補正
double P = OrbitalPeriod * 86400 * 365.2425; // 周期(秒)
double L25 = (-32.0/5.0) * (G3 * M * m * (M + m)) / (c5 * r4) * v;
double pn25Factor = L25 / P;
Vector3 accel_newton = r.normalized() * newton * pnFactor; // 1PN:中心方向
Vector3 brake_pn25 = velocity.normalized() * pn25Factor; // 2.5PN:速度逆方向への減衰
Vector3 acceleration = accel_newton + brake_pn25;
//###### RK4等の積分器側 ######
Vector3 velocity = velocity + acceleration * dt; // ここでdtがかかってくることに注意
この形で4次のルンゲクッタ法などに簡単に組み込むことができます。