2016-08-15 5 views
3

이 미분 방정식에 대한 특정 해결책을 찾을 수 없었습니다. = 1,000m위한미분 방정식 문제 해결

from sympy import * 

m = float(raw_input('Mass:\n> ')) 
g = 9.8 
k = float(raw_input('Drag Coefficient:\n> ')) 
v = Function('v') 
f1 = g * m 
t = Symbol('t') 
v = Function('v') 
equation = dsolve(f1 - k * v(t) - m * Derivative(v(t)), 0) 
print equation 

k는 = 0.2 이것은

Eq(f(t), C1*exp(-0.0002*t) + 49000.0) 

을 반환하지만 V (0) = 0으로하는

Eq(f(t), 49000*(1-exp(-0.0002*t)) 
반환해야 때의 해결 식을 할

답변

1

나는 Sympy가 아직 초기 조건을 고려할 수 없다고 생각한다. dsolve에는 초기 조건 입력을위한 ics 옵션이 있지만 (설명서 참조) 제한된 사용으로 보입니다.

따라서 초기 조건을 수동으로 적용해야합니다. 예를 들면 :

C1 = Symbol('C1') 
C1_ic = solve(equation.rhs.subs({t:0}),C1)[0] 

print equation.subs({C1:C1_ic}) 

Eq(v(t), 49000.0 - 49000.0*exp(-0.0002*t))

+0

이 방정식을 차동 특정 솔루션을 찾는 더 나은 일을 할 것입니다 어떤 파이썬 패키지가 충분히있다 작품? – Kklj8

+0

@JessieCotton 나는 Sympy보다 다른 python 상징적 인 패키지를 알지 못한다. 그러나, 나는 위의 방법론이 diff의 (일반적인) 해결책이있는 대부분의 경우에 충분할 것이라고 생각한다. eq. 닫힌 양식에서 찾을 수 있습니다. – Stelios

+0

이런 종류의 ODE를 해결하는 초기 조건은 SymPy의 다음 버전 인 https://github.com/sympy/sympy/pull/11264에서 구현되어야합니다 – asmeurer

관련 문제