Advertisement
Dambosin

appr newton

May 14th, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.50 KB | None | 0 0
  1. #include "pch.h"
  2. #include <iostream>
  3. #include <iomanip>
  4. #include <math.h>
  5. using namespace std;
  6.  
  7. double func(double x) {
  8.     return pow(x, 2) - 10 * pow(sin(x), 2);
  9. }
  10.  
  11. double Newton(double x, double**& XYtable, int n)
  12. {
  13.     double result = XYtable[0][1];
  14.     double ind = 1;
  15.     double* diff = new double[20];
  16.     for (int i = 0; i < n; i++) {
  17.         diff[i] = XYtable[i][1];
  18.     }
  19.     for (int i = 0; i < n - 1; i++) {
  20.         for (int j = 0; j < (n - 1) - i; j++) {
  21.             diff[j] = (diff[j + 1] - diff[j]) / (XYtable[j + i + 1][0] - XYtable[j][0]);
  22.         }
  23.         ind *= x - XYtable[i][0];
  24.         result += ind * diff[0];
  25.     }
  26.     return result;
  27. }
  28. int main(void)
  29. {
  30.     setlocale(LC_ALL, "Russian");
  31.     cout << "Введите границы a и b " << endl;
  32.     int a, b;
  33.     cin >> a >> b;
  34.     cout << "Введите m " << endl;
  35.     int m;
  36.     cin >> m;
  37.     double** matr = new double*[20];
  38.     for (int i = 0; i < 20; i++)matr[i] = new double[2];
  39.     int k = 0;
  40.     for (double i = a; i <= b; i += (b - a) / (m - 1)) {
  41.         matr[k][0] = i;
  42.         matr[k][1] = func(i);
  43.         k++;
  44.     }
  45.     cout << setw(4) << "X" << setw(10) << "Y" << endl;
  46.     for (int i = 0; i < k; i++) {
  47.         cout<< setw(4) << matr[i][0] << setw(10) << matr[i][1] << endl;
  48.     }
  49.     cout << endl;
  50.     cout << setw(5) << "X" << setw(10) << "Y" <<setw(10)<<"P"<<setw(12)<<"погр."<< endl;
  51.     for (int i = 0; i < 21; i++) {
  52.         double temp = a + ((b - a) / 20.)*i;
  53.         cout << setw(5) << temp << setw(10) << func(temp) << setw(10) << Newton(temp, matr,m) << setw(12) << fabs(func(temp)- Newton(temp, matr, m)) << endl;
  54.     }
  55.     return 0;
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement