def runge_step(f, xk, yk, h, *args):
	""" 
		completes a single step of the runge cutter method (K4)

		----------

		Parameters

		----------
		
		f: callable
			differential equation to solve

		xk: float
			x ordinate for step start

		tk: float
			y ordinate for step start
		
		h: float
			step size

		----------

		Returns

		----------

		float: Approximated yk+1 value
	"""
	k1 = h*f(xk, yk, *args)
	k2 = h*f(xk + h/2, yk + k1/2, *args)
	k3 = h*f(xk + h/2, yk + k2/2, *args)
	k4 = h*f(xk + h, yk + k3, *args)

	return yk + (1/6)*(k1 + 2*k2 + 2*k3 + k4)