Solving 4th Order Runge-Kutta w/ dy/dt = y, y(0)=1

Join the discussion
Registration is free. Start your own thread to ask a follow-up.
4 replies · 3K views
kmeado07
Messages
40
Reaction score
0

Homework Statement



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).


Homework Equations





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
 
Physics news on Phys.org
A first-order ODE is given as,

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

this is the definition. 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,<br /> \begin{equation}\begin{split} <br /> k_{1}&=f(x_{i},y_{i})\\<br /> k_{2}&=f(x_{i}+\dfrac{1}{2}h, y_{i}+\dfrac{1}{2}k_{1}h)\\<br /> k_{3}&=f(x_{i}+\dfrac{1}{2}h,y_{i}+\dfrac{1}{2}k_{2}h)\\<br /> k_{4}&=f(x_{i}+h,y_{i}+k_{3}h)\\<br /> y_{i+1}&=y_{i}+\dfrac{1}{6}\cdot(k_{1}+2k_{2}+2k_{3}+k_{4})\cdot h<br /> \label{eq:}<br /> \end{split}\end{equation}[/tex]

[tex]Simplified as eight equations,<br /> \begin{equation}\begin{split} <br /> k_1&=f(x_i,y_i)\\<br /> z_1&=y_i+\dfrac{1}{2}k_{1}h\\<br /> k_2&=f(x_{i}+\dfrac{1}{2}h, z_1)\\<br /> z_2&=y_i+\dfrac{1}{2}k_{2}h\\<br /> k_3&=f(x_{i}+\dfrac{1}{2}h, z_2)\\<br /> z_3&=y_i+k_{3}h\\<br /> k_4&=f(x_{i}+h, z_3)\\<br /> y_{i+1}&=y_i+\left(\dfrac{h\cdot(k_1+2(k_2+k_3)+ k_4)}{6}\right)<br /> \label{eq:}<br /> \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...
 
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)?
 
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)?
 
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 :)