Browse Source

RootFinding: cosmetics

v2
Christoph Ruegg 14 years ago
parent
commit
65cfd6c46e
  1. 2
      src/Numerics/RootFinding/BrentRootFinder.cs
  2. 38
      src/Numerics/RootFinding/RootFinder.cs

2
src/Numerics/RootFinding/BrentRootFinder.cs

@ -54,7 +54,7 @@ namespace MathNet.Numerics.RootFinding
fxmax = fxmin; fxmax = fxmin;
} }
// Convergence check // Convergence check
xAcc1 = 2.0 * DOUBLE_ACCURACY * Math.Abs(root) + 0.5 * Accuracy; xAcc1 = 2.0 * DoubleAccuracy * Math.Abs(root) + 0.5 * Accuracy;
xMid = (xmax - root) / 2.0; xMid = (xmax - root) / 2.0;
if (Math.Abs(xMid) <= xAcc1 || Close(froot, 0.0)) if (Math.Abs(xMid) <= xAcc1 || Close(froot, 0.0))
{ {

38
src/Numerics/RootFinding/RootFinder.cs

@ -5,36 +5,26 @@ namespace MathNet.Numerics.RootFinding
{ {
public abstract class RootFinder public abstract class RootFinder
{ {
protected const double DOUBLE_ACCURACY = 9.99200722162641E-16; protected const double DoubleAccuracy = 9.99200722162641E-16;
private const int DEFAULT_MAX_ITERATIONS = 30; private const int DefaultMaxIterations = 30;
private const double DEFAULT_ACCURACY = 1e-8; private const double DefaultAccuracy = 1e-8;
//protected int _maxNumIters;
//protected double _xmin = double.MinValue;
//protected double _xmax = double.MaxValue;
//protected double _accuracy;
//protected Func<double, double> _func;
//protected Func<double, double> m_Of;
int _maxNumIters; int _maxNumIters;
double _xmin = double.MinValue; double _xmin = double.MinValue;
double _xmax = double.MaxValue; double _xmax = double.MaxValue;
double _accuracy;
Func<double, double> _func; Func<double, double> _func;
private double bracketingFactor = 1.6; private double _bracketingFactor = 1.6;
/// <summary>Constructor.</summary> public RootFinder() : this(DefaultMaxIterations, DefaultAccuracy)
/// <param name="f">A continuous function.</param>
public RootFinder() : this(DEFAULT_MAX_ITERATIONS, DEFAULT_ACCURACY)
{ {
} }
public RootFinder(int numIters, double accuracy) public RootFinder(int numIters, double accuracy)
{ {
_maxNumIters = numIters; _maxNumIters = numIters;
_accuracy = accuracy; Accuracy = accuracy;
} }
#region Properties
protected double XMin { get { return _xmin; } } protected double XMin { get { return _xmin; } }
protected double XMax { get { return _xmax; } } protected double XMax { get { return _xmax; } }
@ -43,15 +33,19 @@ namespace MathNet.Numerics.RootFinding
get { return _func; } get { return _func; }
set { _func = value; } set { _func = value; }
} }
public double Accuracy { get; set; }
public double BracketingFactor public double BracketingFactor
{ {
get { return bracketingFactor; } get { return _bracketingFactor; }
set set
{ {
if (value <= 0.0) throw new ArgumentOutOfRangeException(); if (value <= 0.0) throw new ArgumentOutOfRangeException();
bracketingFactor = value; _bracketingFactor = value;
} }
} }
public int Iterations public int Iterations
{ {
set set
@ -61,12 +55,6 @@ namespace MathNet.Numerics.RootFinding
} }
protected get { return _maxNumIters; } protected get { return _maxNumIters; }
} }
public double Accuracy
{
get { return _accuracy; }
set { _accuracy = value; }
}
#endregion Properties
/// <summary>Detect a range containing at least one root.</summary> /// <summary>Detect a range containing at least one root.</summary>
/// <param name="xmin">Lower value of the range.</param> /// <param name="xmin">Lower value of the range.</param>

Loading…
Cancel
Save