#!/usr/bin/python
# -*- coding: utf8 -*-
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
from math import *
code_website = 'http://commons.wikimedia.org/wiki/User:Geek3/mplwp'
try:
import mplwp
except ImportError, er:
print 'ImportError:', er
print 'You need to download mplwp.py from', code_website
exit(1)
name = 'mplwp_roots_01.svg'
fig = mplwp.fig_standard(mpl)
fig.set_size_inches(420. / fig.dpi, 400. / fig.dpi)
l, r, t, b = (42.5, 22.5, 18.5, 26.5)
mplwp.set_bordersize(fig, l, r, t, b)
xlim = 0,1; fig.gca().set_xlim(xlim)
ylim = 0,1; fig.gca().set_ylim(ylim)
mplwp.mark_axeszero(fig.gca())
from scipy import optimize
for n in [1./8, 1./4, 1./2, 1., 2., 4., 8.]:
f = lambda x: x**n
x = np.linspace(0, xlim[1], 5001)
y = [f(xx) for xx in x]
plt.plot(x, y)
xl = optimize.brentq(lambda x: x**n + x - 1.0, 0, 1)
if n >= 1:
power = str(int(n))
else:
power = '1/' + str(int(1./n))
plt.text(xl, 1-xl, r'$x^{' + power + r'}$', ha='right')
plt.savefig(name)
mplwp.postprocess(name)