Войти
или
Зарегистрироваться
Маркетплейс
Курсы
Учебник
Учебник 2.0
ОГЭ/ЕГЭ
Олимпиады
Рубрикатор
Компилятор
Онлайн Компилятор
Компилятор Python с отладкой
Питон - Черепашка
Редактор HTML Code
SQLite Studio - работа с БД
Статья Автор:
Бережной Олег
матмоды 1
#include <iostream> #include <vector> #include <cmath> #include <iomanip> #include <algorithm> using namespace std; const double EPS = 1e-10; vector<double> solveGauss(vector<vector<double>> A, vector<double> b) { int n = A.size(); for (int k = 0; k < n; ++k) { int maxRow = k; for (int i = k + 1; i < n; ++i) { if (abs(A[i][k]) > abs(A[maxRow][k])) { maxRow = i; } } swap(A[k], A[maxRow]); swap(b[k], b[maxRow]); if (abs(A[k][k]) < EPS) { cerr << "Ошибка: Матрица вырождена или почти вырождена." << endl; return vector<double>(n, NAN); } for (int i = k + 1; i < n; ++i) { double factor = A[i][k] / A[k][k]; b[i] -= factor * b[k]; for (int j = k; j < n; ++j) { A[i][j] -= factor * A[k][j]; } } } vector<double> x(n); for (int i = n - 1; i >= 0; --i) { x[i] = b[i]; for (int j = i + 1; j < n; ++j) { x[i] -= A[i][j] * x[j]; } x[i] /= A[i][i]; } return x; } int main() { const int n = 3; vector<vector<double>> A = { {1.53, 1.61, 1.43}, {2.35, 2.31, 2.07}, {3.83, 3.73, 3.45} }; vector<double> b = {5.13, 3.69, 5.98}; cout << "Решение СЛАУ методом Гаусса" << endl; cout << "Система:" << endl; cout << fixed << setprecision(2); for (int i = 0; i < n; ++i) { cout << A[i][0] << "*x + " << A[i][1] << "*y + " << A[i][2] << "*z = " << b[i] << endl; } vector<double> x = solveGauss(A, b); if (isnan(x[0])) { return 1; } cout << endl; cout << setprecision(6); cout << "Решение:" << endl; cout << "x = " << x[0] << endl; cout << "y = " << x[1] << endl; cout << "z = " << x[2] << endl; cout << "\nПроверка (A * x):" << endl; for (int i = 0; i < n; ++i) { double residual = 0.0; for (int j = 0; j < n; ++j) { residual += A[i][j] * x[j]; } cout << "Уравнение " << (i+1) << ": вычислено = " << residual << ", ожидалось = " << b[i] << ", разница = " << abs(residual - b[i]) << endl; } return 0; }
×
Чтобы оставить комментарий нужна авторизация
Печать