How does the MATLAB calculate the arctan?
조회 수: 18 (최근 30일)
이전 댓글 표시
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
채택된 답변
Matt Tearle
2012년 2월 9일
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
추가 답변 (1개)
Wayne King
2012년 2월 9일
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
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!