Given a function, initial conditions, step size and end value, this will
		calculate an unforced system. The default start time is t=0.0, but this
		can be changed.

		y - initial state
		h - step size
		n - stop time

def solve(self, y, h, t_end):
		"""
		Given a function, initial conditions, step size and end value, this will
		calculate an unforced system. The default start time is t=0.0, but this
		can be changed.

		y - initial state
		h - step size
		n - stop time
		"""
		ts = []
		ys = []
		yi = y
		ti = 0.0
		while ti < t_end:
			ts.append(ti)
			yi = self.step(yi, None, ti, h)
			ys.append(yi)
			ti += h
		return ts, ys