protected virtual double GenericIterationMethod(MathFunction func, MathFunction ksi, double a, double b, double x0) { double xn = x0, counter = 0; double fDerivativeMin = func.Derivative(1).MinValue(a, b); MathFunction iterFunc = new XFunction(1.0d) + ksi * func; do { xn = iterFunc.Calculate(xn); counter++; } while (counter < maxIterationCount && !(Math.Abs(func.Calculate(xn)) / fDerivativeMin <= epsilanIter)); if (counter == maxIterationCount) { return(xn); // double.PositiveInfinity; } return(xn); }
/// <summary> /// Adds a X function. /// </summary> /// <param name="xt">Xt.</param> private void AddXFunction(XFunction xt) { _xterms.Add(xt); }