Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Dsolve: assigning constants of integration and subscripts

  1. Nov 19, 2008 #1
    I have an equation I am solving with Mathematica:


    DSolve[y''[t] +
    Subscript[\[Omega], c]^2 y[
    t] == -Subscript[\[Omega], c]^2 Subscript[v, d]*t +
    Subscript[\[Omega], c]*Subscript[v, 0], y[t], t]


    {{y[t] ->
    C[2] Cos[t Subscript[\[Omega], c]] +
    C[1] Sin[t Subscript[\[Omega], c]] + (
    Subscript[v, 0] - t Subscript[v, d] Subscript[\[Omega], c])/
    Subscript[\[Omega], c]}}

    I would like to replace the two constants of integration(C[1], C[2]) with two chosen variables

    If I include this with the DSolve command:

    {C[1] -> (Voy/omega), C[2] -> ((Voy-Vd)/omega)},

    it returns that I can not use these for variables.

    I have also found a GeneratedParameters-> function, but it does not work either,.. and if I'm correct, the GeneratedParameters-> Module{C[1], C[2]..&} function is only to ensure that C[] values are all unique, and does not change their representation.

    I am also wondering how to change the subscript of Vo into Voy, Mathematica is not letting me do this.

    Again, any help would be appreciated
  2. jcsd
  3. Nov 20, 2008 #2


    User Avatar
    Science Advisor
    Homework Helper

    You can replace the parameters all the way at the end:

    DSolve[ ..., y[t], t] /. {C[1] -> ..., C[2] -> ...}

    and that works well for me.

    When you type V0y Mathematica sees the subscript as an expression, and replaces 0*y by 0 (which is usually very handy, but not what you want now). You can use o (letter oh) instead of 0 (number zero) in the subscript, or put it in a string: V"y,0".
  4. Nov 20, 2008 #3


    Staff: Mentor

    Or you can use

    GeneratedParameters -> ((Voy - (# - 1) Vd)/omega &)
  5. Nov 20, 2008 #4


    User Avatar
    Science Advisor
    Homework Helper

    And of course the neatest solution is to just get them from the equation by plugging in the right boundary conditions:

    DSolve[{equation, y'[0] == v0y, y[0] = 0}, y[t], t]

    or something like that.
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook