<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/264865</link>
    <title>MATLAB Central Newsreader - Problem with function</title>
    <description>Feed for thread: Problem with function</description>
    <language>en-us</language>
    <copyright>&amp;copy;1994-2012 by MathWorks, Inc.</copyright>
    <webmaster>webmaster@mathworks.com</webmaster>
    <generator>MATLAB Central Newsreader</generator>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <ttl>60</ttl>
    <image>
      <title>MathWorks</title>
      <url>http://www.mathworks.com/images/membrane_icon.gif</url>
    </image>
    <item>
      <pubDate>Tue, 03 Nov 2009 18:59:03 -0500</pubDate>
      <title>Problem with function</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/264865#691803</link>
      <author>Nemal </author>
      <description>Hi there, &lt;br&gt;
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&lt;br&gt;
&lt;br&gt;
**********************************************************&lt;br&gt;
%Universal Variable &lt;br&gt;
GP = 398600; &lt;br&gt;
&lt;br&gt;
r1_v = [5644 -2830 -4170]; %in km&lt;br&gt;
r2_v = [-2240 7320 -4980];&lt;br&gt;
&lt;br&gt;
delta_t = 20/60; %in hrs&lt;br&gt;
&lt;br&gt;
r1 = norm(r1_v);&lt;br&gt;
r2 = norm(r2_v);&lt;br&gt;
&lt;br&gt;
% assuming prograde trajectory&lt;br&gt;
&lt;br&gt;
check = cross(r1_v, r2_v);&lt;br&gt;
&lt;br&gt;
%to determine the delta theta&lt;br&gt;
if check(3) &amp;gt; 0&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;delta_theta = acosd((dot(r1_v, r2_v))/(r1*r2));&lt;br&gt;
else&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;delta_theta = 360 - acosd((dot(r1_v, r2_v))/(r1*r2));&lt;br&gt;
end&lt;br&gt;
&lt;br&gt;
A = sind(delta_theta) * sqrt((r1*r2)/(1-cosd(delta_theta)));&lt;br&gt;
&lt;br&gt;
% to determine where F(z) becomes zero starting from -100&lt;br&gt;
z=0.1&lt;br&gt;
% to calculate the exact z&lt;br&gt;
ratio = 1;&lt;br&gt;
while abs(ratio) &amp;gt;1e-8&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ratio=F(z, delta_t)/DF(z) &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;z = z- ratio;&lt;br&gt;
end&lt;br&gt;
&lt;br&gt;
%calculation of lagrange coefficients&lt;br&gt;
f = 1 - y(z)/r1;&lt;br&gt;
g = A * sqrt(y(z)/GP);&lt;br&gt;
gdot = 1 - y(z)/r2;&lt;br&gt;
&lt;br&gt;
% calculation of velocity&lt;br&gt;
v1_v = 1/g*(r2_v-f*r1_v)&lt;br&gt;
v2_v = 1/g*(gdot*r2_v-r1_v)&lt;br&gt;
&lt;br&gt;
*******************************************************&lt;br&gt;
%Subfunctions&lt;br&gt;
&lt;br&gt;
function calcF_zt= F(z, delta_t)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;global GP A&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;calcF_zt = ((y(z)/C(z))^1.5)*S(z) + A*sqrt(y(z))-sqrt(GP)*delta_t;&lt;br&gt;
return&lt;br&gt;
&lt;br&gt;
function y=y(z)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;global r1 r2 A&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y=r1+r2+A*((z*S(z))-1)/sqrt(C(z));&lt;br&gt;
return&lt;br&gt;
&lt;br&gt;
function stumpS = S(z)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if z &amp;gt; 0&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stumpS = (sqrt(z)-sin(sqrt(z)))/(sqrt(z))^3;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;elseif z&amp;lt;0&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stumpS = (sinh(sqrt(-z)) -sqrt(-z))/(sqrt(-z))^3;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;s = 1/6;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&lt;br&gt;
return&lt;br&gt;
&lt;br&gt;
function stumpC = C(z)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if z &amp;gt; 0&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stumpC = (1-cos(sqrt(z)))/z;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;elseif z&amp;lt;0&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stumpC = (cosh(sqrt(-z))-1)/(-z);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stumpC = 1/2;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&lt;br&gt;
return&lt;br&gt;
&lt;br&gt;
function Df = DF(z)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;global A&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if z == 0&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Df = sqrt(2)/40 * y(0)^1.5 + A/8*(sqrt(y(0))+A*sqrt(1/2/y(0)));&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;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)));&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&lt;br&gt;
return&lt;br&gt;
&lt;br&gt;
********************************************&lt;br&gt;
i have a feeling there is something wrong at my y function&lt;br&gt;
&lt;br&gt;
&amp;gt;&amp;gt; y(2)&lt;br&gt;
&lt;br&gt;
ans =&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[]&lt;br&gt;
&lt;br&gt;
r1+r2+A*((z*S(z))-1)/sqrt(C(z))&lt;br&gt;
&lt;br&gt;
ans =&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;8.6168e+003&lt;br&gt;
&lt;br&gt;
can someone help me out??&lt;br&gt;
&lt;br&gt;
Thanks&lt;br&gt;
Nemal</description>
    </item>
  </channel>
</rss>

