File: compareEuRK4.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 (35 lines) | stat: -rwxr-xr-x 765 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
28
29
30
31
32
33
34
35
'''
Cosine function is integrated by Euler and RK4 methods. 
Results at each step is compared with sine function.
'''
from pylab import *



def rk4(x, y, fx, h = 0.1):   # 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.1     # stepsize
x = 0.0     # initail values
ye = 0.0    # for Euler
yr = 0.0    # for RK4
ax = []     # Lists to store calculated values
euerr = []
rkerr = []

while x < 2*pi:
     ye = ye + h * math.cos(x)       # Euler method
     yr = rk4(x, yr, cos, h)    # Runge-Kutta method
     x = x + h  
     ax.append(x)
     euerr.append(ye - sin(x))
     rkerr.append(yr - sin(x))
  
plot(ax,euerr,'+')
plot(ax, rkerr,'ro')
show()