| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -1003,14 +1003,17 @@ def richardson(Q, k):
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    return R
 | 
					 | 
					 | 
					 | 
					    return R
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					def quadgr(fun, a, b, abseps=1e-5, max_iter=17):
 | 
					 | 
					 | 
					 | 
					class _Quadgr(object):
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    def __call__(self, fun, a, b, abseps=1e-5, max_iter=17):
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        '''
 | 
					 | 
					 | 
					 | 
					        '''
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        Gauss-Legendre quadrature with Richardson extrapolation.
 | 
					 | 
					 | 
					 | 
					        Gauss-Legendre quadrature with Richardson extrapolation.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        [Q,ERR] = QUADGR(FUN,A,B,TOL) approximates the integral of a function
 | 
					 | 
					 | 
					 | 
					        [Q,ERR] = QUADGR(FUN,A,B,TOL) approximates the integral of a function
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        FUN from A to B with an absolute error tolerance TOL. FUN is a function
 | 
					 | 
					 | 
					 | 
					        FUN from A to B with an absolute error tolerance TOL. FUN is a function
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        handle and must accept vector arguments. TOL is 1e-6 by default. Q is
 | 
					 | 
					 | 
					 | 
					        handle and must accept vector arguments. TOL is 1e-6 by default. Q is
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    the integral approximation and ERR is an estimate of the absolute error.
 | 
					 | 
					 | 
					 | 
					        the integral approximation and ERR is an estimate of the absolute
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        error.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        QUADGR uses a 12-point Gauss-Legendre quadrature. The error estimate is
 | 
					 | 
					 | 
					 | 
					        QUADGR uses a 12-point Gauss-Legendre quadrature. The error estimate is
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        based on successive interval bisection. Richardson extrapolation
 | 
					 | 
					 | 
					 | 
					        based on successive interval bisection. Richardson extrapolation
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -1116,7 +1119,8 @@ def quadgr(fun, a, b, abseps=1e-5, max_iter=17):
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            hh = hh / 2
 | 
					 | 
					 | 
					 | 
					            hh = hh / 2
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            x = np.hstack([x + a, x + b]) / 2
 | 
					 | 
					 | 
					 | 
					            x = np.hstack([x + a, x + b]) / 2
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            # Quadrature
 | 
					 | 
					 | 
					 | 
					            # Quadrature
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        Q0[k] = hh * np.sum(wq * np.sum(np.reshape(fun(x), (-1, nq)), axis=0),
 | 
					 | 
					 | 
					 | 
					            Q0[k] = hh * np.sum(wq * np.sum(np.reshape(fun(x), (-1, nq)),
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                            axis=0),
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                axis=0)
 | 
					 | 
					 | 
					 | 
					                                axis=0)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            # Richardson extrapolation
 | 
					 | 
					 | 
					 | 
					            # Richardson extrapolation
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -1148,7 +1152,8 @@ def quadgr(fun, a, b, abseps=1e-5, max_iter=17):
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if (err < abseps) | ~np.isfinite(Q):
 | 
					 | 
					 | 
					 | 
					            if (err < abseps) | ~np.isfinite(Q):
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                break
 | 
					 | 
					 | 
					 | 
					                break
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        else:
 | 
					 | 
					 | 
					 | 
					        else:
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        warnings.warn('Max number of iterations reached without convergence.')
 | 
					 | 
					 | 
					 | 
					            warnings.warn('Max number of iterations reached without ' +
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                          'convergence.')
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        if ~ np.isfinite(Q):
 | 
					 | 
					 | 
					 | 
					        if ~ np.isfinite(Q):
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            warnings.warn('Integral approximation is Infinite or NaN.')
 | 
					 | 
					 | 
					 | 
					            warnings.warn('Integral approximation is Infinite or NaN.')
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -1161,6 +1166,8 @@ def quadgr(fun, a, b, abseps=1e-5, max_iter=17):
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        return Q, err
 | 
					 | 
					 | 
					 | 
					        return Q, err
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					quadgr = _Quadgr()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					def boole(y, x):
 | 
					 | 
					 | 
					 | 
					def boole(y, x):
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    a, b = x[0], x[-1]
 | 
					 | 
					 | 
					 | 
					    a, b = x[0], x[-1]
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
 
 |