def compute(s0, s1, a = 1):
    th_ch = s1 ** (a+2) + (-s0) ** (a + 2) / ((a+1) * (a+2) * (s1-s0))
    th0 = (-s0) ** (a+1) / (a + 1) - th_ch
    th1 = s1 ** (a+1) / (a + 1) - th_ch
    k0 = -(-s0) ** a * (s1-s0)
    k1 = s1 ** a * (s1 - s0)
    return th0, th1, k0, k1

# solve for k0/th0 = k1/th1
# use bisection because it's so easy
def solve(s0, a = 1):
    l = 0
    r = -s0 * .5
    for i in range(30):
	m = (l + r) * .5
	#m = i * -s0 * .05
	th0, th1, k0, k1 = compute(s0, m, a)
	err = k1 / th1 - k0 / th0
	#print err
	if err > 0:
	    l = m
	else:
	    r = m
    #print 'falloff =', k1 / k0
    return k1 / k0

def make_graph():
    for i in range(101):
	a = i * .05
	print a, -solve(-.01, a)

make_graph()
