import numpy as np
import matplotlib.pyplot as plt

def eksplisitt_euler(f, g, y0, z0, h):
	y = [y0]
	z = [z0]
	for i in range(500):
		y.append(y[i] + h*f(z[i]))
		z.append(z[i] + h*g(y[i]))
	return y, z

def symplektisk_euler(f, g, y0, z0, h):
	y = [y0]
	z = [z0]
	for i in range(400):
		y.append(y[i] + h*f(z[i]))
		z.append(z[i] + h*g(y[i+1]))
	return y, z

def f(z):
	return z

def g(y):
	return -np.sin(y)

y1, z1 = eksplisitt_euler(f, g, 1, 1, 0.1)
y2, z2 = symplektisk_euler(f, g, 1, 0, 0.1)

plt.plot(y1,z1)
#plt.plot(y2,z2)
plt.grid(True)
plt.show()