MATLAB Answers


How does the MATLAB calculate the arctan?

Asked by Vahid
on 9 Feb 2012
Latest activity Edited by Marc
on 7 Oct 2013

Hello all,

I have solved an initial value problem and I have gotten the following equation for that:

theta=(c_0/c_1)- (2/c_1)*atan( exp(-a*c_1*t)*tan((c_0-c_1*theta_0)/2) ) 


 c_0=7*pi/6; c_1=0.3; a=0.055; theta_0=0;



I do expect the MATLAB returns theta=0 for t=0. In other words what I expect to see is:


because for t=0, the first equation can be simplified and as a result we have: theta=theta_0 : independent of c_0,c_1(~=0),and a.

but MATLAB returns something else:


I would be grateful if somebody could explain me how I can get what I expect to get?

thanks a lot, Vahid


Log in to comment.


2 Answers

Answer by Matt Tearle
on 9 Feb 2012
 Accepted Answer

All inverse trigonometry functions return to a specific limited range, because trig functions are periodic. Hence, if x = 9*pi/2, then sin(x) will be 1, so asin(sin(x)) will be pi/2, not 9*pi/2. That's what's happening here -- atan returns values between -pi/2 and pi/2 (see doc atan):

(c_0-c_1*theta_0)/2  % ans = 1.8326 > pi/2
atan(tan((c_0-c_1*theta_0)/2)) + pi


Log in to comment.

Answer by Wayne King
on 9 Feb 2012

Why do you think it simplifies like that?

for t=0 and theta_0= 0, your expression evaluates to

(c_0/c_1)- (2/c_1)*atan(tan(c_0/2)) 

which is 20.9440


I think the point is that Vahid expects atan(tan(x)) to return x, in which case this simplifies to c0/c1 - (2/c1)*(c0/2) = c0/c1 - c0/c1 = 0.

Since we have: atan(tan(arg))=arg and because of that I think the answer should be

(c_0/c_1)- (2/c_1)*(c_0/2)
which is equal to 0!

Oh, I see :), yes, then what Matt said.

Log in to comment.

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

Win prizes and improve your MATLAB skills

Play today