import math as m import numpy as np import matplotlib.pyplot as plt import scipy.special as sp # import matplotlib.animation as animation def draw_frame(n,filename,line_color): fig = plt.figure() plt.axes([0.02,0.13,0.9,0.8]) plt.hold(True) plt.xlim(-4*np.pi,4*np.pi) plt.ylim(-5,5) # Set up the spines ax = plt.gca() ax.spines['right'].set_color('none') ax.spines['top'].set_color('none') ax.xaxis.set_ticks_position('bottom') ax.spines['bottom'].set_position(('data',0)) ax.yaxis.set_ticks_position('left') ax.spines['left'].set_position(('data',0)) # Set up the label ax.text(0.3,4.3,'N='+str(n),fontsize=24,color=line_color) Q = [] # Draw the original function (ORG) curve X = np.arange(-4*np.pi,4*np.pi, 0.001) ORG = np.sin(X) a = plt.plot(X, ORG, '-', color='black', lw=3) Q.append(a) # Draw the approximation function (APPR) curve i=1 APPR = (-1)**(i+1)*(X**(2*i-1))/m.factorial(2*i-1) while (i<n): i = i+1 APPR = APPR+(-1)**(i+1)*(X**(2*i-1))/m.factorial(2*i-1) a = plt.plot(X, APPR, '-', color=line_color, lw=3) Q.append(a) plt.savefig(filename) draw_frame(1,'frame01.jpg','#b30000') draw_frame(2,'frame02.jpg','#00b300') draw_frame(3,'frame03.jpg','#0000b3') draw_frame(4,'frame04.jpg','#b3b300') draw_frame(5,'frame05.jpg','#00b3b3') draw_frame(6,'frame06.jpg','#b300b3') draw_frame(7,'frame07.jpg','#b3b3b3') draw_frame(8,'frame08.jpg','#3300b3') draw_frame(9,'frame09.jpg','#33b300') draw_frame(10,'frame10.jpg','#0033b3') draw_frame(11,'frame11.jpg','#b3b333') draw_frame(12,'frame12.jpg','#334433') draw_frame(13,'frame13.jpg','#ff0000') draw_frame(14,'frame14.jpg','#0000ff') draw_frame(15,'frame15.jpg','#00ff00') # To generate the final GIF file, use the shell command: # convert -antialias -loop 0 -delay 100 -compress LZW frame* Sine_GIF.gif