dfghjk

← разместить еще код

dfghjkyutfc njhuygtfcv nhygtfrdc bnjhuygtfrcv njhygtfrcv juyr5ewsxcv bhjhuytrdfcv bnhgfcgv bnhuytfrcv njhygtfc vbnhygtfc vbnhgytfdcv bnhjygtfcv bnbhgfcv bnhygtf

Расшаренный код:

#include <conio.h>
#include <math.h>
#include <iostream>
using namespace std;

float f(double x) //возвращает значение функции
{
       return pow(x,4)+x-1;
}

float df(float x) //возвращает значение производной
{
       return 4*pow(x,3)+1;
}

float d2f(float x) // значение второй производной
{
       return 12*pow(x,2);
}

int main() {
    int i=0;
     double x0,xn;// вычисляемые приближения для корня
     double a, b, eps;// границы отрезка и необходимая точность

     cout<<"Please input [a;b]\n=> ";
     cin>>a>>b; // вводим границы отрезка, на котором будем искать корень
     cout<<"\nPlease input epsilon\n=> ";
     cin>>eps; // вводим нужную точность вычислений
     cout<<"\n";

    if (a > b) // если пользователь перепутал границы отрезка, меняем их местами
         {
            x0 = a;
            a = b;
            b = x0;
    }

    if (f(a)*f(b)>0) // если знаки функции на краях отрезка одинаковые, то здесь нет корня
    cout<<"\nError! No roots in this interval\n";
            else {
    if (f(a)*d2f(a)>0) x0  = a; // для выбора начальной точки проверяем f(x0)*d2f(x0)>0 ?
            else x0 = b;

            xn = x0-f(x0)/df(x0); // считаем первое приближение

     while(fabs(x0-xn) > eps) // пока не достигнем необходимой точности, будет продолжать вычислять
        {
            x0 = xn;
            xn = x0-f(x0)/df(x0); // непосредственно формула Ньютона
        cout<<++i<< ".  " <<xn<<"\n";
    }


     cout<<"\n"<<"Root = "<<xn<<"\n"; // вывод вычисленного корня
            }
 return 0;
}