#include #include #include using namespace std; typedef long double real; real m_cos(real k, real a, real b) { real result = k*(a - b) + cos(k*a); if (result <= -1) { return -1; } return result; } real M_cos(real k, real a, real b) { real result = k*(b - a) + cos(k*b); if (result >= 1) { return 1; } return result; } real m_sin(real k, real a, real b) { real result = k*(a - b) + sin(k*a); if (result <= -1) { return -1; } return result; } real M_sin(real k, real a, real b) { real result = k*(b - a) + sin(k*b); if (result >= 1) { return 1; } return result; } real m_f(real a, real b) { return m_cos(314, a, b) - M_cos(650, a, b) - 1; } real M_f(real a, real b) { return M_cos(314, a, b) - m_cos(650, a, b) - 1; } real m_fp(real a, real b) { return m_sin(650, a, b) - M_sin(314, a, b); } real M_fp(real a, real b) { return M_cos(650, a, b) - m_cos(314, a, b); } real f(real x) { return cos(314*x) - cos(650*x); } ofstream out("results.txt"); void search(real a, real b) { if (a > b) { return; } if (m_f(a, b) > 0 || M_f(a, b) < 0) { return; } if (m_fp(a, b) >= 0 || M_fp(a, b) <= 0) { out << "There is the unique solution in the interval " << (f(a) == 0 ? '[' : '(') << a << "," << b << (f(b) == 0 ? ']' : ')') << "\n"; return; } real c = (a + b)*0.5; if (c <= a || c >= b) { out << "The solutions in the segment [" << a << "," << b << "] are possible\n"; return; } search(a, c); search(c, b); } int main() { search(0, M_PI); return 0; }