Browse Source

Root Finding: Zero Crossing Bracketing expansion must reset boundaries if it fails

benchmark-la
Christoph Ruegg 10 years ago
parent
commit
b076067402
  1. 5
      src/Numerics/RootFinding/ZeroCrossingBracketing.cs

5
src/Numerics/RootFinding/ZeroCrossingBracketing.cs

@ -82,6 +82,9 @@ namespace MathNet.Numerics.RootFinding
/// <remarks>This iterative methods stops when two values with opposite signs are found.</remarks> /// <remarks>This iterative methods stops when two values with opposite signs are found.</remarks>
public static bool Expand(Func<double, double> f, ref double lowerBound, ref double upperBound, double factor = 1.6, int maxIterations = 50) public static bool Expand(Func<double, double> f, ref double lowerBound, ref double upperBound, double factor = 1.6, int maxIterations = 50)
{ {
double originalLowerBound = lowerBound;
double originalUpperBound = upperBound;
if (lowerBound >= upperBound) if (lowerBound >= upperBound)
{ {
throw new ArgumentOutOfRangeException("upperBound", string.Format(Resources.ArgumentOutOfRangeGreater, "xmax", "xmin")); throw new ArgumentOutOfRangeException("upperBound", string.Format(Resources.ArgumentOutOfRangeGreater, "xmax", "xmin"));
@ -109,6 +112,8 @@ namespace MathNet.Numerics.RootFinding
} }
} }
lowerBound = originalLowerBound;
upperBound = originalUpperBound;
return false; return false;
} }
} }

Loading…
Cancel
Save