示例#1
0
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
示例#2
0
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)
示例#3
0
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')