Символьная матрица не полностью упрощена в Matlab, но упрощена в Octave - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть матрица 4x4, содержащая символические тригонометрические выражения.Я хочу упростить каждое выражение внутри матрицы, поэтому я использую «упрощение».Однако Matlab почему-то не упрощает 4-й столбец матрицы.Тот же код в Octave дает мне правильный, максимально упрощенный вывод.Я приложил код .m и выходы Matlab и Octave ниже.

syms t1 t2 t3 t4 t5 a1 a2 a3 real;

A1 = [[cos(t1) 0 -sin(t1) 0]; [sin(t1) 0 cos(t1) 0]; [0 -1 0 0]; [0 0 0 1]];
A2 = [[cos(t2) -sin(t2) 0 a1*cos(t2)]; [sin(t2) cos(t2) 0 a1*sin(t2)]; [0 0 1 0]; [0 0 0 1]];
A3 = [[cos(t3) -sin(t3) 0 a2*cos(t3)]; [sin(t3) cos(t3) 0 a2*sin(t3)]; [0 0 1 0]; [0 0 0 1]];
A4 = [[cos(t4) 0 sin(t4) 0]; [sin(t4) 0 -cos(t4) 0]; [0 1 0 0]; [0 0 0 1]];
Af = [[cos(t5) 0 -sin(t5) a3*cos(t5)]; [sin(t5) 0 cos(t5) a3*sin(t5)]; [0 -1 0 0]; [0 0 0 1]];

T3f = A4 * Af;
T2f = A3 * T3f;
T1f = A2 * T2f;
T0f = A1 * T1f
T = simplify(T0f)

T = subs(T, t2+t3+t4, sym(0));
T = simplify(T)
T = subs(T, t1+t5, sym(0));
T = simplify(T)

Окончательный T, заданный Matlab:

T =

[ 1,  0, 0, cos(t1)*(a1*cos(t2) + cos(t2)*(a2*cos(t3) + a3*cos(t3)*cos(t4)*cos(t5) - a3*cos(t5)*sin(t3)*sin(t4)) - sin(t2)*(a2*sin(t3) + a3*cos(t3)*cos(t5)*sin(t4) + a3*cos(t4)*cos(t5)*sin(t3))) - a3*sin(t1)*sin(t5)]
[ 0,  0, 1, sin(t1)*(a1*cos(t2) + cos(t2)*(a2*cos(t3) + a3*cos(t3)*cos(t4)*cos(t5) - a3*cos(t5)*sin(t3)*sin(t4)) - sin(t2)*(a2*sin(t3) + a3*cos(t3)*cos(t5)*sin(t4) + a3*cos(t4)*cos(t5)*sin(t3))) + a3*cos(t1)*sin(t5)]
[ 0, -1, 0,                              - a1*sin(t2) - cos(t2)*(a2*sin(t3) + a3*cos(t3)*cos(t5)*sin(t4) + a3*cos(t4)*cos(t5)*sin(t3)) - sin(t2)*(a2*cos(t3) + a3*cos(t3)*cos(t4)*cos(t5) - a3*cos(t5)*sin(t3)*sin(t4))]
[ 0,  0, 0,                                                                                                                                                                                                           1]

Окончательный T, заданный Octave:

T = (sym 4×4 matrix)

⎡1  0   0  a₁⋅cos(t₁)⋅cos(t₂) + a₂⋅cos(t₁)⋅cos(t₂ + t₃) + a₃⎤
⎢                                                           ⎥
⎢0  0   1       (a₁⋅cos(t₂) + a₂⋅cos(t₂ + t₃))⋅sin(t₁)      ⎥
⎢                                                           ⎥
⎢0  -1  0            -a₁⋅sin(t₂) - a₂⋅sin(t₂ + t₃)          ⎥
⎢                                                           ⎥
⎣0  0   0                          1                        ⎦

Любая помощь, исправляющая это в Matlab, приветствуется.Я использую Matlab R2017a.

...