В этом коде функция f вычисляет разность между значениями выражения 2^(-x) и sin(x). Функция findRoot использует метод бисекции (деления отрезка пополам) для нахождения корня уравнения с заданной точностью. В функции main задаются начальные границы a и b и точность epsilon. Результат решения выводится на экран.
После выполнения программы будет выведено значение корня уравнения, которое удовлетворяет условию 2^(-x) = sin(x).
#include <iostream>
#include <cmath>
double f(double x) {
return std::pow(2, -x) - std::sin(x);
}
double findRoot(double a, double b, double epsilon) {
double c = (a + b) / 2.0;
while (std::abs(f(c)) > epsilon) {
if (f(a) * f(c) < 0) {
b = c;
} else {
a = c;
}
c = (a + b) / 2.0;
}
return c;
}
int main() {
double a = -10.0; // Начальная левая граница
double b = 10.0; // Начальная правая граница
double epsilon = 0.0001; // Точность
double root = findRoot(a, b, epsilon);
std::cout << "Корень уравнения: " << root << std::endl;
return 0;
}
Объяснение:
В этом коде функция f вычисляет разность между значениями выражения 2^(-x) и sin(x). Функция findRoot использует метод бисекции (деления отрезка пополам) для нахождения корня уравнения с заданной точностью. В функции main задаются начальные границы a и b и точность epsilon. Результат решения выводится на экран.
После выполнения программы будет выведено значение корня уравнения, которое удовлетворяет условию 2^(-x) = sin(x).