Добавил:
SSU_CSIT
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:методы вычислений Поплавский / Metod_Gaussa
.cpp#include <iostream>
#include <conio.h>
#include <iomanip>
#include <vector>
using namespace std;
int main() {
setlocale(LC_ALL, "RUS");
cout << "Введите размерность массива: ";
int i, j, k, n;
float d, s;
cin >> n;
vector < vector <float> > MasA(n, vector <float>(n));
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cout << "Введите [" << i << "][" << j << "] элемент: ";
cin >> MasA[i][j];
}
cout << endl;
}
cout << "\nВведите дополнение\n" << endl;;
vector <float> MasB;
for (int i = 0; i < n; i++) {
float x;
cout << "Введите [" << i << "]: ";
cin >> x;
MasB.push_back(x);
}
vector <float> MasX(n);
cout << "\nСЛАУ:" << endl;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++)
cout << setw(4) << MasA[i][j] << " ";
cout << setw(4) << MasB[i] << endl;
}
for (int k = 0; k < n; k++) { //Прямой ход
for (int j = k + 1; j < n; j++) {
d = (double)MasA[j][k] / MasA[k][k];
for (int i = k; i < n; i++)
MasA[j][i] -= d * MasA[k][i];
MasB[j] -= d * MasB[k];
}
}
for (int k = n - 1; k >= 0; k--) { //Обратный ход
d = 0;
for (int j = k + 1; j < n; j++)
d += MasA[k][j] * MasX[j];
MasX[k] = (MasB[k] - d) / MasA[k][k];
}
cout << "Найденые иксы:" << endl;
for (int i = 0; i < n; i++)
cout << "x" << i + 1 << " = " << MasX[i] << " " << endl;
int x1 = 0, x2 = 0, x3 = 0, x4 = 0;
x1 = MasB[0] * 2 - MasX[1];
x2 = MasB[1] * 5 + MasX[2] * 2;
x3 = MasB[0] - MasX[1] + MasX[2] * 3;
cout << endl << "Проверка:" << endl;
cout << MasX[0] << " = " << x1 << endl;
cout << MasX[1] << " = " << x2 << endl;
cout << MasX[2] << " = " << x3 << endl;
return 0;
}
Соседние файлы в папке методы вычислений Поплавский