You are on page 1of 2

9/27/16 4:02 PM E:\CLASSES\AERO 7200\2016\rigidbodyfree071213.

m
% Analytical Solution for Free Rotational Motion
% Copyright (c) 2016 by John E. Cochran, Jr., All Rights Reserved
close all
clear all
clc
A = 100
B = 250
C = 300
psi0 = 0
omegax0 = 0.1
omegay0 = 0.15
omegaz0 = 0.16
Hx0 = omegax0*A
Hy0 = omegay0*B
Hz0 = omegaz0*C
T = (A*omegax0*omegax0 + B*omegay0*omegay0 + C*omegaz0*omegaz0)/2
H = sqrt(A*omegax0*A*omegax0 + B*omegay0*B*omegay0 + C*omegaz0*C*omegaz0)
P = sqrt((2*C*T - H*H)/(A*(C-A)))
Q = sqrt((2*C*T - H*H)/(B*(C-B)))
R = sqrt((H*H - 2*A*T)/(C*(C-A)))
p = A*P/H
q = B*Q/H
r = C*R/H
k = sqrt(((B-A)*(2*C*T - H*H))/((C-B)*(H*H - 2*A*T)))
lambda = sqrt(((C-B)*(H*H - 2*A*T))/(A*B*C))
snv = -omegay0*B/(q*H)
cnv = omegax0*A/(p*H)
dnv = omegaz0*C/(r*H)
m = k*k
N = 3000.0
for i =1:N
t(i) = (i - 1)/10;
lambdat = lambda*t(i);
[snlambdat, cnlambdat, dnlambdat] = ellipj(lambdat, m);
%snlambdat = sn(lambda*t(i));
%cnlambdat = cn(lambda*t(i));
%dnlambdat = dn(lambda*t(i));
delta = 1 - k*k* snlambdat^2*snv^2;
snu = (snlambdat*cnv*dnv - snv*cnlambdat*dnlambdat)/delta;
cnu = (cnlambdat*cnv + snlambdat*snv*dnv*dnlambdat)/delta;
dnu = (dnlambdat*dnv + k*k*snv*cnv*snlambdat*cnlambdat)/delta;
omegax(i) = P*cnu;
omegay(i) = Q*snu;
omegaz(i) = R*dnu;
tanphi(i) = (B/C)*(omegay(i)/omegaz(i));
phi(i) = atan(tanphi(i));
sinphisquared(i) = tanphi(i)^2/(1 + tanphi(i)^2);
psidot(i) = (H/C)*( 1 + ((C-B)/B)*sinphisquared(i));
if ( i - 2) < 0
psi(i) = psi0;
end
if i > 1
psi(i) = psidot(i)*(t(i) - t(i-1)) + psi(i-1);
end
Hx(i) = A*omegax(i);
Hy(i) = B*omegay(i);
Hz(i) = C*omegaz(i);
TT(i) = (Hx(i)^2/A + Hy(i)^2/B + Hz(i)^2/C)/2;
HH(i) = sqrt(Hx(i)^2 + Hy(i)^2 + Hz(i)^2);

1 of 2

9/27/16 4:02 PM E:\CLASSES\AERO 7200\2016\rigidbodyfree071213.m


theta(i) = asin(-Hx(i)/HH(i));
BB(:,:,i) = [ 1 0 0 ; 0 cos(phi(i)) sin(phi(i)); 0 -sin(phi(i)) cos(phi(i))]*[ cos(theta(i))
0
0 1
0; sin(theta(i)) 0 cos(theta(i))]*[ cos(psi(i))
sin(psi(i)) 0; -sin(psi(i))
cos(psi(i))
HI(:,i) = BB(:,:,i)'*[Hx(i) Hy(i) Hz(i)]';
end
figure(1)
plot(t, omegax, t, omegay, t, omegaz, 'LineWidth', 2.0)
xlabel('time(s)')
ylabel('omegax, omegay, omegaz')
legend('omegax','omegay', 'omegaz')
grid on
figure(2)
plot(t,TT,'LineWidth', 2.0)
xlabel('time(s)')
ylabel('Kinetic Energy')
grid on
figure(3)
plot(t, HH, 'LineWidth', 2.0)
xlabel('time(s)')
ylabel('Angular Momentum Magnitude')
grid on
figure(4)
plot(t,psi*180/pi, 'LineWidth', 2.0)
xlabel('time(s)')
ylabel('psi')
grid on
BB(:,:,N)
figure(5)
plot(t,theta*180/pi, 'LineWidth', 2.0)
xlabel('time(s)')
ylabel('theta')
grid on
figure(6)
plot(t,phi*180/pi, 'LineWidth', 2.0)
xlabel('time(s)')
ylabel('phi')
grid on
figure(7)
plot3(Hx, Hy, Hz, 'LineWidth', 2.0)
xlabel('Hx')
ylabel('Hy')
zlabel('Hz')
grid on
figure(8)
plot3(HI(1,:), HI(2,:),HI(3,:), 'LineWidth', 2.0)
xlabel('HX')
ylabel('HY')
zlabel('HZ')
grid on

2 of 2
-sin(theta(i));...
0; 0 0 1];

You might also like