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
|
#Euler and Runge-Kutta methods are used to calculate sine from its derivative, cosine.
'''
Sine function is calculated using its derivative, cosine.
Using Euler and RK4 method, with
'''
import math
def rk4(x, y, yprime, dx = 0.01): # x, y , derivative, stepsize
k1 = dx * yprime(x)
k2 = dx * yprime(x + dx/2.0)
k3 = dx * yprime(x + dx/2.0)
k4 = dx * yprime(x + dx)
return y + ( k1/6 + k2/3 + k3/3 + k4/6 )
h = 0.01 # stepsize
x = 0.0 # initail values
y = 0.0 # for Euler
z = 0.0 # for RK4
while x < math.pi:
print( x, y - math.sin(x), z - math.sin(x) ) # errors
y = y + h * math.cos(x) # Euler method
z = rk4(x,z,math.cos,h) # Runge-Kutta method
x = x + h
|