Exemplo n.º 1
0
/***
 * FUNCTION: Integrates equation using Simpson method
 *   RETURN: Definite integral of equation
 *    PARAM: [IN] equation      - equation to integrate
 *    PARAM: [IN] start         - left integration border
 *    PARAM: [IN] end           - right integration border
 *    PARAM: [IN] numIterations - number of iterations
 *      SEE: write me
 *   AUTHOR: Eliseev Dmitry
 ***/
Equation ParametricIntegrator::Simpson( const Equation &equation, const double start, const double end, const unsigned int numIterations )
{
  unsigned int i = 0;

  /* Timer creation */
  Timer timer;

  /* Result equation */
  Equation result = Equation(start) + Equation(end);

  /* Odd members */
  Equation oddResult("0");
  for (i = 1; i <= 2 * numIterations - 1; i+=2)
    oddResult += equation.GetEquation(start + (end - start) * i / (2 * numIterations));

  /* Even members */
  Equation evenResult("0");
  for (i = 2; i <= 2 * numIterations - 2; i+=2)
    evenResult += equation.GetEquation(start + (end - start) * i / (2 * numIterations));

  /* Add calculated values */
  result += Equation("4") * oddResult + Equation("2") * evenResult;

  /* That's it */
  result *= Equation((end - start) / (6 * numIterations));
  result.Simplify();

  /* Determine spent time */
  numSeconds = timer.GetTimePassed();
  return result;
} /* End of 'Integrator::Simpson' method */
Exemplo n.º 2
0
/***
 * FUNCTION: Integrates equation using center-rectangles method
 *   RETURN: Definite integral of equation
 *    PARAM: [IN] equation      - equation to integrate
 *    PARAM: [IN] start         - left integration border
 *    PARAM: [IN] end           - right integration border
 *    PARAM: [IN] numIterations - number of iterations
 *      SEE: write me
 *   AUTHOR: Eliseev Dmitry
 ***/
Equation ParametricIntegrator::Rectangles( const Equation &equation, const double start, const double end, const unsigned int numIterations )
{
  double step = (end - start) / numIterations;
  unsigned int i = 0;

  /* Result equation */
  Equation result("0");
  Equation width(step);

  /* Timer creation */
  Timer timer;

  /* For each iteration */
  for (i = 0; i < numIterations; i++)
    result += width * equation.GetEquation(step * i);

  /* That's it */
  result.Simplify();

  /* Determine spent time */
  numSeconds = timer.GetTimePassed();
  return result;
} /* End of 'Integrator::Rectangles' method */