from pylab import linspace,pi,exp,real,imag,axis
import matplotlib.path as mpath
import matplotlib.patches as mpatches
import matplotlib.pyplot as plt
w=exp(1j*linspace(0,2*pi,200))
Path=mpath.Path
fig = plt.figure()
for name,z in zip(['Euler','trapezoidal', 'AB2'],\
[ w-1, [5j,-5+5j,-5-5j,-5j,5j],2*(w**2-w)/(3*w-1)]):
fig.clf()
ax=fig.add_subplot(111)
verts=map(lambda z:(real(z),imag(z)), z)
codes=[Path.MOVETO]+[Path.LINETO]*(len(verts)-2)+[Path.CLOSEPOLY]
path=mpath.Path(verts,codes)
patch=mpatches.PathPatch(path,facecolor=[1, 0.5, 0.8],edgecolor='black',alpha=1)
ax.add_patch(patch)
ax.plot([-3,2],[0,0],'--',color='black')
ax.plot([0,0],[-2,2],'--',color='black')
ax.set_xlim(-3,2)
ax.set_ylim(-2,2)
fig.savefig("Stability region for "+name+" method.svg")