#include #include using namespace std; int main() { int razmer; //размер матрицы double **a, // матрица с коэфицентами *x, // х *b; // свободные члены /* Здесь переменной razmer необходимо присвоить размер матрицы */ // создание динамических переменных b = new double[razmer]; x = new double[razmer]; a = new double*[razmer]; for(int i=0; i < razmer; i++){ a[i] = new double[razmer]; } /* Здесь нам надо присвоить значения матрице а, и заполнить свободные члены b */ // начинаем решать) // частный случай, если размер матрицы == 1 if(razmer == 1){ if(a[0][0] != 0){ cout << "x=" << b[0]/a[0][0] << endl; }else{ cout << "Х любое" << endl; } sleep(5);//getch(); exit(0); } // прямой проход // идем слево на право по коэфицентам х for(int k=0; k < razmer-1; k++){ // вычитаем по строкам for(int m=k+1; m < razmer; m++){ // если на диагонали элемент = 0, то поменяем местами строки if(a[m][m] == 0) exchange(a, razmer, m, get_n_no_empty(a, razmer, m)); double koeficent=a[m][k]/a[0][k]; //вычисление новых коэфицентов уравнения b[m] = b[m] - b[0] * koeficent; for(int z=0; z < razmer; z++){ a[m][z] = a[m][k] - a[0][k] * koeficent; } } } // ищем решения for(int m=razmer-1; m >= 0; m--){ double sum=0; // идем по строке спаво налево, считая сумму корень*коэфицент, до текущего корня for(int i=razmer-1; i > m; i--){ sum += x[i] * a[m][i]; } x[m] = (b[m] - sum)/a[m][m]; } // вывод решений cout << "###Решения:" << endl; for(int i=0; i < razmer; i++){ cout << "x[" << i << "]=" << x[i] << endl; } pause(); }