#include #include using namespace std; class GoldenRatio { private: static const double phi() { return (1 + sqrt(5)) / 2; } public: double static f(double x) { return pow(x + 1, 3) + 5 * pow(x, 2); } double static min(double a, double b, double e){ double x1, x2, delta; while (abs(b - a) > e){ delta = (b - a) / phi(); x1 = b - delta; x2 = a + delta; if (f(x1) >= f(x2)) { a = x1; } else { b = x2; } } return (a + b) / 2; } double static max(double a, double b, double e){ double x1, x2, delta; while (abs(b - a) > e){ delta = (b - a) / phi(); x1 = b - delta; x2 = a + delta; if (f(x1) <= f(x2)) { a = x1; } else { b = x2; } } return (a + b) / 2; } }; int main() { double a, b, e; int select = 0; cout << "Enter a:"; cin >> a; cout << "Enter b:"; cin >> b; cout << "Enter epsilon:"; cin >> e; cout << "If u want find maximum enter 1 or enter any value for find minimum:"; cin >> select; if(select == 1){ cout << GoldenRatio::max(a, b, e); } else { cout << GoldenRatio::min(a, b, e); } }