Matlab решает систему символьных тригонометрических уравнений
Я пытаюсь решить систему из 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), из которой я извлекаю уравнения, которые затем немного упрощаю. Цель здесь состоит в том, чтобы получить систему уравнений для получения 5 углов из известного qij. Проблема здесь заключается в том, что Функция execute() всегда указывает на отсутствие решений, даже если заданы числовые параметры для qij (и известно, что система должна иметь решение с этими параметрами).