Ask Your Question
0

Solving an ODE system with initial conditions

asked 2013-04-11 17:19:25 +0100

dingo_d gravatar image

updated 2013-04-11 17:25:38 +0100

calc314 gravatar image

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[0](x)(0)/G + D[0](x)(0)/G, y(t) == -g*t/G -
(G*D[0](y)(0) + g)*e^(-G*t)/G^2 + (G^2*v0*cos(T) + G*D[0](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 flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
0

answered 2013-04-12 11:16:24 +0100

calc314 gravatar image

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[0].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[1].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()
edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

Stats

Asked: 2013-04-11 17:19:25 +0100

Seen: 1,197 times

Last updated: Apr 12 '13