NyanCoder

гаус.c

Apr 4th, 2022 (edited)
19
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.73 KB | None | 0 0
  1. #include "stdlib.h"
  2. #include "stdio.h"
  3.  
  4. int main(int, char**)
  5. {
  6.     system("clear");
  7.     int n = 0;
  8.     printf("Порядок: ");
  9.     scanf("%i", &n);
  10.     printf("Введите коэффициенты системы и свободные члены\n");
  11.     float** a = (float**)malloc(sizeof(void*) * n);
  12.     float** a1 = (float**)malloc(sizeof(void*) * n);
  13.     float* b = (float*)malloc(sizeof(float) * n);
  14.     for (int i = 0; i < n; i++)
  15.     {
  16.         a[i] = (float*)malloc(sizeof(float) * n);
  17.         a1[i] = (float*)malloc(sizeof(float) * n);
  18.         for (int j = 0; j < n; j++)
  19.         {
  20.             printf("a[%i,%i]= ", i + 1, j + 1);
  21.             scanf("%f", &a[i][j]);
  22.             a1[i][j] = a[i][j];
  23.         }
  24.         printf("b[%i]= ", i + 1);
  25.         scanf("%f", &b[i]);
  26.     }
  27.     for (int k = 0; k < n; k++) /* Прямой ход Гаусса */
  28.     {
  29.         for (int j = k + 1; j < n; j++)
  30.         {
  31.             const float r = a[j][k] / a[k][k];
  32.             for (int i = k; i < n; i++)
  33.                 a[j][i] = a[j][i] - r * a[k][i];
  34.             b[j] = b[j] - r * b[k];
  35.         }
  36.     }
  37.     for (int k = n - 1; k > -1; k--) /* Обратный ход Гаусса */
  38.     {
  39.         float r = 0;
  40.         for (int j = k + 1; j < n; j++)
  41.             r += a[k][j] * b[j];
  42.         b[k] = (b[k] - r) / a[k][k];
  43.     }
  44.     printf("Корни системы:\n");
  45.     for (int i = 0; i < n; i++)
  46.         printf("x[%i]=%f     ", i + 1, b[i]);
  47.     printf("\n\nПроверка в соответствии с матрицей B:\n");
  48.     for (int i = 0; i < n; i++)
  49.     {
  50.         float b1 = 0;
  51.         for (int j = 0; j < n; j++)
  52.             b1 += a1[i][j] * b[j];
  53.         printf("%f\n", b1);
  54.     }
  55.     return 0;
  56. }
Advertisement
Add Comment
Please, Sign In to add comment