BisectionSolver<T> Class

Represents a EquationSolver that uses the bisection algorithm.

Definition

Namespace: Numerics.NET.EquationSolvers.Generic
Assembly: Numerics.NET.Generic (in Numerics.NET.Generic.dll) Version: 9.0.1
C#
public sealed class BisectionSolver<T> : RootBracketingSolver<T>
where T : Object, INumber<T>
Inheritance
Object  →  ManagedIterativeAlgorithm<T, T, SolutionReport<T, T>>  →  IterativeAlgorithm<T>  →  EquationSolver<T>  →  RootBracketingSolver<T>  →  BisectionSolver<T>

Type Parameters

T

Remarks

Use the BisectionSolver class to solve a simple non-linear equation if you have an interval that includes a root with certainty, and when you only need a rough approximation of the root. If you need higher accuracy, other algorithms are more efficient. TOMS algorithm 748 is the method of choice for these situations.

BisectionSolver 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 AlgorithmStatus 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 bisection method is the simplest of the root bracketing algorithms. It works by dividing the bracketing interval into two equal parts in each iteration. Not taking into account round-off error, the number of iterations needed to achieve a certain accuracy can be estimated easily as the base 2 logarithm of the relative accuracy. It takes about 10 iterations to gain three digits in accuracy.

Constructors

BisectionSolver<T>() Constructs a new BisectionSolver.
BisectionSolver<T>(Func<T, T>, T, T) Constructs a new BisectionSolver for a specified target function over a given bracketing interval.
BisectionSolver<T>(Func<T, T>, T, T, ConvergenceCriterion, T) Constructs a new BisectionSolver for a specified target function over a given bracketing interval and tolerance.

Properties

AbsoluteTolerance Gets or sets the absolute tolerance used in the convergence test.
(Inherited from IterativeAlgorithm<T>)
ConvergenceCriterion Gets or sets a value specifying the criterion that is to be used in the convergence test for the algorithm.
(Inherited from IterativeAlgorithm<T>)
ConvergenceTest Gets the convergence test for the algorithm.
(Inherited from IterativeAlgorithm<T>)
ConvergenceTests Gets the collection of convergence tests for the algorithm.
(Inherited from ManagedIterativeAlgorithm<T, TError, TReport>)
EstimatedError Gets a value indicating the size of the absolute error of the result.
(Inherited from ManagedIterativeAlgorithm<T, TError, TReport>)
EvaluationsNeeded Gets the number of evaluations needed to execute the algorithm.
(Inherited from ManagedIterativeAlgorithm<T, TError, TReport>)
HasSharedDegreeOfParallelism Indicates whether the degree of parallelism is a property that is shared across instances.
(Inherited from ManagedIterativeAlgorithm<T, TError, TReport>)
IterationsNeeded Gets the number of iterations needed by the algorithm to reach the desired accuracy.
(Inherited from ManagedIterativeAlgorithm<T, TError, TReport>)
LowerBound Gets or sets the lower bound for the solution.
(Inherited from EquationSolver<T>)
MaxDegreeOfParallelism Gets or sets the maximum degree of parallelism enabled by this instance.
(Inherited from ManagedIterativeAlgorithm<T, TError, TReport>)
MaxEvaluations Gets or sets the maximum number of evaluations during the calculation.
(Inherited from ManagedIterativeAlgorithm<T, TError, TReport>)
MaxIterationsGets or sets the maximum number of iterations to use when approximating the roots of the target function.
(Inherited from ManagedIterativeAlgorithm<T, TError, TReport>)
MinIterations Gets or sets the minimum iterations that have to be performed.
(Inherited from ManagedIterativeAlgorithm<T, TError, TReport>)
ParallelOptions Gets or sets the configuration for the parallel behavior of the algorithm.
(Inherited from ManagedIterativeAlgorithm<T, TError, TReport>)
RelativeTolerance 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>)
RightHandSide Gets or sets the value of the target function to solve for.
(Inherited from EquationSolver<T>)
SolutionReport 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>)
TargetFunction Gets or sets the target function for the EquationSolver.
(Inherited from EquationSolver<T>)
ThrowExceptionOnFailure Gets or sets whether to throw an exception when the algorithm fails to converge.
(Inherited from ManagedIterativeAlgorithm<T, TError, TReport>)
UpperBound Gets or sets the upper bound for the solution.
(Inherited from EquationSolver<T>)

Methods

EqualsDetermines whether the specified object is equal to the current object.
(Inherited from Object)
GetHashCodeServes as the default hash function.
(Inherited from Object)
GetTypeGets 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(T) Attempts to find the point where the target function equals the specified value.
(Inherited from EquationSolver<T>)
ToStringReturns a string that represents the current object.
(Inherited from Object)

See Also