#include <iostream> #include <cmath> using std::cout; using std::endl; using std::cin; using std::fabs;
class SLAU { public: SLAU(int val); ~SLAU(); bool ForwardStroke(); // Прямой ход метода Гаусса bool BackStroke(); // Обратный ход метода Гаусса void PrintResult(); // Вывод полученых корней void PrintUtochRes(); // Печать уточнений void Nevazka(); // Поиск невязок bool Utochnenie(double nv); // Уточнение корней private: const int n; // Количество уравнений
double **ms; // Двумерный масив индексов double **nev; // Копия двумерного массива double *tmp; // Массив значений x1, x2, xn double *tmp2; // Массив невязок double *tmp3; // Массив корней, которые постепенно уточняются double nevazka; // Общая невязка системы
// Закрытые функции void InputValue(); // Ввод значений в матрицу void PrintCurrent(); // Печатает текущие состояние матрицы void Replace(int a, int b); // Меняет соответствующие строки };
#endif /* _SLAU_H_ */
Файл Slau.cpp
#include "Slau.h"
SLAU::SLAU(int val): n(val) { ms = new double*[n]; nev = new double*[n];
for(int i = 0; i < n; i++) { ms[i] = new double [n+1]; nev[i] = new double [n+1]; }
tmp = new double[n]; tmp2 = new double[n]; tmp3 = new double[n];
InputValue(); }
SLAU::~SLAU() { for (int i = 0; i < n; i++) { delete[]ms[i]; delete[]nev[i]; } delete[]ms; delete[]nev; delete tmp; delete tmp2; delete tmp3; }
int main() { int v = 0; double nevaz = 0.0; setlocale(0, "rus");
cout <<"######### Решение СЛАУ методом Гауса #########"<< endl; cout <<"##################################################"<< endl << endl;
cout <<"Введите количество уравнений: "; cin >> v;
SLAU *slau = new SLAU(v);
if(slau->ForwardStroke()) if(slau->BackStroke()) { slau->Nevazka(); cout <<"########## Результаты решения СЛАУ ##########"<< endl; cout <<"#################################################"<< endl << endl; slau->PrintResult();
while(slau->Utochnenie(nevaz)); }
delete slau; system("pause"); return 0; }
Министерство образования Республики Беларусь Учреждение образования «Белорусский государственный университет информатики и радиоэлектроники» Кафедра «Вычислительные методы и программирование»
Лабораторная работа №1 Тема: «Решение СЛАУ методом Гаусса»