2016-09-19 5 views
0

mathematica의 DSolve 함수를 사용하여 두 개의 ODE 시스템을 풀고 싶습니다.ODE 해결 대신에 true를 반환하는 Mathematica 방정식?

DSolve[{x'[t] == 0.02*x - .00004*x*y, y'[t] == .0004*x*y - .04*y, 
    x[0] == 500, y[0] == 200}, {x[t], y[t]}, t] 

그러나 어떤 이유로 그냥 방정식이 true를 반환하고 내 구문이이 없어야하고, 그것을 해결하지 않을 말해 유지 : 여기 아래로 작성한 것입니다. 왜 이것이 일어나고 있는지 또는 어떻게 고쳐야하는지 잘 모릅니다.

+3

일반적으로 "진정한는"당신은 X [t] = 뭔가 한 번 대신 X [t] == ​​뭔가 MMA가 기억되어 사용되는 의미 그. 그 것을 지우려면 다시 시작하십시오. 아직도 문제가있다. x [t]와 x, y [t]와 y를 모두 사용하고 있습니다. 내가 x [t]와 y [t]를 만들면, K [1] == x [t]가 통합의 유효한 한도가 아니라는 오류를 얻습니다. DSolve의 소수점으로 인해 때때로 문제가 발생합니다. 정확한 분수를 가진 모든 것을 대체하면 역함수에 대한 경고를 얻고 문서화되지 않은 Reduce를 사용하고 빈 솔루션으로 {}을 얻습니다. NDSolve를 시도하면 잘 작동하는 두 개의 곡선처럼 보입니다. 그것들 각각을 시험해보십시오. – Bill

답변

0

Prolbmes :

DSolve :: dvnoarg : 함수 x는 인수없이 나타납니다. >>

방정식에 x 대신 x[t]을 입력해야합니다.

NIntegrate :: nlim : K [1] = x [t]는 유효한 통합 한계가 아닙니다. >>

분석에 문제가 있으므로 수치 솔루션을 사용해야합니다.

솔루션 :

s = NDSolve[ 
    { 
    x'[t] == 0.02*x[t] - .00004*x[t]*y[t], 
    y'[t] == .0004*x[t]*y[t] - .04*y[t], 
    x[0] == 500, 
    y[0] == 200 
    }, {x, y}, {t, 0, 100}] 

Plot[{Evaluate[x[t] /. s], Evaluate[y[t] /. s]}, {t, 0, 100}] 

결과 :

solution.png

관련 문제