Advertisement
Guest User

Untitled

a guest
Dec 8th, 2019
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.15 KB | None | 0 0
  1. bool Gauss(double A[6][6], double B[6], int N, double X[6]){
  2. if(Math::Abs(A[N][N]) <=1E-7){
  3. MessageBox::Show("Система вирождена");
  4. return false;
  5. }
  6.  
  7. for(int i = 1; i<=N-1; i++){
  8. int k = i;
  9. R = Math::Abs(A[i][i]);
  10. for(int j = i+1; j<=N; j++){
  11. if(Math::Abs(A[j][i])>R){
  12. k = j;
  13. R = Math::Abs(A[j][i]);
  14. }
  15. else continue;
  16. }
  17. if(R<=1E-7){
  18. MessageBox::Show("Система вирождена");
  19. return false;
  20. }else {
  21. if(k!=i) {
  22. R = B[k];
  23. B[k] = B[i];
  24. B[i] = R;
  25. for(int j = i; j<=N; j++){
  26. R = A[k][j];
  27. A[k][j] = A[i][j];
  28. A[i][j] = R;
  29. }
  30.  
  31. }else continue;
  32. R = A[i][i];
  33. B[i] = B[i]/R;
  34. for(int j = 1;j<=N;j++){
  35. A[i][j] = A[i][j]/R;
  36. }
  37. for(int k = i+1;k<=N;k++){
  38. R = A[k][i];
  39. B[k] = B[k]-R*B[i];
  40. A[k][i] = 0;
  41. for(int j = i+1; j<=N;j++){
  42. A[k][j] = A[k][j]-R*A[i][j];
  43. }
  44. }
  45.  
  46. }
  47. }
  48. if(Math::Abs(A[N][N]) <=1E-7){
  49. MessageBox::Show("Система вирождена");
  50. return false;
  51. }else{
  52. X[N] = B[N]/A[N][N];
  53. for(int i = N-1;i>=1;i--){
  54. R=B[i];
  55. for(int j = i+1;j<=N;j++){
  56. R= R-A[i][j]*X[j];
  57. }
  58. X[i] = R;
  59. }
  60. }
  61. return true;
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement