DEFINITION MODULE BraBis; (* EXPORT QUALIFIED RtBis, ZBrac, ZBrak; *) FROM NRMath IMPORT RealFunction; FROM NRVect IMPORT Vector; PROCEDURE RtBis(fx: RealFunction; x1, x2, xacc: REAL): REAL; (* Using bisection, find the root of a function fx known to lie between x1 and x2. The root, returned as RtBis, will be refined until its accuracy is (+-)xacc. *) PROCEDURE ZBrac( fx: RealFunction; VAR x1, x2: REAL; VAR succes: BOOLEAN); (* Given a function fx and an initial guessed range x1 to x2, the routine expands the range geometrically until a root is bracketed by the returned values x1 and x2 (in which case success returns as TRUE) or until the range becomes unacceptably large (in which case success returns as FALSE). Success is guaranteed for a function which has opposite signs for sufficiently large and small arguments. *) PROCEDURE ZBrak( fx: RealFunction; x1, x2: REAL; n: INTEGER; XB1, XB2: Vector; VAR nb: INTEGER); (* Given a function fx defined on the interval from x1 to x2 subdivide the interval into n equally spaced segments, and search for zero crossings of the function. nb is input as the maximum number of roots sought, and is reset to the number of bracketing pairs XB1[1, nb], XB2[1, nb] that are found. *) END BraBis.