Re: Problem with symbolic solution of a differential
- To: mathgroup at smc.vnet.net
- Subject: [mg81609] Re: [mg81574] Problem with symbolic solution of a differential
- From: Devendra Kapadia <dkapadia at wolfram.com>
- Date: Sat, 29 Sep 2007 02:28:05 -0400 (EDT)
- References: <200709280609.CAA27001@smc.vnet.net>
On Fri, 28 Sep 2007, Jepessen wrote: > Hi to all. > > I've a problem with a differential equation, with Mathematica 6.0.1 > (Linux 32 bit) > > When I try to solve it simbolically, it returns me an error of > indetermination. > > This is the equation > > eq = Derivative[2][f][t] + (2*l + m)*Derivative[1][f][t] + > l^2*f[t] == ((m + Sqrt[m*(4*l + m)])/(2*Sqrt[m*(4*l + m)]))* > Exp[(-(t/2))*((2*l + m) - Sqrt[m*(4*l + m)])] + > ((-m + Sqrt[m*(4*l + m)])/(2*Sqrt[m*(4*l + m)]))* > Exp[(-(t/2))*((2*l + m) + Sqrt[m*(4*l + m)])] > > This is the command that I use > > DSolve[{eq, f[0] == 0, Derivative[1][f][0] == 0}, f, t] > > and it returns me this error > > \[Infinity]::indet: "Indeterminate expression \ > ComplexInfinity+ComplexInfinity encountered. " > > > So, I've tried to solve it numerically, and it works fine. > > fun = f /. > NDSolve[{Evaluate[eq /. {m -> .5, l -> .8}], f[0] == 0, f'[0] == 0}, > f, {t, 0, 10}][[1]] > > Plot[fun[x], {x, 0, 10}] > > I obtain the right graph. > > I obviously know that there are equation that mathematica can't solve > simbolically but, in these cases, it should return the unevaluated > expression, instead of an error, especially considering that numerical > method is fine. > > There's something that I can do to obtain a symbolic solution? > > Thanks for answers > > Daniele Lupo > > Hello Daniele, Thank you for reporting the incorrect behavior of DSolve for the second-order differential equation considered by you. The problem appears to be caused by an incorrect result from symbolic integration while trying to compute a particular solution for the inhomogeneous equation. A partial workaround for the problem is to apply the Laplace transform to obtain a symbolic solution for f[t] (see Out[4] below). =========================== In[1]:= $Version Out[1]= 6.0 for Linux x86 (32-bit) (June 28, 2007) In[2]:= eq = f''[t] + (2*l + m)*f'[t] + l^2*f[t] == ((m + Sqrt[m*(4*l + m)])/(2*Sqrt[m*(4*l + m)]))* Exp[(-(t/2))*((2*l + m) - Sqrt[m*(4*l + m)])] + ((-m + Sqrt[m*(4*l + m)])/(2*Sqrt[m*(4*l + m)]))* Exp[(-(t/2))*((2*l + m) + Sqrt[m*(4*l + m)])]; In[3]:= ilt = InverseLaplaceTransform[(LaplaceTransform[f[t], t, s] /. Solve[LaplaceTransform[eq, t, s], LaplaceTransform[f[t], t, s]][[1]]) /. {f[0] :> 0, f'[0] :> 0}, s, t]; In[4]:= (f[t_] = Simplify[ilt])//InputForm Out[4]//InputForm= (2 - 4*l*t - m*t + Sqrt[m]*Sqrt[4*l + m]*t + E^(Sqrt[m]*Sqrt[4*l + m]*t)* (-2 + 4*l*t + m*t + Sqrt[m]*Sqrt[4*l + m]*t))/ (2*E^(((2*l + m + Sqrt[m]*Sqrt[4*l + m])*t)/2)*Sqrt[m]*(4*l + m)^(3/2)) ============================ In the following, we verify the solution and calculate a few values for it: ========================== In[5]:= FullSimplify[{eq, f[0], f'[0]}] Out[5]= {True, 0, 0} In[6]:= Table[f[t] /. {m -> .5, l -> .8}, {t, 0, 10, 2}] Out[6]= {0, 0.376615, 0.411939, 0.306131, 0.198231, 0.119471} =========================== After clearing the expression for 'f[t]', we see that the values agree quite well with those given by NDSolve. ========================== In[7]:= Clear[f] In[8]:= sol = NDSolve[{Evaluate[eq /. {m -> .5, l -> .8}], f[0] == 0, f'[0] == 0}, f, {t, 0, 10}] Out[8]= {{f -> InterpolatingFunction[{{0., 10.}}, <>]}} In[9]:= Table[f[t] /. %[[1]], {t, 0, 10, 2}] // Chop Out[9]= {0, 0.376615, 0.411939, 0.306131, 0.198231, 0.119471} ========================== I apologize for the inconvenience caused by this problem. Sincerely, Devendra Kapadia, Wolfram Research, Inc.
- References:
- Problem with symbolic solution of a differential equation
- From: Jepessen <jepessen@gmail.com>
- Problem with symbolic solution of a differential equation