def get_euler_solution(derivative, numsteps, upper, initial):
    """
    Returns an explicit Euler's method solution to a given differential equation,
    called `derivative`, of the form dy/dx = f(x, y)
    Can operate on numpy vectors
    Runs with `numsteps` iterations, from x = 0 to x = `upper`
    Uses `initial` as the initial value for y
    """
    inputs = [0]
    outputs = [initial]
    delta = float(upper) / numsteps
    for i in range(1, numsteps):
        inputs.append(inputs[i-1] + delta)
        outputs.append(outputs[i-1] + delta * derivative(inputs[i-1], outputs[i-1]))
    return inputs, outputs