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

СЛАУ методом Жордана-Гаусса - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 47, средняя оценка - 4.96
Reminaru
0 / 0 / 0
Регистрация: 20.04.2013
Сообщений: 14
20.04.2013, 17:36     СЛАУ методом Жордана-Гаусса #1
Нужна программа для решения СЛАУ методом Жордана-Гаусса с выбором главного элемента.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
hoob
19 / 11 / 1
Регистрация: 04.11.2012
Сообщений: 89
Записей в блоге: 1
20.04.2013, 17:51     СЛАУ методом Жордана-Гаусса #2
Случайно, не в мифи учишься?
Reminaru
0 / 0 / 0
Регистрация: 20.04.2013
Сообщений: 14
20.04.2013, 18:07  [ТС]     СЛАУ методом Жордана-Гаусса #3
hoob, нет, а что?
hoob
19 / 11 / 1
Регистрация: 04.11.2012
Сообщений: 89
Записей в блоге: 1
20.04.2013, 18:34     СЛАУ методом Жордана-Гаусса #4
Цитата Сообщение от Reminaru Посмотреть сообщение
hoob, нет, а что?
Просто есть готовая программа (с интерфейсом), но не хотелось бы, что бы ее в мифи сдавали еще раз
Reminaru
0 / 0 / 0
Регистрация: 20.04.2013
Сообщений: 14
20.04.2013, 18:39  [ТС]     СЛАУ методом Жордана-Гаусса #5
hoob, ну я не в мифи учусь если что) можешь скинуть?

Добавлено через 1 минуту
hoob, и мне бы код тоже сам, я хоть посмотрю, что и как работает)
hoob
19 / 11 / 1
Регистрация: 04.11.2012
Сообщений: 89
Записей в блоге: 1
20.04.2013, 18:50     СЛАУ методом Жордана-Гаусса #6
Цитата Сообщение от Reminaru Посмотреть сообщение
hoob, ну я не в мифи учусь если что) можешь скинуть?

Добавлено через 1 минуту
hoob, и мне бы код тоже сам, я хоть посмотрю, что и как работает)
Написано, правда, под Qt, но на C++
Вложения
Тип файла: rar GaussMethod_with_release.rar (4.62 Мб, 644 просмотров)
Reminaru
0 / 0 / 0
Регистрация: 20.04.2013
Сообщений: 14
20.04.2013, 19:22  [ТС]     СЛАУ методом Жордана-Гаусса #7
hoob, спасибо)

Добавлено через 1 минуту
hoob, а чисто коды еще есть?
hoob
19 / 11 / 1
Регистрация: 04.11.2012
Сообщений: 89
Записей в блоге: 1
20.04.2013, 19:39     СЛАУ методом Жордана-Гаусса #8
Цитата Сообщение от Reminaru Посмотреть сообщение
hoob, спасибо)

Добавлено через 1 минуту
hoob, а чисто коды еще есть?
В смысле чисто коды? Там же одна папка с релизом, другая с исходниками

Добавлено через 4 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
//Сам метод Гаусса - матрица приводится к виду, когда под главной диаганалью нули
for (k=0 ; k < n ; k++)
        {
            if(usr_vedelm->isChecked()) vedElem(A,k); //если выбрана опция вызова процедуры выбора ведущего элемента
            for ( i = k+1 ; i < n; i++ )
            {
                buf = A[i][k]/A[k][k];
                for ( j = k ; j < n+1 ; j++)
                    A[i][j]=A[i][j]-buf*A[k][j];
            }
        }
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//Ищем решение снизу вверх прямой подстановкой 
void MyWidget::findSolution(double **A, double **B)
{
    int n = usr_dim -> text().toInt();
    int i,j;
    double buf=0.0;
    double* X = new double [n];
    X[n-1]=A[n-1][n]/A[n-1][n-1];
    for ( i = n-2; i >= 0; i-- )
    {
        buf =0;
        for ( j = i+1 ; j < n ; j++)
            buf=buf+A[i][j]*X[j];
        X[i]=1.0/A[i][i]*(A[i][n]-buf);
    }
    newValue(X,1);
    nevyazka(B,X); //ищем невязку
}
Процедура выбора ведущего (главного) элемента. Передается указатель на матрицу и номер итерации
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
void MyWidget::vedElem(double **A, int k)
{
    int n = usr_dim->text().toInt();
    int kmax=k;
    double det = 1.0;
    double Amod;
    double Amax=fabs(A[k][k]);
    if (k<n)
    {
        for (int i = k+1 ; i < n ; i++)
        {
            Amod=fabs(A[i][k]);
            if (Amod > Amax)
            {
                Amax=Amod;
                kmax=i;
            }
        }
    }
    if (fabs(Amax)<=DBL_EPSILON) //DBL_EPSILON - машинный ноль, для типа double
    {
        det=0.0;
        crash();
        return;
    }
    if (kmax!=k)
    {
        for (int j = k; j < n+1 ; j++)
        {
            double buf=A[k][j];
            A[k][j]=A[kmax][j];
            A[kmax][j]=buf;
        }
        det=-det;
    }
    det=det*A[k][k];
 
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.04.2013, 23:02     СЛАУ методом Жордана-Гаусса
Еще ссылки по теме:

Вылет программы для вычисления СЛАУ методом Жордана-Гаусса при исполнении C++
C++ Решение СЛАУ методом Гаусса
СЛАУ методом Гаусса C++
Решение СЛУ методом Жордана-Гаусса, заменить массив на динамический C++
C++ Реализовать решение СЛАУ методом Гаусса

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

Или воспользуйтесь поиском по форуму:
Reminaru
0 / 0 / 0
Регистрация: 20.04.2013
Сообщений: 14
20.04.2013, 23:02  [ТС]     СЛАУ методом Жордана-Гаусса #9
hoob, спасибо огромное)
Yandex
Объявления
20.04.2013, 23:02     СЛАУ методом Жордана-Гаусса
Ответ Создать тему
Опции темы

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