4

I want to get a function as output form DSolve. For Example :

sol = DSolve[{Q''[t] + 40 Q'[t] + 625 Q[t] == 100*Cos[10*t], Q[0] == 0, Q'[0] == 0}, Q[t], t]

I want to use Q[t] as a function to use in an another equation.

DSaad
  • 1,173
  • 2
  • 14
  • 19

1 Answers1

12

It's not too hard:

dsaad[t_] = Q[t] /. First @ DSolve[{Q''[t] + 40 Q'[t] + 625 Q[t] == 100*Cos[10*t],
                                   Q[0] == 0, Q'[0] == 0}, Q, t]

Notes:

  1. I instructed DSolve[] to return the pure function Q (through the second argument) instead of the function itself to ease the replacement.

  2. I used Set[] (=) instead of SetDelayed[] (:=), so that the replacement is done at once before the definition takes place.


Another possibility is to use DifferentialRoot[] instead:

dsaad[x_] := DifferentialRoot[Function[{Q, t},
               {Q''[t] + 40 Q'[t] + 625 Q[t] == 100*Cos[10*t], Q[0] == 0, Q'[0] == 0}]][x]
J. M.'s missing motivation
  • 124,525
  • 11
  • 401
  • 574