# Solving an ODE system with initial conditions

Hi!

I want to solve system of equations with initial conditions:

$x''(t)=-\gamma x'(t)$

$y''(t)=-g-\gamma y'(t)$

with the initial conditions:

$$x(0)=0, y(0)=0, x'(0)=v_0 \cos(\theta), y'(0)=v_0 \sin(\theta).$$

I've solved this with Mathematica with no problem, but I don't know how to work in Sage, and friend has asked me for help. Now, I've searched a bit, and I made this:

t, G, g, v0, T = var('t G g v0 T')
x(t) = function('x',t)
y(t) = function('y',t)
assume(g>0)
assume(G>0)
X = x(t).diff(t,2) == - G*x(t).diff(t,1)
Y = y(t).diff(t,2) == - g - G*y(t).diff(t,1)
desolve_system([X,Y],[x,y],ics = [0,0,v0*cos(T),v0*sin(T)],ivar=t)


And I get, as a result this:

[x(t) == -e^(-G*t)*D(x)(0)/G + D(x)(0)/G, y(t) == -g*t/G -
(G*D(y)(0) + g)*e^(-G*t)/G^2 + (G^2*v0*cos(T) + G*D(y)(0) +
g)/G^2]


Now, Mathematica will give me entirely different result. So what am I doing wrong? :\ I defined the variables, I defined the functions, made differential equations. I even tried solving the equations separately (without initial conditions), and the solutions are different.

edit retag close merge delete

Sort by » oldest newest most voted

I don't know what you're getting from Mathematica. There may be an issue with getting Sage to use the initial conditions on the derivative. I've removed the initial conditions in your command and used substitutions to take care of the initial conditions.

The following code all indicates that the solutions are right.

ans=desolve_system([X,Y],[x,y],ivar=t)
x1(t)=ans.rhs().subs(x(0)==0).subs(diff(x,t,1)(0)==v0*cos(T))
print x1(t)
print x1(0)
print diff(x1,t)(0)
diff(x1(t),t,2)+G*diff(x1(t),t,1)


and

y1(t)=ans.rhs().subs(y(0)==0).subs(diff(y,t,1)(0)==v0*sin(T))
print y1(t)
print y1(0)
print diff(y1,t)(0).simplify_full()
lhs=diff(y1(t),t,2)+G*diff(y1(t),t,1)+g
lhs.simplify_full()

more