Вопрос задан 23.06.2023 в 18:17. Предмет Информатика. Спрашивает Козлова Милана.

Составить две программы, одна из которых выделяет все интервалы, на которых нахо-дятся корни, а

вторая запрашивает левую границу очередного интервала и выводит найден-ный корень уравнения. x^3+3x^2-9x-5=-cos(x) Сделать на C++
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Майская Злата.

Ответ:

function F(x: real): real;

begin

 F := 3 * sin(x) + 2 * sqr(x) - 1;

end;

var

 a, b, h, x, Fa, Fx: real;

begin

 Write('Введите через пробел начало интервала, конец и шаг: ');

 Readln(a, b, h);

 x := a; Fa := F(a);

 repeat

   Fx := F(x);

   if Fx = 0 then Writeln('Найден корень ', x:0:3)

   else

   if Fx * Fa < 0 then

     Writeln('Найден интервал изоляции корня (', a:0:3, ';', x:0:3, ')');

   a := x; Fa := Fx; x := x + h

 until x > b;

end.

Тестовое решение:

Введите через пробел начало интервала, конец и шаг: 0 1.95 0.15

Найден интервал изоляции корня (0.150;0.300)

Введите через пробел начало интервала, конец и шаг: -5 5 0.1

Найден интервал изоляции корня (-1.500;-1.400)

Найден интервал изоляции корня (0.200;0.300)

Объяснение:

Лови! Удачки!

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для решения данной задачи на C++ нужно воспользоваться методом численного решения уравнений, например, методом бисекции. Метод бисекции позволяет находить корни уравнения на заданном интервале. Сначала мы найдем все интервалы, на которых находятся корни, а затем напишем вторую программу, которая будет запрашивать левую границу интервала и находить корень на этом интервале.

Программа для поиска интервалов:

cpp
#include <iostream> #include <cmath> // Функция, вычисляющая значение функции f(x) = x^3 + 3x^2 - 9x - 5 + cos(x) double f(double x) { return x*x*x + 3*x*x - 9*x - 5 + cos(x); } int main() { double a = -10.0; // Левая граница интервала double b = 10.0; // Правая граница интервала double step = 0.1; // Шаг для перебора интервалов double x1 = a; double x2 = a + step; while (x2 <= b) { if (f(x1) * f(x2) < 0) { std::cout << "Корень на интервале [" << x1 << ", " << x2 << "]" << std::endl; } x1 = x2; x2 += step; } return 0; }

Программа для нахождения корней на заданном интервале:

cpp
#include <iostream> #include <cmath> // Функция, вычисляющая значение функции f(x) = x^3 + 3x^2 - 9x - 5 + cos(x) double f(double x) { return x*x*x + 3*x*x - 9*x - 5 + cos(x); } // Функция для метода бисекции double bisection(double a, double b) { double eps = 1e-6; // Погрешность while ((b - a) > eps) { double mid = (a + b) / 2; if (f(mid) == 0.0) { return mid; } else { if (f(a) * f(mid) < 0) { b = mid; } else { a = mid; } } } return (a + b) / 2; } int main() { double a, b; std::cout << "Введите левую границу интервала: "; std::cin >> a; std::cout << "Введите правую границу интервала: "; std::cin >> b; double root = bisection(a, b); std::cout << "Найденный корень: " << root << std::endl; return 0; }

Первая программа находит все интервалы, на которых находятся корни, а вторая программа позволяет пользователю ввести интервал и находит корень уравнения на этом интервале с использованием метода бисекции.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос