Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- bool Gauss(double A[6][6], double B[6], int N, double X[6]){
- if(Math::Abs(A[N][N]) <=1E-7){
- MessageBox::Show("Система вирождена");
- return false;
- }
- for(int i = 1; i<=N-1; i++){
- int k = i;
- R = Math::Abs(A[i][i]);
- for(int j = i+1; j<=N; j++){
- if(Math::Abs(A[j][i])>R){
- k = j;
- R = Math::Abs(A[j][i]);
- }
- else continue;
- }
- if(R<=1E-7){
- MessageBox::Show("Система вирождена");
- return false;
- }else {
- if(k!=i) {
- R = B[k];
- B[k] = B[i];
- B[i] = R;
- for(int j = i; j<=N; j++){
- R = A[k][j];
- A[k][j] = A[i][j];
- A[i][j] = R;
- }
- }else continue;
- R = A[i][i];
- B[i] = B[i]/R;
- for(int j = 1;j<=N;j++){
- A[i][j] = A[i][j]/R;
- }
- for(int k = i+1;k<=N;k++){
- R = A[k][i];
- B[k] = B[k]-R*B[i];
- A[k][i] = 0;
- for(int j = i+1; j<=N;j++){
- A[k][j] = A[k][j]-R*A[i][j];
- }
- }
- }
- }
- if(Math::Abs(A[N][N]) <=1E-7){
- MessageBox::Show("Система вирождена");
- return false;
- }else{
- X[N] = B[N]/A[N][N];
- for(int i = N-1;i>=1;i--){
- R=B[i];
- for(int j = i+1;j<=N;j++){
- R= R-A[i][j]*X[j];
- }
- X[i] = R;
- }
- }
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement