File: rk4.py

package info (click to toggle)
pycode-browser 1%3A1.03-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 9,860 kB
  • sloc: python: 2,919; xml: 152; makefile: 76
file content (27 lines) | stat: -rwxr-xr-x 573 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
'''
Solving initial value problem using 4th order Runge-Kutta method.
Sine function is calculated by integrating its derivative, cosine.
'''
from pylab import *

def rk4(x, y, fx, h = 0.01):   # x, y , derivative, stepsize
	k1 = h * fx(x)
	k2 = h * fx(x + h/2.0)
	k3 = h * fx(x + h/2.0)
	k4 = h * fx(x + h)
	return y + ( k1/6 + k2/3 + k3/3 + k4/6 )



h = 0.01    # stepsize
x = 0.0     # initail values
y = 0.0
ax = [x]
ay = [y]
while x < math.pi:
     y = rk4(x,y,math.cos)       # Runge-Kutta method
     x = x + h
     ax.append(x)
     ay.append(y)
plot(ax,ay)
show()