#include <iostream>
#include <cmath>
#include <conio.h>
#include <windows.h>
using namespace std;
int main() {
// Настройка притоков и региональных стандартов
if (SetConsoleCP(1251) == 0) {
cerr << "Failed to set codepage!" << endl;
return 1;
}
if (SetConsoleOutputCP(1251) == 0) {
cerr << "Failed to set output page!" << endl;
return 1;
}
double x, eps;
// Ввод данных с проверкой их на допустимость
do {
cout << "Введите x >= 0: ";
cin >> x;
} while (x < 0);
do {
cout << "Введите точность 0 < eps < 1: ";
cin >> eps;
} while (eps <= 0 || eps >= 1);
// Вычисление значения, используя рекуррентное соотношение.
double y1, y2 = x / 2;
int iterations = 0;
// Цикл с проверкой сходимости
do {
y1 = y2;
y2 = (y1 + x / y1) / 2;
iterations++;
// Вывод промежуточных значений (для отладки)
cout << "Итерация " << iterations << ": y2 = " << y2 << endl;
// Проверка сходимости
if (iterations > 100) {
cout << "Метод Ньютона не сошелся за 100 итераций" << endl;
break;
}
} while (abs(y2 - y1) > eps);
// Вывод результата
cout << "Контрольное значение корня: " << y2 << endl;
cout << "Контрольное значение: " << sqrt(x) << endl;
_getch();
return 0;
}