|
Hi there,
I am writing a small script to generate some values regarding my homework. All the values in these function should be a integer. Somehow, the y function ends up giving a matrices as an answer. But when i manually type out the values and calculate, it turns out to be an integer. I am lost as I dont know where am i going wrong? Please help me out
**********************************************************
%Universal Variable
GP = 398600;
r1_v = [5644 -2830 -4170]; %in km
r2_v = [-2240 7320 -4980];
delta_t = 20/60; %in hrs
r1 = norm(r1_v);
r2 = norm(r2_v);
% assuming prograde trajectory
check = cross(r1_v, r2_v);
%to determine the delta theta
if check(3) > 0
delta_theta = acosd((dot(r1_v, r2_v))/(r1*r2));
else
delta_theta = 360 - acosd((dot(r1_v, r2_v))/(r1*r2));
end
A = sind(delta_theta) * sqrt((r1*r2)/(1-cosd(delta_theta)));
% to determine where F(z) becomes zero starting from -100
z=0.1
% to calculate the exact z
ratio = 1;
while abs(ratio) >1e-8
ratio=F(z, delta_t)/DF(z)
z = z- ratio;
end
%calculation of lagrange coefficients
f = 1 - y(z)/r1;
g = A * sqrt(y(z)/GP);
gdot = 1 - y(z)/r2;
% calculation of velocity
v1_v = 1/g*(r2_v-f*r1_v)
v2_v = 1/g*(gdot*r2_v-r1_v)
*******************************************************
%Subfunctions
function calcF_zt= F(z, delta_t)
global GP A
calcF_zt = ((y(z)/C(z))^1.5)*S(z) + A*sqrt(y(z))-sqrt(GP)*delta_t;
return
function y=y(z)
global r1 r2 A
y=r1+r2+A*((z*S(z))-1)/sqrt(C(z));
return
function stumpS = S(z)
if z > 0
stumpS = (sqrt(z)-sin(sqrt(z)))/(sqrt(z))^3;
elseif z<0
stumpS = (sinh(sqrt(-z)) -sqrt(-z))/(sqrt(-z))^3;
else
s = 1/6;
end
return
function stumpC = C(z)
if z > 0
stumpC = (1-cos(sqrt(z)))/z;
elseif z<0
stumpC = (cosh(sqrt(-z))-1)/(-z);
else
stumpC = 1/2;
end
return
function Df = DF(z)
global A
if z == 0
Df = sqrt(2)/40 * y(0)^1.5 + A/8*(sqrt(y(0))+A*sqrt(1/2/y(0)));
else
Df = (y(z)/C(z))^1.5*((1/(2*z))*(C(z)-1.5*(S(z)/C(z))) + 0.75 * (((S(z))^2)/(C(z)))) + (A/8)*(3*(S(z)/C(z))*sqrt(y(z))+A*sqrt(C(z)/y(z)));
end
return
********************************************
i have a feeling there is something wrong at my y function
>> y(2)
ans =
[]
r1+r2+A*((z*S(z))-1)/sqrt(C(z))
ans =
8.6168e+003
can someone help me out??
Thanks
Nemal
|