scipy
scipy is a Python scientific computing library that provides a wide range of numerical algorithms and tools, widely used in cislunar orbit design and analysis.
Main Modules
| Module | Function | Cislunar Application |
|---|---|---|
scipy.integrate | Numerical integration, ODE solvers | Orbit integration, dynamics propagation |
scipy.optimize | Optimization algorithms, nonlinear equation solvers | Orbit design, parameter optimization |
scipy.linalg | Linear algebra operations | Matrix computation, eigenvalue analysis |
scipy.interpolate | Interpolation functions | Data interpolation, smoothing |
scipy.special | Special mathematical functions | Spherical harmonics, elliptic integrals |
Installation
pip install scipy
Example Applications
Orbit Integration
import numpy as np
from scipy.integrate import solve_ivp
def orbital_dynamics(t, state, mu):
"""CR3BP dynamics equations"""
x, y, z, vx, vy, vz = state
r1 = np.sqrt((x + mu)**2 + y**2 + z**2)**3
r2 = np.sqrt((x - 1 + mu)**2 + y**2 + z**2)**3
ax = 2*vy + x - (1 - mu)*(x + mu)/r1 - mu*(x - 1 + mu)/r2
ay = -2*vx + y - (1 - mu)*y/r1 - mu*y/r2
az = -(1 - mu)*z/r1 - mu*z/r2
return [vx, vy, vz, ax, ay, az]
# Initial state
state0 = [0.8, 0, 0, 0, 0.5, 0]
mu = 0.01215
# Integration
t_span = [0, 10]
sol = solve_ivp(orbital_dynamics, t_span, state0, args=(mu,))
print(f"Integration complete, {len(sol.t)} time points")
Parameter Optimization
from scipy.optimize import minimize, differential_evolution
def objective(params):
"""Objective function: minimize orbit deviation"""
x, y = params
return (x - 1)**2 + (y - 2)**2
# Local optimization
result = minimize(objective, [0, 0], method='BFGS')
print(f"Local optimum: {result.x}")
# Global optimization (differential evolution)
result = differential_evolution(objective, bounds=[(-5, 5), (-5, 5)])
print(f"Global optimum: {result.x}")