변수가 시간의 함수임을 SymPy에 알리는 방법은 무엇입니까?

Nov 26 2020

다음과 같은 3D 회전 행렬이 있습니다.

R = sp.Matrix([
    [ sp.cos(q1 + q2),  -sp.sin(q1 + q2), 0],
    [-sp.sin(q1 + q2),   sp.cos(q1 + q2), 0],
    [               0,                 0, 1]
])

여기서 q1과 q2는 각도입니다. 그 중 하나 인 q2 (t)는 시간의 함수이며 변화합니다. sympy에게 어떻게 말할 수 있습니까?

시간이 지남에 따라 그 매트릭스를 차별화하고 싶지만 어떻게해야할지 모르겠습니다.

그것이 내가 모든 것을 선언 한 방법입니다.

q1, q2, t = sp.symbols('q1 q2 t', real=True)


R = sp.Matrix([
    [ sp.cos(q1 + q2),  -sp.sin(q1 + q2), 0],
    [-sp.sin(q1 + q2),   sp.cos(q1 + q2), 0],
    [               0,                 0, 1]
])

sp.diff(R, t)

그게 내가 얻은 출력입니다 sp.diff(R, t).

나는 손으로 R (t)와의 미분을 계산했기 때문에 SymPy에서 다음과 같은 것을 얻고 싶습니다.

답변

1 wsdookadr Dec 04 2020 at 23:15

q1q2정의되지 않은 함수 로 선언 한 다음 Rpoint에서 계산 된 행렬 에서이를 사용해야합니다 t.

import sympy as sp

t = sp.symbols('t', real=True)
q1 = sp.Function('q_1')
q2 = sp.Function('q_2')

R = sp.Matrix([
    [ sp.cos(q1(t) + q2(t)),  -sp.sin(q1(t) + q2(t)), 0],
    [-sp.sin(q1(t) + q2(t)),   sp.cos(q1(t) + q2(t)), 0],
    [               0,                 0, 1]
])

sp.diff(R, t)

SymPy 1.7이 제공하는 결과는 다음과 같습니다.