ASKSAGE: Sage Q&A Forum - Individual question feedhttp://ask.sagemath.org/questions/Q&A Forum for SageenCopyright Sage, 2010. Some rights reserved under creative commons license.Fri, 12 Apr 2013 04:16:24 -0500Solving an ODE system with initial conditionshttp://ask.sagemath.org/question/10013/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[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.Thu, 11 Apr 2013 10:19:25 -0500http://ask.sagemath.org/question/10013/solving-an-ode-system-with-initial-conditions/Answer by calc314 for <p>Hi!</p>
<p>I want to solve system of equations with initial conditions:</p>
<p>$x''(t)=-\gamma x'(t)$</p>
<p>$y''(t)=-g-\gamma y'(t)$</p>
<p>with the initial conditions: </p>
<p>$$x(0)=0, y(0)=0, x'(0)=v_0 \cos(\theta), y'(0)=v_0 \sin(\theta).$$</p>
<p>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:</p>
<pre><code>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)
</code></pre>
<p>And I get, as a result this:</p>
<pre><code>[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]
</code></pre>
<p>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.</p>
http://ask.sagemath.org/question/10013/solving-an-ode-system-with-initial-conditions/?answer=14773#post-id-14773I 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()
Fri, 12 Apr 2013 04:16:24 -0500http://ask.sagemath.org/question/10013/solving-an-ode-system-with-initial-conditions/?answer=14773#post-id-14773