1. Not finding help here? Sign up for a free 30min tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Runge-kutta formula

  1. Jan 6, 2009 #1
    1. The problem statement, all variables and given/known data

    Use the fourth order Runge-Kutta formula to advance the differential equation:
    dy/dt = y with y(0)=1 forward one step h. That is find y(h).


    2. Relevant equations



    3. The attempt at a solution

    The Runge-Kutta formula is:
    x(i+1)=x(i)+h/6 [k(1)+2k(2)+2k(3)+k(4)]

    where,
    k(1)=f[x(i),t(i)]
    k(2)=f[x(i)+1/2 hk(1), t(i)+1/2 h]
    k(3)=f[x(i)+1/2 hk(2), t(i)+1/2h]
    k(4)=f[x(i)+hk(3),t(i)+h]

    I have no idea how to continue though, so any help would be great! thanks
     
  2. jcsd
  3. Jan 6, 2009 #2
    A first-order ODE is given as,

    [tex]dy/dx = f(x,y)[/tex]

    this is the defintion. So when one states, [tex]f(x_i,y_i)[/tex], this simply means, evaluate the first-order derivative at [tex]x_i[/tex] and [tex]y_i[/tex].

    This is how the method breaks down:

    [tex]The general form of the RK4 algorithm is given as,
    \begin{equation}\begin{split}
    k_{1}&=f(x_{i},y_{i})\\
    k_{2}&=f(x_{i}+\dfrac{1}{2}h, y_{i}+\dfrac{1}{2}k_{1}h)\\
    k_{3}&=f(x_{i}+\dfrac{1}{2}h,y_{i}+\dfrac{1}{2}k_{2}h)\\
    k_{4}&=f(x_{i}+h,y_{i}+k_{3}h)\\
    y_{i+1}&=y_{i}+\dfrac{1}{6}\cdot(k_{1}+2k_{2}+2k_{3}+k_{4})\cdot h
    \label{eq:}
    \end{split}\end{equation}[/tex]

    [tex]Simplified as eight equations,
    \begin{equation}\begin{split}
    k_1&=f(x_i,y_i)\\
    z_1&=y_i+\dfrac{1}{2}k_{1}h\\
    k_2&=f(x_{i}+\dfrac{1}{2}h, z_1)\\
    z_2&=y_i+\dfrac{1}{2}k_{2}h\\
    k_3&=f(x_{i}+\dfrac{1}{2}h, z_2)\\
    z_3&=y_i+k_{3}h\\
    k_4&=f(x_{i}+h, z_3)\\
    y_{i+1}&=y_i+\left(\dfrac{h\cdot(k_1+2(k_2+k_3)+ k_4)}{6}\right)
    \label{eq:}
    \end{split}\end{equation}
    [/tex]

    Say for example you are given, [tex]y'=(-y)ln(y),\;\;y(0)=0.5.[/tex]

    Hence,
    [tex]f(x_0,y_0)=(-0.5)\cdot ln(0.5)[/tex]

    In this example, it only varied in terms of y. However, you could be faced with an ODE such as [tex]y'=4e^{0.8x}-0.5y[/tex], in which case you need to take care how you substitute in the 'x' value. For the [tex]x_i+\dfrac{1}{2}h[/tex] bits, you need to evaluate it at [tex]x_{i+1}=x_i+\dfrac{1}{2}h[/tex].

    For example, if [tex]x_0=0[/tex] and h=0.5, then [tex]x_1=0+\dfrac{1}{2}(0.5)=0.25[/tex].

    Hope this helps...
     
  4. Jan 7, 2009 #3
    thankyou very much for that....i understand all of what you have said.

    So i found for my equation that f[t(0),y(0)] = 1, since y'=y and y(0)=1

    Im still slightly confused as to how to find y(h)?
     
  5. Jan 7, 2009 #4
    How do i find what k(1) - k(4) is? Do i substitute anything in for h?

    Also what are the value for t(i) and y(i)?
     
  6. Jan 7, 2009 #5
    You shouldn't jump to using RK4 if you don't understand the basics. Try using the Euler method (it's basically a first-order RK). You also need to know the stepsize 'h'. This is given with questions,

    [tex]y_{i+1}=y_i+hf(x_i,y_i)[/tex]

    As for your question, y'=y, you can ignore the x or 'time' component as it were, as it only varies in y.

    The first RK4 application would be, note [tex]y_0=y(0)=1[/tex],

    [tex]k_1 = f(0, 0) =1[/tex]
    [tex]k_2 = y_0+0.5*k_1*h[/tex]
    [tex]k_3 = y_0+0.5*k_2*h[/tex]
    [tex]k_4 = y_0+k_3*h[/tex]

    Hence,
    [tex]y_1=y_0+\left(\dfrac{h*(k_1+2(k_2+k_3)+k_4)}{6}\right)[/tex]

    For the next iteration, use [tex]y_1[/tex] to start off :)
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Have something to add?



Similar Discussions: Runge-kutta formula
  1. Reverse Runge Kutta? (Replies: 2)

  2. Runge-kutta 4 (Replies: 0)

Loading...