2013-07-24 6 views
1

У меня есть MutableDenseMatrix, Q. theta1 и theta2 имеют тип SymPy symbol.inv() в symPy не возвращает правильное значение

In[12]: Q 
Out[12]: [cos(theta1), -sin(theta1), 0, 0] 
     [sin(theta1), cos(theta1), 0, 0] 
     [   0,   0, 1, 980] 
     [   0,   0, 0, 1] 

Когда я называю обратное, я получаю:

In[13]: Q_inv=Q.inv() 
Out[13]: [-sin(theta1)**2/cos(theta1) + 1/cos(theta1), sin(theta1), 0, 0] 
     [        -sin(theta1), cos(theta1), 0, 0] 
     [           0,   0, 1, -980] 
     [           0,   0, 0, 1] 

Когда то, что я должен получать это:

Out[X]: [cos(theta1), sin(theta1), 0, 0] 
     [-sin(theta1), cos(theta1), 0, 0] 
     [   0,   0, 1, -980] 
     [   0,   0, 0, 1] 

Любые мысли о том, что может идти здесь не так?

ответ

5

В этом нет ничего плохого. В вашей первой матричной записи у вас есть в вашем выводе и cos(theta1) в ожидаемом результате, которые, по сути, эквивалентны с 1 - sin(theta1)**2 = cos(theta1)**2 стандартным тригонометрическим тождеством.

sympy имеет функцию trigsimp, которая уменьшит уравнение до требуемой формы.

>>> Q 
[cos(theta1), -sin(theta1), 0, 0], 
[sin(theta1), cos(theta1), 0, 0], 
[   0,   0, 1, 980], 
[   0,   0, 0, 1] 
>>> Q.inv() 
[-sin(theta1)**2/cos(theta1) + 1/cos(theta1), sin(theta1), 0, 0], 
[        -sin(theta1), cos(theta1), 0, 0], 
[           0,   0, 1, -980], 
[           0,   0, 0, 1] 
>>> 
>>> sympy.trigsimp(Q.inv()) 
[ cos(theta1), sin(theta1), 0, 0], 
[-sin(theta1), cos(theta1), 0, 0], 
[   0,   0, 1, -980], 
[   0,   0, 0, 1] 
+0

Спасибо тонну. Я оценил различия в excel, и они выходили иначе, должно быть, скопировали что-то не так. – Chris

 Смежные вопросы

  • Нет связанных вопросов^_^