#include <iostream>
#include <cmath>
using namespace std;
const long double eps = 1e-10;
long double Z(long double x){
return x * x + sqrt(x);
}
int main(){
long double c;
long double left = 0;
long double right = 1e5;
long double middle;
cin >> c;
while (fabs(right - left) > eps) {
middle = (left + right) / 2.0;
if (Z(middle) - c < 0)
left = middle;
else
right = middle;
}
cout << fixed;
cout.precision(6);
cout << right;
return 0;
}
C/C++
C++. Бинарный поиск. Объясните работу данной программы. Найдите такое число x, что , с точностью не менее 6 зн.С while
С точностью не менее 6 знаков что?
#include //подключение библиотеки ввода вывода
#include //подключение библиотеки математических функций
//Программа поиска корня уравнения y = x2 + корень из x
//на диапазоне значений y от left = 0 до right = 100 000
//Если на искомом диапазоне функция имеет неубывающий или невозрастающий график
//то можно разложить ее на отсортированную последовательность к которой применим
//бинарный поиск.
using namespace std;
const long double eps = 1e-10; //точность нахождения числа (не путать с точностью вывода на экран)
//по условию не менее шести знаков после точки т.е. это избыточная точность
long double Z(long double x)
{
return x * x + sqrt(x); //это наша функция
}
int main() {
long double c; //значение y для которого требуется найти х
long double left = 0; //нижняя граница поиска
long double right = 1e5; //верхняя граница поиска
long double middle; //средняя часть текущего дипазона (между двумя границами)
cin >> c; //вводим искомое значение функции
while (fabs(right - left) > eps) //Пока дистанция между границами поиска велика
//(превышает точность eps)
{
middle = (left + right) / 2.0; //делим текущие границы на две равные части точкой middle
if (Z(middle) - c < 0) //Если в этой точке подставленное значение х в функцию
//дает меньшее значение
left = middle; //то делаем нижней границей эту точку (отсекая все значени
//что были ниже.
else
right = middle; //Если большее значение, то отсекаем все значения выше этой точки
//делая эту точку верхней границей
//и повторояем цикл с новыми границами
}
cout
Похожие вопросы
- Программа делится ли число на 3 6 9 без остатка на с++
- Помогите с С++! Надо как-то решить задачу с помощью бинарного поиска
- Объясните работу цикла for в c++
- Написать программу, которая выводит числа из файла с текстом и числами. С++
- Написать программу, которая сравнивает число перестановок элементов при использовании сортировки «пузырьком» (усовершенс
- C++Дана целочисленная матрица размера mn. Найти матрицу, получающуюся перестановкой столбцов
- Дана непустая последовательность целых чисел, среди которых есть два нуля. Найти сумму чисел, расположенных между ними.
- Кто может объяснить каждую строку Программы С++
- Вычислить значение функции F(x), разложенной в ряд и сходящейся в указанной области. Написать программу на языке C++
- С++ Максимум трёх чисел Даны три целых числа. Найдите наибольшее из них (программа должна вывести ровно одно целое число