# # 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()