subs command is not working on differentiation in MATLAB
10 次查看(过去 30 天)
显示 更早的评论
I have defined theta1 and theta2 as my random functions of time. I have defined vec_a1 and vec_v1 by differentiaing them. Afterwards when I am defining theta1 and theta2 and trying to evaluate vec_a1 and vec_v1 it is not converting to numerical values.
g = -9.81;
I1=1;I2=1.5;l1=2;l2=1;rho1=1.1;rho2=0.4;
syms theta1(t) theta2(t)
vec_rho1 = [rho1*cos(theta1), rho1*sin(theta1)];
vec_l1 = [l1*cos(theta1), l1*sin(theta1)];
vec_rho2 = vec_l1 + [rho2*cos(theta2), rho2*sin(theta2)];
vec_l2 = vec_l1 + [l2*cos(theta2), l2*sin(theta2)];
vec_v1 = diff(vec_rho1, t);
vec_a1 = diff(vec_v1, t);
vec_v2 = diff(vec_rho2, t);
vec_a2 = diff(vec_v2, t);
theta1=0.02*t;
theta2=0.3*t;
xx=1
vec_a1=subs(vec_a1)
x=vec_a1(xx);
x=double(x)
3 个评论
Walter Roberson
2022-6-5
subs(expression) is well defined. It means that matlab should look through all of the symvar() and replace them by their values in scope.
回答(2 个)
Dyuman Joshi
2022-6-5
g = -9.81;
I1=1;I2=1.5;l1=2;l2=1;rho1=1.1;rho2=0.4;
syms theta1(t) theta2(t)
theta1=0.02*t;
theta2=0.3*t;
vec_rho1 = [rho1*cos(theta1), rho1*sin(theta1)];
vec_l1 = [l1*cos(theta1), l1*sin(theta1)];
vec_rho2 = vec_l1 + [rho2*cos(theta2), rho2*sin(theta2)];
vec_l2 = vec_l1 + [l2*cos(theta2), l2*sin(theta2)];
vec_v1 = diff(vec_rho1, t);
vec_a1 = diff(vec_v1, t);
vec_v2 = diff(vec_rho2, t);
vec_a2 = diff(vec_v2, t);
xx=1;
x=subs(vec_a1,t,xx)
double(x)
0 个评论
Walter Roberson
2022-6-5
theta1(t)=0.02*t;
theta2(t)=0.3*t;
That is, you had replaced the function theta1 (a function of t) with the symbolic variable theta1 that was not a function.
0 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!