0 / 0 / 0
Регистрация: 20.12.2015
Сообщений: 80
1

Решение матрицы, СЛАР С++ методом простых итераций

11.03.2017, 13:41. Показов 2498. Ответов 1
Метки нет (Все метки)

такое задание
нужно по скрину который я прикреплю ниже с маткада сделать программу,
На вход алгоритму подается матрица, задающая систему линейных уравнений, которую требуется разрешить, а также задается точность, которую необходимо обеспечить. На выходе алгоритм выдает найденное решение с 8-ью знаками точности. Все вычисления проводятся с типом данных long double для повышения точности.

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
#include <iostream>
#include <vector>
#include <cmath>
 
using namespace std;
 
int main()
{
    // Считываем размер вводимой матрицы
    int size;
    cin >> size;
    
    // Будем хранить матрицу в векторе, состоящем из 
    // векторов вещественных чисел
    vector <vector <long double> > matrix;
    
    // Матрица будет иметь размер (size) x (size + 1),
    // c учетом столбца свободных членов    
    matrix.resize (size);
    for (int i = 0; i < size; i++)
    {
        matrix[i].resize (size + 1);
 
        for (int j = 0; j < size + 1; j++)
        {
            cin >> matrix[i][j];
        }
    }
 
    // Считываем необходимую точность решения
    long double eps;
    cin >> eps;
 
    // Введем вектор значений неизвестных на предыдущей итерации,
    // размер которого равен числу строк в матрице, т.е. size,
    // причем согласно методу изначально заполняем его нулями
    vector <long double> previousVariableValues (size, 0.0);
 
    // Будем выполнять итерационный процесс до тех пор, 
    // пока не будет достигнута необходимая точность    
    while (true)
    {
        // Введем вектор значений неизвестных на текущем шаге       
        vector <long double> currentVariableValues (size);
 
        // Посчитаем значения неизвестных на текущей итерации
        // в соответствии с теоретическими формулами
        for (int i = 0; i < size; i++)
        {
            // Инициализируем i-ую неизвестную значением 
            // свободного члена i-ой строки матрицы
            currentVariableValues[i] = matrix[i][size];
 
            // Вычитаем сумму по всем отличным от i-ой неизвестным
            for (int j = 0; j < size; j++)
            {
                // При j < i можем использовать уже посчитанные
                // на этой итерации значения неизвестных
                if (j < i)
                {
                    currentVariableValues[i] -= matrix[i][j] * currentVariableValues[j];
                }
 
                // При j > i используем значения с прошлой итерации
                if (j > i)
                {
                    currentVariableValues[i] -= matrix[i][j] * previousVariableValues[j];
                }
            }
 
            // Делим на коэффициент при i-ой неизвестной
            currentVariableValues[i] /= matrix[i][i];
        }
 
        // Посчитаем текущую погрешность относительно предыдущей итерации
        long double error = 0.0;
        
        for (int i = 0; i < size; i++)
        {
            error += abs (currentVariableValues[i] - previousVariableValues[i]);
        }
 
        // Если необходимая точность достигнута, то завершаем процесс
        if (error < eps)
        {
            break;
        }
 
        // Переходим к следующей итерации, так 
        // что текущие значения неизвестных 
        // становятся значениями на предыдущей итерации
        previousVariableValues = currentVariableValues;
    }
 
    // Выводим найденные значения неизвестных с 8 знаками точности
    for (int i = 0; i < size; i++)
    {
        printf ("%.8llf ", previousVariableValues[i]);
    }
 
    return 0;   
}
5
Миниатюры
Решение матрицы, СЛАР С++ методом простых итераций  
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.03.2017, 13:41
Ответы с готовыми решениями:

Решение СЛАУ методом простых итераций
Нужно решить слау (4 на 4), значения матрица и вектор вводится с клавиатуры, также нужно ввести...

Решение методом простых итераций СЛАУ
3 2 1 4 1 1 -1 1 1 -2 1 3 то есть 4, 1, 3 - это b а все остальные числа - это кэфи при иксах....

Решение СЛАУ методом простых итераций.
#include &lt;iostream.h&gt; #include &lt;iomanip.h&gt; #include &lt;math.h&gt; #include &lt;stdlib.h&gt; #include...

Решение нелинейного уравнения методом простых итераций
как будет выглядеть код программы на С++ &quot;решение нелинейного уравнения методом простых итерации?&quot;

1
0 / 0 / 0
Регистрация: 01.06.2019
Сообщений: 1
11.11.2019, 01:25 2
У вас же получилась программа?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.11.2019, 01:25
Помогаю со студенческими работами здесь

Решение нелинейного уравнения методом простых итераций
f(x)=arcsin(2x+1)-x^2=0 , ошибок при компиляции нету , но при запуске выдаёт Asin: Domain Error и...

Решение нелинейного уравнения методом простых итераций
Здравствуйте, помогите пожалуйста написать программу для решения нелинейного уравнения методом...

Решение системы линейных уравнений методом простых итераций
Здравствуйте! Нужна вот такая помощь, незнаю как написать такую программу.

Значение и вектор матрицы. Методом простых итераций
Здравствуйте, помогите пожалуйста с решением задачи.Для уточнения корня использовать метод простых...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru