Dekker Brent Solver<T> Class
Definition
Assembly: Numerics.NET.Generic (in Numerics.NET.Generic.dll) Version: 9.0.1
public sealed class DekkerBrentSolver<T> : RootBracketingSolver<T>
where T : Object, INumber<T>
- Inheritance
- Object → ManagedIterativeAlgorithm<T, T, SolutionReport<T, T>> → IterativeAlgorithm<T> → EquationSolver<T> → RootBracketingSolver<T> → DekkerBrentSolver<T>
Type Parameters
- T
Remarks
Use the DekkerBrentSolver class to find a root of a function if you have an interval that includes a root with certainty. This is one of the more robust of the root bracketing solver algorithms. The RobustSolver, based on TOMS algorithm 748, is generally somewhat faster and more reliable.
DekkerBrentSolver inherits from RootBracketingSolver, which in turn inherits from IterativeAlgorithm<T>. All properties of IterativeAlgorithm<T> are available. The AbsoluteTolerance and RelativeTolerance properties set the desired precision as specified by the ConvergenceCriterion property. The default value for both tolerances is SqrtEpsilon (roughly 10-8). MaxIterations sets the maximum number of iterations.
The TargetFunction property is a function of one variable that specifies the function we want to find a root for. The LowerBound and UpperBound properties specify the bounds of the bracketing interval. The target function must have a different sign at each end of this interval.
The Solve() method performs the actual approximation of the root. This method returns the best approximation that was found. The Status property indicates whether the algorithm was successful. The EstimatedError property gives an upper bound for the difference between the approximated and the actual root.
The Dekker-Brent method is the most advanced of the root bracketing algorithms. It combines the robustness of the bisection method with the increased speed of the regula falsi (false positioning) method.
At each iteration, either a bisection or a regula falsi step is taken, depending on the behavior of the algorithm up to that point. As a result, the Dekker-Brent method will converge as fast as the best case regula falsi method at its best, and as slow as the bisection method at its worst.
Constructors
Dekker | Constructs a new DekkerBrentSolver. |
Dekker | Constructs a new DekkerBrentSolver for a specified target function over a given bracketing interval and tolerance. |
Dekker | Constructs a new DekkerBrentSolver for a specified target function over a given bracketing interval and tolerance. |
Properties
Absolute |
Gets or sets the absolute tolerance used in the
convergence test.
(Inherited from IterativeAlgorithm<T>) |
Convergence |
Gets or sets a value specifying the criterion that is
to be used in the convergence test for the algorithm.
(Inherited from IterativeAlgorithm<T>) |
Convergence |
Gets the convergence test for the algorithm.
(Inherited from IterativeAlgorithm<T>) |
Convergence |
Gets the collection of convergence tests for the algorithm.
(Inherited from ManagedIterativeAlgorithm<T, TError, TReport>) |
Estimated |
Gets a value indicating the size of the absolute
error of the result.
(Inherited from ManagedIterativeAlgorithm<T, TError, TReport>) |
Evaluations |
Gets the number of evaluations needed to execute the algorithm.
(Inherited from ManagedIterativeAlgorithm<T, TError, TReport>) |
Has |
Indicates whether the degree of parallelism is a property that is shared
across instances.
(Inherited from ManagedIterativeAlgorithm<T, TError, TReport>) |
Iterations |
Gets the number of iterations needed by the
algorithm to reach the desired accuracy.
(Inherited from ManagedIterativeAlgorithm<T, TError, TReport>) |
Lower |
Gets or sets the lower bound for the solution.
(Inherited from EquationSolver<T>) |
Max |
Gets or sets the maximum degree of parallelism enabled by this instance.
(Inherited from ManagedIterativeAlgorithm<T, TError, TReport>) |
Max |
Gets or sets the maximum number of evaluations during the calculation.
(Inherited from ManagedIterativeAlgorithm<T, TError, TReport>) |
Max | Gets or sets the maximum number of iterations
to use when approximating the roots of the target
function.
(Inherited from ManagedIterativeAlgorithm<T, TError, TReport>) |
Min |
Gets or sets the minimum iterations that have to be performed.
(Inherited from ManagedIterativeAlgorithm<T, TError, TReport>) |
Parallel |
Gets or sets the configuration for the parallel behavior of the algorithm.
(Inherited from ManagedIterativeAlgorithm<T, TError, TReport>) |
Relative |
Gets or sets the relative tolerance used in the
convergence test.
(Inherited from IterativeAlgorithm<T>) |
Result |
Gets the result of an algorithm after it has executed.
(Inherited from ManagedIterativeAlgorithm<T, TError, TReport>) |
Right |
Gets or sets the value of the target function to solve for.
(Inherited from EquationSolver<T>) |
Solution |
Gets the result of an algorithm after it has executed.
(Inherited from ManagedIterativeAlgorithm<T, TError, TReport>) |
Status |
Gets the AlgorithmStatus following
an execution of the algorithm.
(Inherited from ManagedIterativeAlgorithm<T, TError, TReport>) |
Target |
Gets or sets the target function for the EquationSolver.
(Inherited from EquationSolver<T>) |
Throw |
Gets or sets whether to throw an
exception when the algorithm fails to converge.
(Inherited from ManagedIterativeAlgorithm<T, TError, TReport>) |
Upper |
Gets or sets the upper bound for the solution.
(Inherited from EquationSolver<T>) |
Methods
Equals | Determines whether the specified object is equal to the current object. (Inherited from Object) |
Get | Serves as the default hash function. (Inherited from Object) |
Get | Gets the Type of the current instance. (Inherited from Object) |
Solve() |
Attempts to find a root or zero of the target function.
(Inherited from EquationSolver<T>) |
Solve( |
Attempts to find the point where the target function equals the specified value.
(Inherited from EquationSolver<T>) |
ToString | Returns a string that represents the current object. (Inherited from Object) |