| 
						
						
						
					 | 
				
				 | 
				
					@ -0,0 +1,29 @@ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					# Program 02e: Numerical and truncated series solution | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					# figure 2.6 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import matplotlib.pyplot as plt | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import numpy as np | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					from scipy.integrate import odeint | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					def ode(X, t): | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    x = X[0] | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    y = X[1] | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    dxdt = y | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    dydt = x-t**2*y | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    return [dxdt, dydt] | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					X0 = [1, 0] | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					t = np.linspace(0, 10, 1000) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					sol = odeint(ode, X0, t) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					x = sol[:, 0] | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					y = sol[:, 1] | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					fig, ax = plt.subplots() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					ax.plot(t, x, label='Numerical') | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					ax.plot(t, 1+t**2/2+t**4/24, 'r-', label='Truncated series') | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					plt.xlabel('t') | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					plt.ylabel('x') | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					plt.xlim(0, 4) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					plt.ylim(0, 4) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					ax.legend() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					plt.show() |