Beispiel #1
0
# STEP = size of integration step

from IntegrationEngine import *
from InputValidator import *
from InputReader import *
from scipy import integrate
import sys

print "Welcome to >>INTEGRATOR 2000<<"

reader = InputReader(sys.argv)  # get input
validator = InputValidator(reader.data())  # initialize validator
validator.run()  # validate input

if validator.isvalid:  # if input is valid, proceed with integral calculation
    func = validator.function()
    opts = validator.options()

    integrator = IntegrationEngine('trapez')  # initialization of an engine
    myintegral = integrator.integrate(func, *opts)  # calculate integral using own algorithm
    scipyintegral = integrate.quad(func, opts[0], opts[1]) # calculate integral using scipy library

    print 'Integral calculated with own algorithm        :\t' + str(myintegral)
    print 'Integral calculated with scipy.integrate.quad :\t' + str(scipyintegral[0])
    print 'Relative difference amounts ' + str(100*(myintegral-scipyintegral[0])/scipyintegral[0]) + '%'

    print "Thank you for using >>INTEGRATOR 2000<<  :-)"
else:
    print "Invalid input parameters, exiting >>INTEGRATOR 2000<<."