Advertisement
Guest User

Untitled

a guest
Mar 31st, 2015
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.29 KB | None | 0 0
  1. int razmer; //размер матрицы
  2.  double **a, // матрица с коэфицентами
  3.         *x, // х
  4.         *b; // свободные члены
  5. /* Здесь переменной razmer необходимо присвоить размер матрицы */
  6.     // создание динамических переменных
  7.     b = new double[razmer];
  8.     x = new double[razmer];
  9.     a = new double*[razmer];
  10.     for(int i=0; i < razmer; i++){
  11.         a[i] = new double[razmer];
  12.     }
  13. /* Здесь нам надо присвоить значения матрице а, и заполнить свободные члены b */
  14.  
  15.     // начинаем решать)
  16.     // частный случай, если размер матрицы == 1
  17.     if(razmer == 1){
  18.         if(a[0][0] != 0){
  19.             cout << "x=" << b[0]/a[0][0] << endl;
  20.         }else{
  21.             cout << "Х любое" << endl;
  22.         }
  23.         getch();
  24.         exit(0);
  25.     }
  26.     // прямой проход
  27.     // идем слево на право по коэфицентам х
  28.     for(int k=0; k < razmer-1; k++){
  29.         // вычитаем по строкам
  30.         for(int m=k+1; m < razmer; m++){
  31.             // если на диагонали элемент = 0, то поменяем местами строки
  32.             if(a[m][m] == 0) exchange(a, razmer, m, get_n_no_empty(a, razmer, m));
  33.            
  34.             double koeficent=a[m][k]/a[0][k];
  35.             //вычисление новых коэфицентов уравнения
  36.             b[m] = b[m] - b[0] * koeficent;
  37.             for(int z=0; z < razmer; z++){
  38.                 a[m][z] = a[m][k] - a[0][k] * koeficent;
  39.             }
  40.  
  41.         }
  42.     }
  43.     // ищем решения
  44.     for(int m=razmer-1; m >= 0; m--){
  45.         double sum=0;
  46.         // идем по строке спаво налево, считая сумму корень*коэфицент, до текущего корня
  47.         for(int i=razmer-1; i > m; i--){
  48.             sum += x[i] * a[m][i];
  49.         }
  50.         x[m] = (b[m] - sum)/a[m][m];
  51.     }
  52.  
  53.     // вывод решений
  54.     cout << "###Решения:" << endl;
  55.     for(int i=0; i < razmer; i++){
  56.         cout << "x[" << i << "]=" << x[i] << endl;
  57.     }
  58.     pause();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement