root_finding¶
- quantecon.optimize.root_finding.bisect(f, a, b, args=(), xtol=2e-12, rtol=np.float64(8.881784197001252e-16), maxiter=100, disp=True)[source]¶
Find root of a function within an interval adapted from Scipy’s bisect.
Basic bisection routine to find a zero of the function f between the arguments a and b. f(a) and f(b) cannot have the same signs.
f must be jitted via numba.
- Parameters:
- fjitted and callable
Python function returning a number. f must be continuous.
- anumber
One end of the bracketing interval [a,b].
- bnumber
The other end of the bracketing interval [a,b].
- argstuple, optional(default=())
Extra arguments to be used in the function call.
- xtolnumber, optional(default=2e-12)
The computed root
x0
will satisfynp.allclose(x, x0, atol=xtol, rtol=rtol)
, wherex
is the exact root. The parameter must be nonnegative.- rtolnumber, optional(default=4*np.finfo(float).eps)
The computed root
x0
will satisfynp.allclose(x, x0, atol=xtol, rtol=rtol)
, wherex
is the exact root.- maxiternumber, optional(default=100)
Maximum number of iterations.
- dispbool, optional(default=True)
If True, raise a RuntimeError if the algorithm didn’t converge.
- Returns:
- resultsnamedtuple
- quantecon.optimize.root_finding.brentq(f, a, b, args=(), xtol=2e-12, rtol=np.float64(8.881784197001252e-16), maxiter=100, disp=True)[source]¶
Find a root of a function in a bracketing interval using Brent’s method adapted from Scipy’s brentq.
Uses the classic Brent’s method to find a zero of the function f on the sign changing interval [a , b].
f must be jitted via numba.
- Parameters:
- fjitted and callable
Python function returning a number. f must be continuous.
- anumber
One end of the bracketing interval [a,b].
- bnumber
The other end of the bracketing interval [a,b].
- argstuple, optional(default=())
Extra arguments to be used in the function call.
- xtolnumber, optional(default=2e-12)
The computed root
x0
will satisfynp.allclose(x, x0, atol=xtol, rtol=rtol)
, wherex
is the exact root. The parameter must be nonnegative.- rtolnumber, optional(default=4*np.finfo(float).eps)
The computed root
x0
will satisfynp.allclose(x, x0, atol=xtol, rtol=rtol)
, wherex
is the exact root.- maxiternumber, optional(default=100)
Maximum number of iterations.
- dispbool, optional(default=True)
If True, raise a RuntimeError if the algorithm didn’t converge.
- Returns:
- resultsnamedtuple
- quantecon.optimize.root_finding.newton(func, x0, fprime, args=(), tol=1.48e-08, maxiter=50, disp=True)[source]¶
Find a zero from the Newton-Raphson method using the jitted version of Scipy’s newton for scalars. Note that this does not provide an alternative method such as secant. Thus, it is important that fprime can be provided.
Note that func and fprime must be jitted via Numba. They are recommended to be njit for performance.
- Parameters:
- funccallable and jitted
The function whose zero is wanted. It must be a function of a single variable of the form f(x,a,b,c…), where a,b,c… are extra arguments that can be passed in the args parameter.
- x0float
An initial estimate of the zero that should be somewhere near the actual zero.
- fprimecallable and jitted
The derivative of the function (when available and convenient).
- argstuple, optional(default=())
Extra arguments to be used in the function call.
- tolfloat, optional(default=1.48e-8)
The allowable error of the zero value.
- maxiterint, optional(default=50)
Maximum number of iterations.
- dispbool, optional(default=True)
If True, raise a RuntimeError if the algorithm didn’t converge
- Returns:
- resultsnamedtuple
A namedtuple containing the following items:
root - Estimated location where function is zero. function_calls - Number of times the function was called. iterations - Number of iterations needed to find the root. converged - True if the routine converged
- quantecon.optimize.root_finding.newton_halley(func, x0, fprime, fprime2, args=(), tol=1.48e-08, maxiter=50, disp=True)[source]¶
Find a zero from Halley’s method using the jitted version of Scipy’s.
func, fprime, fprime2 must be jitted via Numba.
- Parameters:
- funccallable and jitted
The function whose zero is wanted. It must be a function of a single variable of the form f(x,a,b,c…), where a,b,c… are extra arguments that can be passed in the args parameter.
- x0float
An initial estimate of the zero that should be somewhere near the actual zero.
- fprimecallable and jitted
The derivative of the function (when available and convenient).
- fprime2callable and jitted
The second order derivative of the function
- argstuple, optional(default=())
Extra arguments to be used in the function call.
- tolfloat, optional(default=1.48e-8)
The allowable error of the zero value.
- maxiterint, optional(default=50)
Maximum number of iterations.
- dispbool, optional(default=True)
If True, raise a RuntimeError if the algorithm didn’t converge
- Returns:
- resultsnamedtuple
A namedtuple containing the following items:
root - Estimated location where function is zero. function_calls - Number of times the function was called. iterations - Number of iterations needed to find the root. converged - True if the routine converged
- quantecon.optimize.root_finding.newton_secant(func, x0, args=(), tol=1.48e-08, maxiter=50, disp=True)[source]¶
Find a zero from the secant method using the jitted version of Scipy’s secant method.
Note that func must be jitted via Numba.
- Parameters:
- funccallable and jitted
The function whose zero is wanted. It must be a function of a single variable of the form f(x,a,b,c…), where a,b,c… are extra arguments that can be passed in the args parameter.
- x0float
An initial estimate of the zero that should be somewhere near the actual zero.
- argstuple, optional(default=())
Extra arguments to be used in the function call.
- tolfloat, optional(default=1.48e-8)
The allowable error of the zero value.
- maxiterint, optional(default=50)
Maximum number of iterations.
- dispbool, optional(default=True)
If True, raise a RuntimeError if the algorithm didn’t converge.
- Returns:
- resultsnamedtuple
A namedtuple containing the following items:
root - Estimated location where function is zero. function_calls - Number of times the function was called. iterations - Number of iterations needed to find the root. converged - True if the routine converged