I want to use atan2 in my equation. When I use atan2 , I get answer NaN. But when I use 'atan' , i didn't get NaN. Why?
5 次查看(过去 30 天)
显示 更早的评论
clear all
clc
syms alpha1 alpha1_d alpha1_dd
a=3;
b=2;
th1=atan2(a*sin(alpha1),(b*cos(alpha1)));
l1=a*cos(alpha1)*sin(th1)-b*sin(alpha1)*cos(th1);
l1_d=diff(l1,alpha1)*alpha1_d; % fisrt derivative of l1
l1_dd=jacobian(l1_d,[alpha1,alpha1_d])*[alpha1_d;alpha1_dd];% Sencond derivative of l1
% subs alpha1=0.5236, alpha1_d=0.2, alpha1_dd=0.01
L_dd=subs(l1_dd,[alpha1,alpha1_d,alpha1_dd],[0.5236,0.2,0.01]);
% Ans L_dd=NaN
%%%% when I replace atan2 by atan
clear all
clc
syms alpha1 alpha1_d alpha1_dd
a=3;
b=2;
th1=atan(a*sin(alpha1)/(b*cos(alpha1)));
l1=a*cos(alpha1)*sin(th1)-b*sin(alpha1)*cos(th1);
l1_d=diff(l1,alpha1)*alpha1_d;% fisrt derivative of l1
l1_dd=jacobian(l1_d,[alpha1,alpha1_d])*[alpha1_d;alpha1_dd];% Sencond derivative of l1
% subs alpha1=0.5236, alpha1_d=0.2, alpha1_dd=0.01
L_dd=double(subs(l1_dd,[alpha1,alpha1_d,alpha1_dd],[0.5236,0.2,0.01]));
% Ans L_dd=-0.1789
0 个评论
采纳的回答
Swatantra Mahato
2021-2-19
编辑:Swatantra Mahato
2021-2-19
Hi Vishal,
You can try with "atan2" after making the following modifications
syms alpha1 alpha1_d alpha1_dd real
and add the line
l1=rewrite(l1,'sqrt');
before the line
l1_d=diff(l1,alpha1)*alpha1_d;
I have brought the issue to the notice of our developers. They will investigate the matter futher
Hope this helps
3 个评论
Paul
2021-2-21
Seemed to work for me:
>> syms alpha1 alpha1_d alpha1_dd real
a=3;
b=2;
th1=atan2(a*sin(alpha1),(b*cos(alpha1)));
l1=a*cos(alpha1)*sin(th1)-b*sin(alpha1)*cos(th1);
l1 = rewrite(l1,'sqrt');
l1_d=diff(l1,alpha1)*alpha1_d; % fisrt derivative of l1
l1_dd=jacobian(l1_d,[alpha1,alpha1_d])*[alpha1_d;alpha1_dd];% Sencond derivative of l1
% subs alpha1=0.5236, alpha1_d=0.2, alpha1_dd=0.01
L_dd=subs(l1_dd,[alpha1,alpha1_d,alpha1_dd],[0.5236,0.2,0.01]);
vpa(L_dd)
ans =
-0.17888259249992260757966824848436
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!