interpretationAllMethods.py

#
# Interpretation of usual methods in terms of integration
# Vincent Legat - 2018
# Ecole Polytechnique de Louvain
#


import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['toolbar'] = 'None'
plt.rcParams['figure.facecolor'] = 'white'
from matplotlib import colors



from numpy import *



x = linspace(0,3,100)
u = 1+4*exp(-x);
Uend = 1+4*exp(-3); Ustart = 5
 
 
plt.figure("Interpretation of Euler's and Crank-Nicolson's methods")
 
#plt.figure("Explicit Euler's Method")
plt.subplot(221)
plt.text(1.7,3,'Explicit Euler',fontsize=12)
plt.text(0.2,5.2,"u'(x)",fontsize=10)
plt.text(5,0.2,"x",fontsize=10)
plt.fill([0,3,3,0,0],[Ustart,Ustart,0,0,Ustart],color='lightgreen')
plt.plot(x,u,'-b')
plt.plot([0,3],[Ustart,Uend],'.b')
ax = plt.gca()
ax.axhline(y=0,color='k',linewidth=0.8)
ax.axvline(x=0,color='k',linewidth=0.8)
plt.axis('equal')
plt.axis('off')

#plt.figure("Imlicit Euler's Method")
plt.subplot(222)
plt.text(1.7,3,'Implicit Euler',fontsize=12)
plt.fill([0,3,3,0,0],[Uend,Uend,0,0,Uend],color='lightgreen')
plt.plot(x,u,'-b')
plt.plot([0,3],[Ustart,Uend],'.b')
ax = plt.gca()
ax.axhline(y=0,color='k',linewidth=0.8)
ax.axvline(x=0,color='k',linewidth=0.8)
plt.axis('equal')
plt.axis('off')

#plt.figure("Crank-Nicolson's Method")
plt.subplot(223)
plt.text(1.7,3,'Crank-Nicolson',fontsize=12)
plt.fill([0,3,3,0,0],[Ustart,Uend,0,0,Ustart],color='lightgreen')
plt.plot(x,u,'-b')
plt.plot([0,3],[Ustart,Uend],'.b')
ax = plt.gca()
ax.axhline(y=0,color='k',linewidth=0.8)
ax.axvline(x=0,color='k',linewidth=0.8)
plt.axis('equal')
plt.axis('off')

# plt.figure("Exact integration")
plt.subplot(224)
plt.text(1.7,3,'Exact',fontsize=12)
plt.fill(append(x,[3,0]),append(u,[0,0]),color='lightgreen')
plt.plot(x,u,'-b')
plt.plot([0,3],[Ustart,Uend],'.b')
ax = plt.gca()
ax.axhline(y=0,color='k',linewidth=0.8)
ax.axvline(x=0,color='k',linewidth=0.8)
plt.axis('equal')
plt.axis('off')



plt.show()