if (name_declared("pkgversions") != 4 ) { execute("strdef pkgversions") } sprint(pkgversions,"%sIntegrator = $Revision: 1.2 $, ",pkgversions) // // integral(Vector y, Vector x) // // Numerical integration using trapezoid rule // begintemplate Integrator public integrate objref x0, x1, ybar, dx proc init() { x0 = new Vector() x1 = new Vector() dx = new Vector() ybar = new Vector() } func integrate () { x0.indgen(0, $o2.size()-2,1) x1.indgen(1, $o2.size()-1,1) ybar = $o1.ind(x0) ybar.add($o1.ind(x1)) dx.deriv($o2,1,1) return ybar.dot(dx)/2 } endtemplate Integrator objref integrator integrator = new Integrator()