# Problem with factoring a symbolic variable

2 views (last 30 days)
MA on 13 Nov 2022
Answered: Paul on 14 Nov 2022
Hi. I have the following relatively simple symbolic equation, and I would like to calculate the terms that multiply Td_s. In this case, the result should be sin(T_s - T_u)*Td_s. However, I can't get this to work using "factor".
syms T_u T_t T_s tau_u Tdd_u Tdd_t Tdd_s Td_u Td_t Td_s;
eq = sin(T_s - T_u)*Td_s^2 + sin(T_t - T_u)*Td_t^2 - tau_u + (981*sin(T_u))/100 - Tdd_s*cos(T_s - T_u) - Tdd_t*cos(T_t - T_u);
factor(eq,Td_s)
##### 2 CommentsShowHide 1 older comment
MA on 14 Nov 2022
Thanks. The problem comes up when trying to write a robot's equation in the "Manipulator form". To obtain the matrix C in those equations, we basically factor the derivatives of the independent variables.
But I'm probably trying to solve this using brute force and there is a better method to obtain that matrix.

Paul on 14 Nov 2022
If only one term contains Td_s, then
syms T_u T_t T_s tau_u Tdd_u Tdd_t Tdd_s Td_u Td_t Td_s;
eq = sin(T_s - T_u)*Td_s^2 + sin(T_t - T_u)*Td_t^2 - tau_u + (981*sin(T_u))/100 - Tdd_s*cos(T_s - T_u) - Tdd_t*cos(T_t - T_u)
eq = c = children(eq);
c = c(has([c{:}],'Td_s'));
result = c/Td_s
result = Additional effort will be required if Td_s can show up as a coefficient in more than one term or if it can appear as part of a function argument.