Advertisement
Gaxil

Untitled

May 9th, 2024
699
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.97 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void print_lematrix(float **lematrix, int dim) {
  5.     int i, j;
  6.  
  7.     for (j = 0; j < dim; j++) {
  8.         for (i = 0; i < dim + 1; i++)
  9.             printf("%10.4f", lematrix[j][i]);
  10.         printf("\n");
  11.     }
  12.     printf("\n\n");
  13. }
  14.  
  15. float **allocate_lematrix(int dim) {
  16.     float **A = (float **)malloc(dim * sizeof(float *));
  17.     for (int i = 0; i < dim; ++i) {
  18.         A[i] = (float *)malloc((dim + 1) * sizeof(float));
  19.     }
  20.     return A;
  21. }
  22.  
  23. void gem(float **A, int n, float *x) {
  24.     int i, j, k;
  25.     float c, sum = 0.0;
  26.  
  27.     print_lematrix(A, n);
  28.  
  29.  
  30.     for (i = 0; i < n - 1; i++) {
  31.         for (j = i + 1; j < n; j++) {
  32.             c = A[j][i] / A[i][i];
  33.             for (k = i; k < n + 1; k++) {
  34.                 A[j][k] -= c * A[i][k];
  35.             }
  36.         }
  37.     }
  38.  
  39.     print_lematrix(A, n);
  40.  
  41.     for (i = n - 1; i >= 0; i--) {
  42.         sum = 0.0;
  43.         for (j = i + 1; j < n; j++) {
  44.             sum += A[i][j] * x[j];
  45.         }
  46.         x[i] = (A[i][n] - sum) / A[i][i];
  47.     }
  48. }
  49.  
  50. int main() {
  51.     int i, n;
  52.  
  53.     n = 3;
  54.     float **A = allocate_lematrix(n);
  55.  
  56.     float **B = allocate_lematrix(n);
  57.     float *x = (float *)malloc(n * sizeof(float));
  58.  
  59.     A[0][0] = 1.0;
  60.     A[0][1] = 1.0;
  61.     A[0][2] = 1.0;
  62.     A[0][3] = 9.0;
  63.     A[1][0] = 2.0;
  64.     A[1][1] = -3.0;
  65.     A[1][2] = 4.0;
  66.     A[1][3] = 13.0;
  67.     A[2][0] = 3.0;
  68.     A[2][1] = 4.0;
  69.     A[2][2] = 5.0;
  70.     A[2][3] = 40.0;
  71.  
  72.     B[0][0] = 10.0;
  73.     B[0][1] = -7.0;
  74.     B[0][2] = 3.0;
  75.     B[0][3] = 5.0;
  76.     B[1][0] = -6.0;
  77.     B[1][1] = 8.0;
  78.     B[1][2] = 4.0;
  79.     B[1][3] = 7.0;
  80.     B[2][0] = 2.0;
  81.     B[2][1] = 6.0;
  82.     B[2][2] = 9.0;
  83.     B[2][3] = -1.0;
  84.  
  85.     gem(A, n, x);
  86.  
  87.     printf("\nReseni: \n");
  88.     for (i = 0; i < n; i++) printf("\nx%d=%f", i, x[i]);
  89.  
  90.     printf("\n\n\n\n\n\n");
  91.  
  92.  
  93.  
  94.     gem(B, n, x);
  95.  
  96.     printf("\nReseni: \n");
  97.     for (i = 0; i < n; i++) printf("\nx%d=%f", i, x[i]);
  98.  
  99.     return 0;
  100. }
  101.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement