Алгоритм нахождения квадратного корня - C (СИ)
Формулировка задачи:
Алгоритм нахождения квадратного корня из положительного числа x
можно представить следующей рекуррентной последовательностью:
y0 = x
yi = yi-1 + ( x/yi-1 – yi-1 )/2
При заданном x определить n-ое приближение его квадратного корня.
Помогите пожалуйста
Решение задачи: «Алгоритм нахождения квадратного корня»
textual
Листинг программы
double my_sqrt(double x) { static const double eps = 1e-10; double prev; double next = x; do { prev = next; next = (prev + x / prev) / 2; } while (fabs(prev - next) > eps); return next; }
Объяснение кода листинга программы
- В функции
my_sqrt
реализован алгоритм нахождения квадратного корня числаx
. - Статическое значение
eps
используется для контроля за точностью вычислений. - Переменная
prev
инициализируется значениемnext
, которое в свою очередь инициализируется значениемx
. - В цикле
do-while
происходит последовательное улучшение приближенного значенияnext
до достижения заданной точностиeps
. - Значение
prev
сохраняется в переменнойprev
перед каждой итерацией цикла. - Значение
next
улучшается на каждой итерации цикла путем вычисления среднего арифметического междуprev
иnext
. - Вычисляемое значение
next
используется в качестве нового приближенного значенияprev
на каждой итерации цикла. - Цикл завершается, когда разница между
prev
иnext
меньше или равнаeps
. - Функция возвращает значение
next
как результат вычисления квадратного корня числаx
.