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

Метод Гаусса для решения СЛАУ

18.04.2020, 18:10. Показов 494. Ответов 0

Author24 — интернет-сервис помощи студентам
Пытаюсь реализовать метод Гаусса.Помогите, пожалуйста, разобраться что к чему там, где ошибки. Функция Gauss рабочая, ошибки в фунции main, (мне кажется при передаче аргументов функции).можете подсказать как правильно создать двумерный массив и передать в функцию.
Всем кто поможет, заранее спасибо.


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
#include <iostream>
#include <cmath>
using namespace std;
#define max_x 100
#define max_y 100
int main()           
{
    setlocale(LC_ALL, "Russian");
    double eps, A[max_x][max_y], B[max_x];
    int N, i, j;
    cout << "Введите размер квадратной матрицы: ";
    cin >> N;
    cout << "Введите точность вычислений: ";
    cin >> eps;
    cout << "Заполните матрицу А: " << endl << endl;
    for (i = 1; i <= N; i++) {
        for (j = 1; j <= N; j++) {
            cout << "A[" << i << "][" << j << "] = ";
            cin >> A[i][j];
        }
    }
    cout << "\nВаша матрица А:" << endl;
    for (i = 1; i <= N; i++) {
        for (j = 1; j <= N; j++) {
            cout << A[i][j] << " ";
        }
        cout << endl;
    }
    cout << "\nЗаполните столбец свободных членов: " << endl;
    for (i = 0; i < N; i++) {
        cout << "В[" << i + 1 << "] = ";
        cin >> B[i];
    }
    gauss(A, B, N, eps);
    for (int i = 0; i < N; i++)
        cout << "x[" << i << "]=" << x[i] << endl;
    cin.get(); cin.get();
    return 0;
}
 
double gauss(double a[max_x][max_y], double y[max_x], int n, double e)
{
    double x, max;
    int k, index;
    
    x = new double[n];
    k = 0;
    while (k < n)
    {
        // Поиск строки с максимальным a[i][k]
        max = abs(a[k][k]);
        index = k;
        for (int i = k + 1; i < n; i++)
        {
            if (abs(a[i][k]) > max)
            {
                max = abs(a[i][k]);
                index = i;
            }
        }
        // Перестановка строк
        if (max < eps)
        {
            // нет ненулевых диагональных элементов
            cout << "Решение получить невозможно из-за нулевого столбца ";
            cout << index << " матрицы A" << endl;
            return 0;
        }
        for (int j = 0; j < n; j++)
        {
            double temp = a[k][j];
            a[k][j] = a[index][j];
            a[index][j] = temp;
        }
        double temp = y[k];
        y[k] = y[index];
        y[index] = temp;
        // Нормализация уравнений
        for (int i = k; i < n; i++)
        {
            double temp = a[i][k];
            if (abs(temp) < eps) continue; // для нулевого коэффициента пропустить
            for (int j = 0; j < n; j++)
                a[i][j] = a[i][j] / temp;
            y[i] = y[i] / temp;
            if (i == k)  continue; // уравнение не вычитать само из себя
            for (int j = 0; j < n; j++)
                a[i][j] = a[i][j] - a[k][j];
            y[i] = y[i] - y[k];
        }
        k++;
    }
    // обратная подстановка
    for (k = n - 1; k >= 0; k--)
    {
        x[k] = y[k];
        for (int i = 0; i < k; i++)
            y[i] = y[i] - a[i][k] * x[k];
    }
    return x;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.04.2020, 18:10
Ответы с готовыми решениями:

Метод Гаусса для решения СЛАУ
Здравствуйте! У меня есть алгоритм решения СЛАУ методом Гаусса, но почему-то он не работает((( Я...

Метод Гаусса для решения СЛАУ
Добрый день! Реализовал метод Гаусса для решения СЛАУ. Но проблема с получением ответа. Второй и...

Метод Гаусса-Зейделя для решения СЛАУ
Дана система СЛАУ, которая уже приведена к нормальному виду, то есть ничего преображать не нужно....

Метод Гаусса для решения СЛАУ с использованием одномерного массива
Доброго всем времени суток. У меня есть прога для двумерного массива #include &lt;stdio.h&gt;...

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

Написать программу, реализующую метод Гаусса для решения СЛАУ с постолбцовым выбором главного элемента
Добрый день. Очень прошу вас помочь мне с программой для лабораторной. Программа должна : -...

Метод Гаусса (подстановки) решения СЛАУ
Всем доброго времени суток, написал я одну недопрограмму, потому как сделал её наполовину. Не...

Метод Гаусса решения СЛАУ с полным выбором. C++
Написал код реализующий метод Гаусса с полным выбором ведущего элемента, но ответ выдает не...

Разработать программу для решения СЛАУ методом Гаусса.
Разработать программу для решения СЛАУ методом Гаусса. вот заданный массив...

Помогите написать программу для решения слау методом Гаусса
Осталось как обычно пару дней до сдачи курсовой, а она еще не готова! Помогите пожалуйста. Вот...

Кто сможет? Написать функцию для решения СЛАУ методом Гаусса
Кто может написать функцию для решения СЛАУ методом Гаусса используя базовые знания.


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

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

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