解析形式:
#CW方程解析解
def cw_ParseTheSolution(State0,n,t):
State0.reshape(6,1)
Phi = np.array([[4-3*cos(n*t), 0, 0, sin(n*t)/n, (2-2*cos(n*t))/n, 0],
[6*(sin(n*t)-n*t), 1, 0, (2*cos(n*t)-1)/n, (4*sin(n*t)/n)-3*t, 0],
[0, 0, cos(n*t), 0, 0, sin(n*t)/n],
[3*n*sin(n*t), 0, 0, cos(n*t), 2*sin(n*t), 0],
[6*n*(cos(n*t) -1), 0, 0, -2*sin(n*t), 4*cos(n*t)-3, 0],
[0, 0, -n*sin(n*t), 0, 0, cos(n*t)]])
State = Phi @ State0
return State
数值积分形式:
def dery(Y,t,Var,U):
#卫星控制量
Ux = U[0] #卫星控制量
Uy = U[1] #卫星控制量
Uz = U[2] #卫星控制量
#参考卫星轨道角速度
Omega = Var[0] #参考卫星角速度
#卫星轨道参数变量
x = Y[0]
y = Y[1]
z = Y[2]
Vx = Y[3]
Vy = Y[4]
Vz = Y[5]
#卫星运动微分方程
dx = Vx
dy = Vy
dz = Vz
dVx = 2*Omega*Vy + 3*Omega**2*x + Ux;
dVy = -2*Omega*Vx + Uy
dVz = -Omega**2*z + Uz
return np.array([dx,dy,dz,dVx,dVy,dVz], dtype = float)