File: rk4_proper.py

package info (click to toggle)
pycode-browser 1%3A1.02%2Bgit20181006-3
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 6,088 kB
  • sloc: python: 2,779; xml: 152; makefile: 71
file content (34 lines) | stat: -rwxr-xr-x 632 bytes parent folder | download | duplicates (4)
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
'''
Solving initial value problem using 4th order Runge-Kutta method.
derivative depends on the value of the function.
f(x,y) = 1 + y**2
'''

from pylab import *

def f1(x,y):
       return 1 + y**2

def f2(x,y):
        return (y-x)/(y+x)

def rk4(x, y, fxy, h):   # x, y , f(x,y)
	k1 = h * fxy(x, y)
	k2 = h * fxy(x + h/2.0, y+k1/2)
	k3 = h * fxy(x + h/2.0, y+k2/2)
	k4 = h * fxy(x + h, y+k3)
	ny = y + ( k1/6 + k2/3 + k3/3 + k4/6 )
	#print x,y,k1,k2,k3,k4, ny
	return ny


h = 0.2   # stepsize
x = 0.0   # initail values
y = 0.0
print rk4(x,y,f1,h) 

h = 1    # stepsize
x = 0.0    # initail values
y = 1.0
print rk4(x,y,f2,h)