Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Задача на С++

Диана дугужева Ученик (98), на голосовании 5 месяцев назад
Задача:
a=0,b=1
Голосование за лучший ответ
Татьяна Просветленный (36384) 5 месяцев назад
 #include  
#include
#include

// Функция, определяющая f(x)
double f(double x) {
return pow(x, 5) - 0.3 * fabs(x - 1);
}

// Функция, реализующая метод деления отрезка пополам
double bisection(double a, double b, double epsilon) {
if (f(a) * f(b) >= 0) {
std::cerr << "Ошибка: f(a) и f(b) должны иметь разные знаки" << std::endl;
std::exit(EXIT_FAILURE);
}

double c = a;
while ((b - a) >= epsilon) {
c = (a + b) / 2;

if (f(c) == 0.0)
break;

if (f(c) * f(a) < 0)
b = c;
else
a = c;
}
return c;
}

int main() {
double a, b;
double epsilon = 1e-5;

std::cout << "Введите начальный интервал [a, b]:" << std::endl;
std::cout << "a = ";
std::cin >> a;
std::cout << "b = ";
std::cin >> b;

double root = bisection(a, b, epsilon);
std::cout << "Корень уравнения f(x) = 0 на интервале [" << a << ", " << b << "] с точностью " << epsilon << " равен " << root << std::endl;

return 0;
}
Результат
Похожие вопросы