Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public //Полином в точке?
- static double ZPolinom(double[] c, int n, double x) {
- double znach = c[0];
- for (int i = 1; i < n; i++) {
- double xn = 1;
- for (int j = 0; j < i; j++) xn *= x;
- znach += xn * c[i];
- }
- return znach;
- };
- public //Функция возвращает массив коэфф после перемножения
- static double[] Coefficient(double[] x, int n) {
- double anx[] = new double[n + 2];
- double ann[] = new double[n + 2];
- double res[] = new double[n + 2];
- for (int i = 0; i < n; i++) {
- ann[i] = 0.0;
- anx[i] = 0.0;
- res[i] = 0.0;
- x[i] = (-1) * x[i];
- }
- res[0] = x[0];
- res[1] = 1;
- for (int i = 1; i < n; i++)
- for (int j = 0; j <= i + 1; j++) {
- anx[j + 1] = res[j];
- ann[j] = res[j] * x[i];
- res[j] = anx[j] + ann[j];
- }
- res[n] = 1.0;
- double res1[] = new double[n + 1];
- for (int i = 0; i <= n; i++) {
- res1[i] = res[i];
- }
- return res1;
- };
- public
- static double[] PolinomLagrange(double[] x, double[] cl, double[] y, int n) {
- for (int i = 0; i < n; i++) {
- double xi[] = new double[n - 1];
- int k = 0;
- for (int j = 0; j < n; j++) {
- if (i != j) {
- xi[k] = x[j];
- k++;
- }
- }
- double znam = 1;
- for (int j = 0; j < n - 1; j++) {
- znam *= x[i] - xi[j];
- }
- double prom[] = new double[n];
- prom = system.in -  Данный веб -
- сайт выставлен..System.in Coefficient(xi, n - 1);
- for (int j = 0; j < n; j++) {
- cl[j] += prom[j] * y[i] / znam;
- }
- }
- return cl;
- };
- public
- static double[] PolinomNewton(double[] x, double[] cn, double[] y, int n) {
- double dy[][] = new double[n][n];
- for (int i = 0; i < n; i++) {
- for (int j = i; j < n; j++) {
- dy[i][j] = 0.0;
- }
- }
- double h = (x[n - 1] - x[0]) / (n - 1);
- for (int i = 0; i < n; i++) {
- for (int j = i; j < n; j++) {
- if (i == 0) {
- dy[j][i] = y[j];
- }
- else {
- dy[j][i] = dy[j][i - 1] - dy[j - 1][i - 1];
- }
- }
- }
- cn[0] = dy[0][0];
- for (int i = 1; i < n; i++) {
- double hn = h;
- int fact = 1;
- double xi[] = new double[i];
- for (int j = 0; j < i; j++) {
- xi[j] = x[j];
- }
- double prom[] = new double[i + 1];
- prom = Coefficient(xi, i);
- for (int j = 1; j < i; j++) {
- hn *= h;
- }
- fact = Fact(i);
- for (int k = 0; k < i + 1; k++) {
- cn[k] += prom[k] * dy[i][i] / hn / fact;
- }
- }
- return cn;
- };
- public //Максимум производной
- static double MaxProizvodnay(double[] x, int n) {
- double xi = 1;
- int s = 1;
- for (int i = 0; i < n; i++) {
- s *= 10 - i;
- }
- for (int i = 0; i < 10 - n; i++) {
- xi *= x[n - 1];
- }
- return xi * s;
- }
- public
- static double w(double[] x, double xi, int n) {
- double znach = 1.0;
- for (int i = 0; i < n; i++) {
- znach *= (xi - x[i]);
- }
- if (znach < 0) znach *= -1;
- return znach;
- }
- public
- static double rn(double[] xnn, int nn, double[] x, int i, int n) {
- double[] y = new double[n];
- for (int k = 0; k < n; k++) {
- y[k] = x[k];
- }
- return MaxProizvodnay(y, n) * w(y, xnn[i], n) / Fact(n);
- }
- public
- static double Rn(double[] x, double[] c, double[] y, int n, int i) {
- double zn = y[i] - ZPolinom(c, n, x[i]);
- if (zn < 0.0) zn *= (-1);
- return zn;
- }
- public // Считает разделенные разности
- static double RazdRazn(double[] x, double[] y, int n) {
- double del, razn = 0.0;
- for (int i = 0; i <= n; i++) {
- del = 1;
- for (int j = 0; j <= n; j++)
- if (i != j) del *= x[i] - x[j];
- razn += y[i] / del;
- }
- return razn;
- }
- public // Считает Полниом ньютона через разделеные разности
- static double[] PolinomNewton2(double[] x, double[] c, double[] y, int n) {
- c[0] = y[0];
- for (int i = 1; i < n; i++) {
- double xi[] = new double[i];
- for (int j = 0; j < i; j++) {
- xi[j] = x[j];
- }
- double prom[] = new double[i + 1];
- prom = Coefficient(xi, i);
- double f = RazdRazn(x, y, i);
- for (int k = 0; k < i + 1; k++) {
- c[k] += prom[k] * f;
- }
- }
- return c;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment