пятница, 25 марта 2011 г.

Задание

Добрый день, коллеги!
Представляем Вам очередное задание для самостоятельной работы по курсу "Алгоритмы и структуры данных".
Имеется реализация алгоритма вычисления квадратного корня с использованием итерационной формулы Герона на С#.
Ввод: вещественное число x; вещественное число Epsilon, задающее точность вычислений.
Вывод: квадратный корень из x с точностью Epsilon.
double SquareRoot(double x, double Epsilon)
{
  // squareRoot(n+1) = (x / squareRoot(n) + squareRoot(n)) / 2.0
  double squareRoot = 1.0;
  double currentGuess = ((x / squareRoot) + squareRoot) / 2.0;
  while (Math.Abs(squareRoot - currentGuess) > Epsilon)
  {
    squareRoot = currentGuess;
    currentGuess = ((x / squareRoot) + squareRoot) / 2.0;
  }
  return squareRoot;
}
Необходимо определить инвариант цикла, используемого в алгоритме. Пожалуйста, присылайте Ваши рассуждения, которыми Вы руководствовались, при определении инварианта.
С уважением, Михаил Баранов.

Комментариев нет:

Отправить комментарий