我试图解决具有复杂三角项的12个方程组,最好用符号变量。我已经发现了一些问题,但没有一个答案似乎适用于我正在做的事情 方程的一个例子:
sin(t5)*sin(tA) - cos(t5)*cos(tA)*sin(tB) == q11
cos(t5)*sin(tA) + cos(tA)*sin(t5)*sin(tB) == q12
cos(tA)*cos(tB) == q13
95*cos(t1) + 95*cos(tA) + 35*sin(tA) + 60*cos(t3)*cos(tA) + 110*cos(tA)*cos(tB) == q14
- cos(tA)*sin(t5) - cos(t5)*sin(tA)*sin(tB) == q21
sin(t5)*sin(tA)*sin(tB) - cos(t5)*cos(tA) == q22
cos(tB)*sin(tA) == q23
95*sin(t1) - 35*cos(tA) + 95*sin(tA) + 60*cos(t3)*sin(tA) + 110*cos(tB)*sin(tA) == q24
cos(t5)*cos(tB) == q31
-cos(tB)*sin(t5) == q32
sin(tB) == q33
60*sin(t3) + 110*sin(tB) + 175 == q34
我的代码:
syms t1 t2 t3 t4 t5;
m = model(t1,t2,t3,t4,t5);
syms tA tB;
%replace the 90 with pi/2 cause the cos that accepts syms is in radians
m=subs(m, 90,pi/2);
m=simplify(m);
%t1+t2 = tA and t3+t4=tB
m = subs(m, [t1+t2 t3+t4],[tA tB]);
m=simplify(m);
%solving?
syms q11 q12 q13 q14 q21 q22 q23 q24 q31 q32 q33 q34;
wanted=[q11 q12 q13 q14 q21 q22 q23 q24 q31 q32 q33 q34];
equations=sym(zeros(3*4,1));
for i=1:3
for j=1:4
equations((i-1)*4+j)=m(i,j)==wanted((i-1)*4+j);
% fprintf('q%d%d = %s\n',i,j,char(m(i,j)));
end
end
res = solve(equations,[t1 t3 t5 tA tB])
请注意,在此,模型(5个角度)返回一个4x4矩阵(基本上是sin / cos项),从中我提取方程式,然后我简化了一下。这里的目标是使用一组方程来从已知的qij获得5个角度。 这里的问题是solve()总是表明没有解决方案,即使给出了qij的数值参数(并且已知系统应该有这些参数的解决方案)。