Программа должна уточнить корень заданного нелинейного уравнения с диапазоном [0; 2] с точностью e = 0.001.
У меня же программа выдает странный ответ 0.000976562.
Я так полагаю, что у меня формула неправильно введена или же дано неверное.
# include <iostream>
# include <cmath>
using std::cout;
using std::cin;
double f(double x) {
return pow(pow(sqrt(pow(x, 3) - 2), 1.0 / 3.0), 2) - 1; //формула
}
int main() {
setlocale(LC_ALL, "RU");
double e, c;
double a = 0;
double b = 2;
cout << "Введите значение e (коэффицента точности вычислений): \n";
cin >> e;
if (e >= abs(b - a)) {
cout << "Ошибка. Коэффицент точности не имеет смылса - он больше диапазона значений или равен ему.";
return 0;
}
while (abs(b - a) > e) {
c = (a + b) / 2.0;
if (f(c) == 0) {
cout << "Корень уравнения равен " << c;
break;
}
if (f(a) * f(c) > 0) { a = c; }
else { b = c; }
}
cout << "Корень уравнения приблизительно равен " << c;
return 0;
}