Форум программистов, компьютерный форум CyberForum.ru

Метод Гауса - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 5.00
A555
51 / 51 / 2
Регистрация: 04.04.2011
Сообщений: 209
09.04.2011, 14:33     Метод Гауса #1
люди если кто может помочь помогите с задание таким
Методом Гаусса решить систему n линейных алгебраических уравне-ний c n неизвестными. Матрица коэффициентов системы и вектор свободных членов хранятся в двух файлах. на С++ буду оч благодарен у самого просто фантазии не хватает как это реализовать
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ma3a
Эксперт C++
612 / 456 / 31
Регистрация: 28.01.2011
Сообщений: 605
09.04.2011, 14:39     Метод Гауса #2
Решение линейных алгебраических систем методом Гаусса
A555
51 / 51 / 2
Регистрация: 04.04.2011
Сообщений: 209
09.04.2011, 14:44  [ТС]     Метод Гауса #3
слушай помоги разобраться ты дал ссылку на решение а там не понятно что за код раскиданный
Ma3a
Эксперт C++
612 / 456 / 31
Регистрация: 28.01.2011
Сообщений: 605
09.04.2011, 14:47     Метод Гауса #4
Смотрите реализацию от Maxwe11 в той теме, там нормальное рабочее решение.
A555
51 / 51 / 2
Регистрация: 04.04.2011
Сообщений: 209
09.04.2011, 14:51  [ТС]     Метод Гауса #5
там дано три кода соединив их мне выкидывает ошибки

Добавлено через 2 минуты
и ещё подскажи что за команда
std::cout.width(10); cout через .
Ma3a
Эксперт C++
612 / 456 / 31
Регистрация: 28.01.2011
Сообщений: 605
09.04.2011, 14:56     Метод Гауса #6
Эти три кода надо поместить в три файла, первый в SLE.h, второй в SLE.cpp, третий например в main.cpp, а потом уже компилировать.
std::cout.width(10) устанавливает минимальное количество знаков в записи числа при выводе равным 10.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
09.04.2011, 15:01     Метод Гауса #7
вот Гаусс по примитивней
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
#include <iostream>
#include <iomanip>
 
void swap(double &a, double &b)
{
    double temp = a;
    a = b;
    b = temp;
}
 
void Gauss(double **A, double *B, unsigned dim) //результат - вектор Х получам в векторе В
{
    for (unsigned k = 0; k < dim; ++k)
    {
        if (A[k][k] == 0.0)
        {
            for (unsigned i = k + 1; i < dim; ++i)
            {
                if (A[i][k] != 0.0)
                {
                    for (unsigned j = 0; j < dim; ++j)
                        swap(A[i][j], A[k][j]);
 
                    swap(B[i], B[k]);
 
                    break;
                }
            }
        }
 
        double div = A[k][k];
 
        for (unsigned j = 0; j < dim; ++j)
            A[k][j] /= div;
 
        B[k] /= div;
 
        for (unsigned i = k + 1; i < dim; ++i)
        {
            double multi = A[i][k];
 
            for (unsigned j = 0; j < dim; ++j)
                A[i][j] -= multi * A[k][j];
 
            B[i] -= multi * B[k];
        }
    }
 
    for (unsigned k = dim - 1; k > 0; --k)
    {
        for (unsigned i = k - 1; i + 1 > 0; --i)
        {
            double multi = A[i][k];
 
            for (unsigned j = 0; j < dim; ++j)
                A[i][j] -= multi * A[k][j];
 
            B[i] -= multi * B[k];
        }
    }
}
 
int main()
{
    double *A[5];
    double B[5] = {22.0, 14.0, 456.0, 0.0, 5.0};
 
    for (int i = 0; i < 5; ++i)
        A[i] = new double [5];
 
    A[0][0] = 2;      A[0][1] = 0;  A[0][2] = 0;    A[0][3] = -12;  A[0][4] = 3;
    A[1][0] = 0;      A[1][1] = 2;  A[1][2] = 0;    A[1][3] = 3;    A[1][4] = 2;
    A[2][0] = 0;      A[2][1] = 0;  A[2][2] = 38;   A[2][3] = 5;    A[2][4] = 7;
    A[3][0] = -12; A[3][1] = 13;    A[3][2] = 5;    A[3][3] = 0;    A[3][4] = 0;
    A[4][0] = 3;    A[4][1] = 2;    A[4][2] = 7;    A[4][3] = 0;    A[4][4] = 0;
 
    Gauss(A, B, 5);
 
    std::cout << "X = {"
       << B[0] << '\n'
              << B[1] << '\n'
              << B[2] << '\n'
       << B[3] << '\n'
       << B[4] 
              << "}" << std::endl;
 
    for (int i = 0; i < 5; ++i)
        delete [] A[i];
    std::getchar();
    return 0;
}
A555
51 / 51 / 2
Регистрация: 04.04.2011
Сообщений: 209
09.04.2011, 15:05  [ТС]     Метод Гауса #8
если сделать динамичную матрицу будет работаеть ?
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
09.04.2011, 15:07     Метод Гауса #9
Цитата Сообщение от A555 Посмотреть сообщение
если сделать динамичную матрицу будет работаеть ?
да будет
A555
51 / 51 / 2
Регистрация: 04.04.2011
Сообщений: 209
09.04.2011, 15:08  [ТС]     Метод Гауса #10
и подскажи что за команда std::cout
std::getchar(); и компилятор подскажи плз а то мой не компилирует)
Dekio
Фрилансер
Эксперт C++
 Аватар для Dekio
5816 / 1214 / 214
Регистрация: 23.11.2010
Сообщений: 3,378
Записей в блоге: 1
09.04.2011, 15:20     Метод Гауса #11
Цитата Сообщение от A555 Посмотреть сообщение
std::cout
вывод...

Цитата Сообщение от A555 Посмотреть сообщение
std::getchar();
получение символа
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2011, 15:42     Метод Гауса
Еще ссылки по теме:

метод гауса..обьясните как работает программа C++
C++ Как найти систему методом гауса
Ошибка - Матрица гауса C++

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

Или воспользуйтесь поиском по форуму:
A555
51 / 51 / 2
Регистрация: 04.04.2011
Сообщений: 209
09.04.2011, 15:42  [ТС]     Метод Гауса #12
всем большое спасибо)
Yandex
Объявления
09.04.2011, 15:42     Метод Гауса
Ответ Создать тему
Опции темы

Текущее время: 06:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru