Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "pch.h"
- #include <iostream>
- #include <math.h>
- #include <stdio.h>
- #include <conio.h>
- const double pi = 3.1415926535897932384626433832795;
- double function(double x)
- {
- double y = 2 * cos((pi*x) / 4);
- return(y);
- }
- double fact(double z)
- {
- double s=1.0;
- for (int i = 1; i <= z; i++)
- {
- s *= i;
- }
- return s;
- }
- int main()
- {
- int n,i,j,i1;
- double a,p,h,q,a1,Nx,b1,*x,*y,x1,*dY1, *dY2, *dY3, *dY4, *dY5;
- setlocale(LC_ALL, "rus");
- printf("\nВведите кол-во x(всех точек): ");
- scanf_s("%i", &n);
- x = new double[n];
- y = new double[n];
- dY1 = new double[n];
- dY2 = new double[n];
- dY3 = new double[n];
- dY4 = new double[n];
- dY5 = new double[n];
- printf("Введите начальную точку: ");
- scanf_s("%lf", &a);
- printf("Введите шаг: ");
- scanf_s("%lf", &h);
- x[0] = a;
- for (i = 0; i < n ; i++)
- {
- x[i + 1] = x[i] + h;
- }
- for (i = 0; i < n; i++)
- {
- printf("Введите y[%i]: ", i);
- scanf_s("%lf", &y[i]);
- }
- printf("\n\n\nx:\n");
- for (i = 0; i < n; i++)
- {
- printf("%lf ", x[i]);
- }
- printf("\ny:\n");
- for (i = 0; i < n; i++)
- {
- printf("%lf ", y[i]);
- }
- for (i = 0; i < n; i++) // Конечная разность первого порядка
- {
- dY1[i] = y[i + 1] - y[i];
- }
- printf("\n\nКонечная разность первого порядка:\n");
- for (i = 0; i < n - 1; i++)
- {
- printf("%.4lf ", dY1[i]);
- }
- for (i = 0; i < n; i++) // Конечная разность второго порядка
- {
- dY2[i] = dY1[i + 1] - dY1[i];
- }
- printf("\n\nКонечная разность второго порядка:\n");
- for (i = 0; i < n-2; i++)
- {
- printf("%.4lf ", dY2[i]);
- }
- for (i = 0; i < n; i++) // Конечная разность третьего порядка
- {
- dY3[i] = dY2[i + 1] - dY2[i];
- }
- printf("\n\nКонечная разность третьего порядка:\n");
- for (i = 0; i < n - 3; i++)
- {
- printf("%.4lf ", dY3[i]);
- }
- for (i = 0; i < n; i++) // Конечная разность четвертого порядка
- {
- dY4[i] = dY3[i + 1] - dY3[i];
- }
- printf("\n\nКонечная разность четвертого порядка:\n");
- for (i = 0; i < n - 4; i++)
- {
- printf("%.4lf ", dY4[i]);
- }
- for (i = 0; i < n; i++) // Конечная разность пятого порядка
- {
- dY5[i] = dY4[i + 1] - dY4[i];
- }
- printf("\n\nКонечная разность пятого порядка:\n");
- for (i = 0; i < n - 5; i++)
- {
- printf("%.4lf ", dY5[i]);
- }
- printf("Введите x: ");
- scanf_s("%lf",&x1);
- printf("Введите границы отрезка:\n");
- scanf_s("%lf", &a1);
- scanf_s("%lf", &b1);
- p = (double)(a1 + b1) / 2;
- q = (double)(x1 -a1) / h;
- /*if (x1 < p)
- {*/
- for (i = 0; i < n; i++)
- {
- if (a1 == x[i])
- {
- i1 = i;
- }
- }
- Nx = y[i1] + q*dY1[i1]+dY2[i1]*((q*(q-1))/2) + dY3[i1]* ((q*(q - 1)*(q-2)) / 6) + dY4[i1] * ((q*(q - 1)*(q - 2)*(q-3)) / 24);
- if (x1 > p)
- {
- for (i = 0; i < n; i++)
- {
- if (b1 == x[i])
- {
- i1 = i;
- }
- }
- Nx = dY1[i1] + dY2[i1] * ((q*(q + 1)) / fact(2)) + dY3[i1] * ((q*(q + 1)*(q + 2)) / fact(3)) + dY4[i1] * ((q*(q + 1)*(q + 2)*(q + 3)) / fact(4));
- }
- printf("\n\n\nРезультат: f(%lf)=%lf\n\n",x1,Nx);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement