vadimk772336

Untitled

Oct 14th, 2019
219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.18 KB | None | 0 0
  1.  
  2.     public //Полином в точке?
  3.         static double ZPolinom(double[] c, int n, double x) {
  4.         double znach = c[0];
  5.         for (int i = 1; i < n; i++) {
  6.             double xn = 1;
  7.             for (int j = 0; j < i; j++) xn *= x;
  8.             znach += xn * c[i];
  9.         }
  10.         return znach;
  11.     };
  12.  
  13.     public  //Функция возвращает массив коэфф после перемножения
  14.         static double[] Coefficient(double[] x, int n) {
  15.         double anx[] = new double[n + 2];
  16.         double ann[] = new double[n + 2];
  17.         double res[] = new double[n + 2];
  18.  
  19.         for (int i = 0; i < n; i++) {
  20.             ann[i] = 0.0;
  21.             anx[i] = 0.0;
  22.             res[i] = 0.0;
  23.             x[i] = (-1) * x[i];
  24.         }
  25.         res[0] = x[0];
  26.         res[1] = 1;
  27.         for (int i = 1; i < n; i++)
  28.             for (int j = 0; j <= i + 1; j++) {
  29.                 anx[j + 1] = res[j];
  30.                 ann[j] = res[j] * x[i];
  31.                 res[j] = anx[j] + ann[j];
  32.             }
  33.         res[n] = 1.0;
  34.         double res1[] = new double[n + 1];
  35.         for (int i = 0; i <= n; i++) {
  36.             res1[i] = res[i];
  37.         }
  38.         return res1;
  39.     };
  40.  
  41.     public
  42.         static double[] PolinomLagrange(double[] x, double[] cl, double[] y, int n) {
  43.         for (int i = 0; i < n; i++) {
  44.             double xi[] = new double[n - 1];
  45.             int k = 0;
  46.  
  47.             for (int j = 0; j < n; j++) {
  48.                 if (i != j) {
  49.                     xi[k] = x[j];
  50.                     k++;
  51.                 }
  52.             }
  53.  
  54.             double znam = 1;
  55.  
  56.             for (int j = 0; j < n - 1; j++) {
  57.                 znam *= x[i] - xi[j];
  58.             }
  59.  
  60.             double prom[] = new double[n];
  61.             prom = system.in - &nbspДанный веб -
  62.                 сайт выставлен..System.in Coefficient(xi, n - 1);
  63.  
  64.             for (int j = 0; j < n; j++) {
  65.                 cl[j] += prom[j] * y[i] / znam;
  66.             }
  67.         }
  68.         return cl;
  69.     };
  70.  
  71.     public
  72.         static double[] PolinomNewton(double[] x, double[] cn, double[] y, int n) {
  73.         double dy[][] = new double[n][n];
  74.         for (int i = 0; i < n; i++) {
  75.             for (int j = i; j < n; j++) {
  76.                 dy[i][j] = 0.0;
  77.             }
  78.         }
  79.  
  80.         double h = (x[n - 1] - x[0]) / (n - 1);
  81.         for (int i = 0; i < n; i++) {
  82.             for (int j = i; j < n; j++) {
  83.                 if (i == 0) {
  84.                     dy[j][i] = y[j];
  85.                 }
  86.                 else {
  87.                     dy[j][i] = dy[j][i - 1] - dy[j - 1][i - 1];
  88.                 }
  89.             }
  90.         }
  91.         cn[0] = dy[0][0];
  92.         for (int i = 1; i < n; i++) {
  93.             double hn = h;
  94.             int fact = 1;
  95.             double xi[] = new double[i];
  96.             for (int j = 0; j < i; j++) {
  97.                 xi[j] = x[j];
  98.             }
  99.             double prom[] = new double[i + 1];
  100.             prom = Coefficient(xi, i);
  101.             for (int j = 1; j < i; j++) {
  102.                 hn *= h;
  103.             }
  104.             fact = Fact(i);
  105.             for (int k = 0; k < i + 1; k++) {
  106.                 cn[k] += prom[k] * dy[i][i] / hn / fact;
  107.             }
  108.         }
  109.         return cn;
  110.     };
  111.  
  112.  
  113.  
  114.     public //Максимум производной
  115.         static double MaxProizvodnay(double[] x, int n) {
  116.         double xi = 1;
  117.         int s = 1;
  118.         for (int i = 0; i < n; i++) {
  119.             s *= 10 - i;
  120.         }
  121.         for (int i = 0; i < 10 - n; i++) {
  122.             xi *= x[n - 1];
  123.         }
  124.         return xi * s;
  125.     }
  126.  
  127.  
  128.  
  129.     public
  130.         static double w(double[] x, double xi, int n) {
  131.         double znach = 1.0;
  132.         for (int i = 0; i < n; i++) {
  133.             znach *= (xi - x[i]);
  134.         }
  135.  
  136.         if (znach < 0) znach *= -1;
  137.  
  138.         return znach;
  139.     }
  140.  
  141.     public
  142.         static double rn(double[] xnn, int nn, double[] x, int i, int n) {
  143.         double[] y = new double[n];
  144.         for (int k = 0; k < n; k++) {
  145.             y[k] = x[k];
  146.         }
  147.  
  148.         return MaxProizvodnay(y, n) * w(y, xnn[i], n) / Fact(n);
  149.     }
  150.  
  151.     public
  152.         static double Rn(double[] x, double[] c, double[] y, int n, int i) {
  153.         double zn = y[i] - ZPolinom(c, n, x[i]);
  154.         if (zn < 0.0) zn *= (-1);
  155.         return zn;
  156.     }
  157.  
  158.  
  159.  
  160.  
  161.  
  162.     public // Считает разделенные разности
  163.         static double RazdRazn(double[] x, double[] y, int n) {
  164.         double del, razn = 0.0;
  165.         for (int i = 0; i <= n; i++) {
  166.             del = 1;
  167.             for (int j = 0; j <= n; j++)
  168.                 if (i != j) del *= x[i] - x[j];
  169.             razn += y[i] / del;
  170.         }
  171.         return razn;
  172.     }
  173.  
  174.     public // Считает Полниом ньютона через разделеные разности
  175.         static double[] PolinomNewton2(double[] x, double[] c, double[] y, int n) {
  176.         c[0] = y[0];
  177.         for (int i = 1; i < n; i++) {
  178.             double xi[] = new double[i];
  179.             for (int j = 0; j < i; j++) {
  180.                 xi[j] = x[j];
  181.             }
  182.             double prom[] = new double[i + 1];
  183.             prom = Coefficient(xi, i);
  184.             double f = RazdRazn(x, y, i);
  185.             for (int k = 0; k < i + 1; k++) {
  186.                 c[k] += prom[k] * f;
  187.             }
  188.         }
  189.         return c;
  190.     }
  191. }
Advertisement
Add Comment
Please, Sign In to add comment