최근 sympy를 사용하여 파이썬으로 기호 계산을 수행하기 시작했습니다. 지금, 나는 내가 매우 simpe 초기 값 문제를 해결하기 위해 노력했다 미분 방정식 어제 함께 일하고 : 초기 조건Sympy가 ODE의 선형 시스템을 푸는 데 실패했습니다.
y1(0) = y2(0) = 1
내가 쓴 파이썬 코드
y1' = y1 + 2 y2,
y2' = -2 y1 + y2 + 2 exp(t),
은 다음과 같습니다
>>> import sympy as sy
>>> t=sy.symbols('t')
>>> y1=sy.Function('y1')
>>> y2=sy.Function('y2')
>>> eqs=(sy.Eq(y1(t).diff(t),y1(t)+2*y2(t)), sy.Eq(y2(t).diff(t),-2*y1(t)+y2(t)+2*sy.exp(t)))
>>> s=sy.dsolve(eqs) # General solution
>>> s
[y1(t) == 2*(C1*sin(2*t) + C2*cos(2*t))*exp(t),
y2(t) == (2*C1*cos(2*t) - 2*C2*sin(2*t))*exp(t)]
>>> y1g=s[0].args[1]
>>> y2g=s[1].args[1]
>>> # Find C1 and C2 so that the initial condition is satisfied
>>> sol=sy.solve([y1g.subs(t,0)-1,y2g.subs(t,0)-1])
>>> sol
{C1: 1/2, C2: 1/2}
>>> y1=y1g.subs(sol)
>>> y2=y2g.subs(sol)
>>> [y1,y2]
[2*(sin(2*t)/2 + cos(2*t)/2)*exp(t), (-sin(2*t) + cos(2*t))*exp(t)]
그러나 해결책은 잘못되었습니다! 내가 실수 한거야? 아니면 심한 버그 야?
해결책은 무엇이되어야합니까? 잘못 되었다면 https://github.com/sympy/sympy/issues/new에서 신고하십시오. – asmeurer
고마워, 나는 그것을보고했다. 곧 수정판을 찾을 수 있기를 바랍니다. ODE를 해결하는 sympy 모듈은 적어도 현재 ODE 시스템과 관련하여 그다지 신뢰할만한 것이 아닙니다. – rgallego