Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // main.cpp
- // Lab8
- //
- // Created by Urbanovich on 15.03.17.
- // Copyright © 2017 Urbanovich. All rights reserved.
- //
- #include <iostream>
- #include <fstream>
- #include <cmath>
- #include <iomanip>
- using namespace std;
- int main(int argc, const char * argv[]) {
- double epsilon, **a, **b, c, k;
- int N, i, j;
- ifstream fin ("/Users/urbanovich/Programming/Lab8/text.txt");
- //считывание данных из файла.
- if (!fin)
- cout << "Файл не может быть открыт.";
- else {
- fin >> N;
- a = new double *[N];
- for (i=0;i<N;i++) a[i] = new double[N+1];
- for(i=0;i<N;i++)
- {
- for(j=0;j<N+1;j++)
- {
- fin >> a[i][j];
- }
- }
- fin >> epsilon;
- }
- fin.close();
- cout << "Вывод данных: \n";
- for(int i=0;i<N;i++)
- {
- for(int j=0;j<N;j++)
- {
- cout << setw (4) << a[i][j] << " ";
- }
- cout << "|" << setw (3) << a[i][N];
- cout << endl;
- }
- cout << "Размер матрицы: " << N << ". Точность: " << epsilon << endl;
- // Проверка на диагональное преобладание
- for (i = 0; i < N; i++)
- {
- c = 0;
- for (j = 0; j < N; j++)
- {
- if (i == j)
- {
- continue;
- }
- c += fabs(a[i][j]);
- }
- if (fabs(a[i][i]) < c)
- {
- cout << "Отсутствует преобладание диагонали. \n";
- return -1;
- }
- }
- // Итерационный процесс
- b = new double*[2];
- for (i = 0; i < 2; i++)
- {
- b[i] = new double[N];
- }
- k = 0;
- while (k != N)
- {
- k = 0;
- for (i = 0; i < N; i++)
- {
- c = 0;
- for (j = 0; j < N; j++)
- {
- if (i == j)
- {
- continue;
- }
- c += a[i][j] * b[1][j];
- }
- b[1][i] = (a[i][N] - c) / a[i][i];
- if (fabs(b[1][i] - b[0][i]) < epsilon)
- {
- k++;
- }
- }
- b[0] = b[1];
- }
- // Вывод неизвестных
- for (i = 0; i < N; i++)
- {
- cout << "x[" << i + 1 << "] = " << b[1][i] << endl;
- }
- // Освобождение памяти
- for (i = 0; i < N; i++)
- delete[]a[i];
- delete[]a;
- delete[]b;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement