//метод метод хорд для уравнения f(x)=0 #include #include using namespace std; double findRoot(double, double, double (*f)(double), double); double kvadr(double); double kub(double); int main() { const double eps = 0.00001; double a, b; cout << "Kvadr a="; cin >> a; cout << "Kvadr b="; cin >> b; cout << "Kvadr a=" << a << " b=" << b << " x=" << findRoot(a, b, kvadr, eps) << endl; cout << endl; cout << "Kub a="; cin >> a; cout << "Kub b="; cin >> b; cout << "Kub a=" << a << " b=" << b << " x=" << findRoot(a, b, kub, eps) << endl; return 0; } double findRoot(double a, double b, double (*f)(double x), double eps) { double x, u, v, w; u = (*f)(a); v = (*f)(b); if (u * v > 0) { cout << "no solution on a=" << a << " b=" << b << endl; return a; } while ((fabs(b-a) > eps) && fabs(u) > eps){ x = a+(f(b)*(b-a))/(f(b)-f(a)); w = (*f)(x); if (u * w < 0) { b = x; v = w; } else { a = x; u = w; }; // cout << "x=" << x << " f(x)=" << w << endl; } return a; } double kvadr(double x) { return x*x - 2*x - 3; } double kub(double x) { return x*x*x - 6*x*x + 11*x - 6; }