from scipy.integrate import quad from scipy import linspace, cumsum, where import matplotlib.pyplot as graph import scipy.special as sp from numpy import fabs # The function that Quad uses func=lambda x: 1/(1+x**2) step=0.1 err=1 counter=0 steps = [] samples=sp.arange(0,5+step,step) results = sp.linspace(0,0,len(samples)) manual= sp.linspace(0,0,len(samples)) estimated_errors, real_errors=[],[] def integrate(samples,results): for i in range(len(samples)): # Compute Results with Quad results[i]=quad(func,0,samples[i])[0] return results def series(new_samples,new_results): # Compute manually using recursive summation new_results=step*(cumsum(func(new_samples)) - 0.5*(func(min(new_samples))+func(new_samples))) return new_results def ftrap(oldx,oldy): # Return double of the sample size
def ftrap(oldx,oldy): # Return double of the sample size newx = sp.arange(oldx[0],oldx[-1]+(0.5)*step,0.5*step) newy = sp.linspace(0,0,len(newx)) return (newx,newy)
import scipy import matplotlib.pyplot as graph import math import scipy.special as step # Parameters MAX_ITER=1000 MIN_ERR=1e-4 samples = step.arange(1,100,0.1) results = scipy.linspace(0,0,len(samples)) # Calculate series till least error is achieved for x in samples: index=scipy.nonzero(samples==x)[0][0] sign=1 for n in range(1,MAX_ITER): t = sign*x/(x*x+n*n) results[index] += t sign = -sign if(abs(t)<MIN_ERR): break # Write to file with file('output.dat','w') as output: for xx in scipy.c_[samples,results]: output.write(str(xx[0])+'\t'+str(xx[1])+'\n')