Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 02.04.2013
Сообщений: 24
1

Чтение матрицы из файла для решения системы уравнений методом Якоби

03.04.2017, 09:32. Показов 1052. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток, мне нужно написать программу для решения линейных уравнений методом якоби, да на сайте есть решения, но у меня загвоздка в том что матрица, нулевое приближение, столбец свободных членов и размер матрицы находятся во внешнем файле. Я написал часть кода для чтения некоторых параметров из файла: е - нулевое приближение n количество столбцов m количество строк вектор столбец свободных членов b,нулевое приближение x0. Проблема заключается в том что я не понимаю как организовать счет по методу якоби пытался сделать цикл в цикле не смог напоролся на кучу ошибок, подскажите как лучше реализовать метод якоби в данной задачи?

основная формула по которой я хотел организовать счет:

https://www.cyberforum.ru/cgi-bin/latex.cgi?{x}_{k+1}=\left|b \right|{x}_{k}+c

b -матрица элементов которой находятся по следующей формуле:
https://www.cyberforum.ru/cgi-bin/latex.cgi?{b}_{ij}={-a}_{ij}/{a}_{ii}

a [i,j] a[i,i] элементы матрицы из файла

дополнительно прикрепляю часть кода которую написал:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#include "8_fileFunctions.h" // Подключение своего заголовочного файла.
 
double* init1XArray(int X);
 
int main(int narg, char **arg) {
    string inputFile = arg[1]; // Взятие имени входного файла из аргументов командной строки.
 
    string eNm = "e";
 
    string X0Nm = "X0";
 
    string bNm = "b";
 
    string ANm = "A";
 
    string nNm = "n";
 
    string mNm = "m";
 
 
    double e = getDouble(eNm, inputFile, 0); // Считывание вещественного параметра «a».
    int n = getInt(nNm, inputFile, 0); // Считывание целочисленного параметра «b»
 
    int m = getInt(mNm, inputFile, 0); // Считывание целочисленного параметра «m»
    int n = getInt(nNm, inputFile, 0); // Считывание целочисленного параметра «n»
 
    int* dimb = getArrayDim (bNm, inputFile);
    double* b = getDoubleArr1 (bNm, inputFile, dimb);
 
    int* dimX0 = getArrayDim(X0Nm, inputFile); // Считывание размерности одномерного масива вещественных чисел.
    double* X0 = getDoubleArr1(X0Nm, inputFile, dimX0); // Считывание одномерного массива вещественных чисел.
 
    int* dimA = getArrayDim(ANm, inputFile); // Считывание размерности двумерного масива.
    double** A = getDoubleArr2 (ANm, inputFile, dimA); // Считывание двумерного массива.
 
    double k;
            do {
                k = 1;
 
        for  (int i=1; i<=m; i++){
 
            for (int j=1; j<=n; j++){
            X [i, j]
                while (k > *e);
 
 
    // Вывод считанных данных в консоль:
 
    cout.precision(2);
    cout << eNm << setw(4) << e << endl << endl;
 
    cout.precision(2);
    cout << X0Nm << endl;
    cout << dimX0[0] << endl;
    cout << dimX0[1] << endl;
    cout << dimX0[2] << endl;
    cout << endl << endl;
 
 
 
 
/*  string outFile = inputFile.substr(0, inputFile.length() - 4).append("Out"); // Формирование имени выходного файла (убрать расширение с точкой и добавить суфикс "Out").
    outFile.append(
            inputFile.substr(inputFile.length() - 4, inputFile.length())); // Формирование имени выходного файла (добавить точку с расширением).
    ofstream outStrm; // Объявление потока записи в файл;
    outStrm.open(outFile.c_str()); // Подключения потока записи в файл к выходному файлу.
 
    outStrm.precision(2);
    outStrm.setf(ios::fixed, ios::floatfield);
 
    outStrm << aNm << setw(5) << a * 2 << endl << endl; // Запись в файл параметра «a», умноженного на 2.
    outStrm << bNm << setw(2) << b * 2 << endl << endl; // Запись в файл параметра «b», умноженного на 2.
    outStrm << cNm << " " << c << "*" << c << endl << endl; // Запись в файл параметра «c» дважды.
 
    // Запись в файл массивов, элементы которых умножены на 2:
 
    outStrm.precision(0);
    outStrm << arr1IntNm << endl;
    outStrm << dimArr1Int[0] << endl;
    outStrm << dimArr1Int[1] << endl;
    for (int i = 0; i < dimArr1Int[1]; i++)
        outStrm << setw(3) << arr1Int[i] * 2;
    outStrm << endl << endl;
 
    outStrm.precision(1);
    outStrm << arr1DoubleNm << endl;
    outStrm << dimArr1Double[0] << endl;
    outStrm << dimArr1Double[1] << endl;
    for (int i = 0; i < dimArr1Double[1]; i++)
        outStrm << setw(5) << arr1Double[i] * 2;
    outStrm << endl << endl;
 
    outStrm << arr2Nm << endl;
    outStrm << dimArr2[0] << endl;
    outStrm << dimArr2[1] << " " << dimArr2[2] << endl;
    for (int i = 0; i < dimArr2[1]; i++) {
        for (int j = 0; j < dimArr2[2]; j++)
            outStrm << setw(5) << arr2[i][j] * 2;
        outStrm << endl;
    }
    outStrm.close(); // Закрытие потока записи в файл.
*/
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.04.2017, 09:32
Ответы с готовыми решениями:

[Ada] Метод Якоби для решения системы линейных уравнений
Помогите, кто может, написать код на языке ADA на одну из трех тем: 1) Кусочно-линейный интеграл...

Написать программу для решения уравнений методом Якоби и Зейделя и вычислить количество итераций
Добрый вечер! Надо написать программу для решения уравнений методом Якоби и Зейделя и вычислить...

Решение системы линейных алгебраических уравнений методом Якоби
Помогите пожалуйста. Нужен код на языке VBA для метода решения системы линейных алгебраических...

Решения матрицы методом Зейделя и Якоби
А= 31.45 2.42 3.25 В=21.24 2.31 24.43 1.12 10.15 ...

0
03.04.2017, 09:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.04.2017, 09:32
Помогаю со студенческими работами здесь

Не работает программа для решения системы уравнений методом Гаусса
Написал программу, потом решил ее немного переделать. Перекинул расчет функции в процедуру. Но...

Написать программу для решения системы уравнений методом Гаусса (c++)
Добрый вечер! Нужно написать программу для решения системы уравнений методом Гаусса. Уравнений...

Алгоритм численного решения системы из 2-х линейных уравнений методом Гаусса. Система представлена в виде матрицы 2х3.
Кто может, напишите хотя бы один алгоритм, пожалуйста. Алгоритм численного решения системы из...

Написать программу для решения системы уравнений с пом. матрицы
Добрый день! Очень прошу вашей подсказки в написании моей первой программы для решения системы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru