2017-10-30 1 views
1
q1 = Function('q1')(t) 
f=cos(q1).diff(t) 
f.subs(q1,pi/2) 

저는 function f = -sin(q1)*q1'입니다. q1=pi/2으로 평가하고 싶습니다. 나는 대답을 기대할 것이다 : - (q1) '대신에 나는 -0을 얻는다. q1이 이제 상수이기 때문에 매개 변수 q1이 대체 될뿐만 아니라 시간 미분도 0이됩니다. 잘못된 방법을 사용하고 있습니까?Sympy가 서브 우퍼로 잘못 대체 됨

답변

0

주어진 예제에서 상수 함수 인 q1(t) = pi/2을 대체하려고하기 때문에 Sympy의 대체가 올바른 답을 제공합니다. 파생 상품은 0입니다. q1q1'이 변 분법처럼, 서로 독립적 인 경우에만 대답 -Derivative(q1(t),t) 올바른 것입니다. 이 경우 두 개의 다른 변수를 사용하는 것이 더 좋습니다. 하나는 q1이고 다른 하나는 q1'입니다. 우리는 이미 기능 f를 알고있는 경우에 그래서, q1q1'는 서로 독립적 인 경우에 대체하는 올바른 방법이어야한다

p, q, t = symbols('p, q, t') 
f = -sin(p)*q  
f.subs(p, pi/2) 

이처럼 유도하는 것보다 직접 오히려 그것을 정의하는 것이 좋습니다.

+0

그래서 처음에 'q1'을 대체 할 수 있고 'q1'을 대체 할 수 있다는 것을 알았습니다. 함수를 직접 정의 할 수는 없습니다. 왜냐하면 sympy로 파생되어 지저분한 물건이기 때문입니다. –

+0

예. 변형 유형 계산의 미적분을 위해이 접근법이 더 잘 작동합니다. –