function [q,ea,iter]=romberg(func,a,b,es,maxit,varargin) % romberg: Romberg integration quadrature % q = romberg(func,a,b,es,maxit,p1,p2,...): % Romberg integration. % input: % func = name of function to be integrated % a, b = integration limits % es = desired relative error (default = 0.000001%) % maxit = maximum allowable iterations (default = 30) % pl,p2,... = additional parameters used by func % output: % q = integral estimate % ea = approximate relative error (%) % iter = number of iterations if nargin<3,error('at least 3 input arguments required'),end if nargin<4|isempty(es), es=0.000001;end if nargin<5|isempty(maxit), maxit=50;end n = 1; I(1,1) = trap(func,a,b,n,varargin{:}); iter = 0; while itera),error('upper bound must be greater than lower'),end if nargin<4|isempty(n),n=100;end x = a; h = (b - a)/n; s=func(a,varargin{:}); for i = 1 : n-1 x = x + h; s = s + 2*func(x,varargin{:}); end s = s + func(b,varargin{:}); I = (b - a) * s/(2*n); end