#!/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_factorial_stirling_loglog.svg' fig = mplwp.fig_standard(mpl) xlim = 1, 1e5; fig.gca().set_xlim(xlim) ylim = 1e-1, 1e6; fig.gca().set_ylim(ylim) from scipy.special import gammaln from scipy.optimize import brentq f1 = lambda x: gammaln(1 + x) x1min = brentq(lambda x: f1(x) - ylim[0], xlim[0], xlim[1]) x1 = np.logspace(log10(x1min), log10(xlim[1]), 5000) y1 = [f1(xx) for xx in x1] plt.loglog(x1, y1, label='ln n!', zorder=2) f2 = lambda x: x * log(x) - x x2min = brentq(lambda x: f2(x) - ylim[0], xlim[0], xlim[1]) x2 = np.logspace(log10(x2min), log10(xlim[1]), 5000) y2 = [f2(xx) for xx in x2] plt.loglog(x2, y2, label=u'n ln n \u2212 n', zorder=1) plt.legend(loc='upper left').get_frame().set_alpha(0.9) plt.savefig(name) mplwp.postprocess(name)