Advertisement
Guest User

Untitled

a guest
Apr 10th, 2020
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.98 KB | None | 0 0
  1. float* solve_matrix(float* a, float* b, float* c, float *d) {
  2.  
  3.     float *diag_a = a;
  4.     float *diag_b = b;
  5.     float *diag_c = c;
  6.     float *free_d = d;
  7.  
  8.     auto *alpha = new float[n-1];
  9.     auto *beta = new float[n-1];
  10.     auto *x = new float[n];
  11.  
  12.  
  13.     if (diag_a[0] != 0) {
  14.         alpha[0] = - diag_b[0]/diag_a[0];
  15.     } else {
  16.         std::cout << "a[0] = 0 error";
  17.         return nullptr;
  18.     }
  19.     beta[0] = free_d[0] / diag_a[0];
  20.  
  21.     for (int i=1; i<n-1; i++) {
  22.         alpha[i] = -(diag_b[i])/(alpha[i-1]*diag_c[i-1] + diag_a[i]);
  23.         beta[i] = (free_d[i]-diag_c[i-1]*beta[i-1])/(alpha[i-1]*diag_c[i-1] + diag_a[i]);
  24.     }
  25.  
  26.     beta[n-1] = (free_d[n-1]-diag_c[n-2]*beta[n-2])/(alpha[n-2]*diag_c[n-2] + diag_a[n-1]);
  27.  
  28.     x[n-1] = 0;
  29.     x[0] = 0;
  30.  
  31.     for (int i=n-2; i>=1; i--) {
  32.         x[i] = alpha[i]*x[i+1] + beta[i];
  33.     }
  34.  
  35. //    for (int i=0; i<n; i++) {
  36. ////        std::cout << "x[" << i << "]= " << x[i] << std::endl;
  37. //    }
  38.     return x;
  39. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement