Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

To resolve issues starting MATLAB on Mac OS X 10.10 (Yosemite) visit: http://www.mathworks.com/matlabcentral/answers/159016

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) ) 

where

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

and

t=[0:0.01:100];

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

theta(1)=0

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:

theta(1)=20.9440

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

thanks a lot, Vahid

0 Comments

Vahid

Tags

Products

No products are associated with this question.

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
tan((c_0-c_1*theta_0)/2)
atan(tan((c_0-c_1*theta_0)/2))
atan(tan((c_0-c_1*theta_0)/2)) + pi

0 Comments

Matt Tearle
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

3 Comments

Matt Tearle on 9 Feb 2012

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.

Vahid on 9 Feb 2012

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!

Wayne King on 9 Feb 2012

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

Wayne King

Contact us