Advertisement
Dambosin

korni newton

May 17th, 2019
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.73 KB | None | 0 0
  1. #include "pch.h"
  2. #include <math.h>
  3. #include <iostream>
  4.  
  5. using namespace std;
  6.  
  7. float f(double x)
  8. {
  9.     return pow(x,2) - 10 * pow(sin(x),2) + 2;
  10. }
  11.  
  12. float df(float x) //возвращает значение производной
  13. {
  14.     return 2 * x - 20 * sin(x) * cos(x);
  15. }
  16.  
  17. float d2f(float x) // значение второй производной
  18. {
  19.     return 20 * pow(sin(x) , 2) - 20 * pow(cos(x), 2) + 2;
  20. }
  21.  
  22. int main()
  23. {
  24.     setlocale(LC_ALL, "Russian");
  25.     int  i = 0;//переменная для  цикла
  26.     double x0, xn;// вычисляемые приближения для корня
  27.     double a, b, eps;// границы отрезка и необходимая точность
  28.     double A, B;
  29.     cout << "Enter A, B, eps" << endl;
  30.     cin >> A >> B >> eps;
  31.     for(double j = A; j<B;j+= (B-A)/20.){
  32.         i = 0;
  33.         a = j;
  34.         b = j + (B - A) / 20.;
  35.         if (f(a)*f(b) <= 0) // если знаки функции на краях отрезка одинаковые, то здесь нет корня
  36.         {
  37.             if (f(a)*d2f(a) > 0) x0 = a; // для выбора начальной точки проверяем f(x0)*d2f(x0)>0 ?
  38.             else x0 = b;
  39.             xn = x0 - f(x0) / df(x0); // считаем первое приближение
  40.             cout << ++i << " итерация = " << xn << endl;
  41.             while (fabs(x0 - xn) > eps) // пока не достигнем необходимой точности, будет продолжать вычислять
  42.             {
  43.                 x0 = xn;
  44.                 xn = x0 - f(x0) / df(x0); // непосредственно формула Ньютона
  45.                 cout << ++i << " итерация = " << xn << endl;
  46.             }
  47.             cout << endl << "Корень = " << xn << endl << endl; // вывод вычисленного корня
  48.         }
  49.     }
  50.     return 0;
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement