#!/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_resonance_D_envelope.svg'
fig = mplwp.fig_standard(mpl)
xlim = 0,3; fig.gca().set_xlim(xlim)
ylim = 0,6; fig.gca().set_ylim(ylim)
mplwp.mark_axeszero(fig.gca())
envelope = lambda x: 1.0 / abs(1 - x**2)
x = np.linspace(xlim[0], xlim[1], 6001)
y_env = [envelope(xx) for xx in x]
plt.plot(x, y_env, color='grey', dashes=[10,5], label=u'Einhüllende')
maxima = lambda x: 1.0 / sqrt(1 - x**4)
x_max = np.linspace(xlim[0], 1, 1001)[:-1]
y_max = [maxima(xx) for xx in x_max]
plt.plot(x_max, y_max, color='grey', dashes=[3,3], label='Maxima')
for D in [0.1, 0.2, 0.3, 0.5, 1]:
f = lambda x: 1.0 / sqrt((x**2 - 1.0)**2 + (2*x*D)**2)
y = [f(xx) for xx in x]
plt.plot(x, y, label='D={:g}'.format(D))
plt.legend(loc='upper right').get_frame().set_alpha(0.9)
plt.savefig(name)
mplwp.postprocess(name)