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

Решение уравнений методом Гаусса - C++

Восстановить пароль Регистрация
 
Blueeyer
12 / 12 / 1
Регистрация: 09.10.2013
Сообщений: 220
20.11.2013, 14:19     Решение уравнений методом Гаусса #1
Был создан двухмерный динамический пассив, где указываем кол-во строк и столбцов, а затем записываем значение каждого числа всех строк поочередно. Вышло что-то такое:
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
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    float **matrix=NULL;
    int n, m;
    cout<<"Введите кол-во строк: "<<endl;
    cin>>n;
    cout<<"Введите кол-во неизвестных в строке: "<<endl; 
    cin>>m;
 
    matrix=new float *[n];
    for (int i=0; i<n; i++)
   matrix[i]=new float [m+1];
    for (int v=0; v<n; v++){
        for (int j=0; j<m; j++){
            cout<<"Строка #"<<v+1<<" ----- Неизвестная #"<<j+1<<endl;
            cin>>matrix[v][j];
        }
        cout<<"Чему это равно? ("<<v+1<<" строка)"<<endl;
        cin>>matrix[v][m];
    }
    cout<<endl;
    for (int k = 0; k < n; k++){
        for (int l = 0; l <= m; l++){          //Для вывода матрицы 
            cout<<matrix[k][l]<<" ";
        }
        cout<<endl;    
    } 
    system("PAUSE");
    return 0;
}

Хочу реализовать что-то такое:
Допустим, у нас 3 строки и 3 неизвестных (тоесть 4 столбика выйдет (3 неизвестных + 1 под ответ)).

К примеру:
4 3 6 | 9
3 2 5 | 7
2 9 4 | 12

Хочу реализовать следующее:
Берется первое число первой строчки ( в данном случае 4), затем оно делится на всю эту строчку, так, чтоб первая цифра была 1. Затем эта строчка вычитается из всех остальных строчек, тоесть в итоге первый столбик в данном случае будет выглядеть так:
1
0
0

Затем второе число второй строки делим на всё эту строку, так, чтобы само оно стало единицей. После чего отнимаем вторую строку от всех, домноженную на второе число каждой из строк. Затем Аналогично и с третьей строкой и 3 числом.

В итоге выйдет что-то вроде:
1 0 0 | ответ 1
0 1 0 | ответ 2
0 0 1 | ответ 3


Тоесть x1 = ответ 1, x2 = ответ 2, x3 = ответ 3.

Прошу дать идейку и пару примеров - как такое реализовать.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2013, 14:19     Решение уравнений методом Гаусса
Посмотрите здесь:

Решение СЛАУ методом Гаусса C++
C++ Методом Гаусса решить систему n линейных алгебраических уравнений
C++ Системы линейных уравнений методом Гаусса
Найти решение системы линейных уравнений методом Гаусса с выбором главного элемента в столбце C++
Системы линейных уравнений методом Гаусса C++
Решение систем линейных уравнений методом Гаусса C++
C++ Решение системы линейных алгебраических уравнений методом Гаусса
C++ Написать программу для решения системы уравнений методом Гаусса (c++)

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,155
Завершенные тесты: 1
20.11.2013, 14:28     Решение уравнений методом Гаусса #2
Почти правильно.
Только получится не диагональная матрица, а треугольная
1 x x | ответ 1
0 1 x | ответ 2
0 0 1 | ответ 3
Из последней строки находим x3=Ответ3
Подставляем в предпоследнюю - находим x2
и т.д.
Blueeyer
12 / 12 / 1
Регистрация: 09.10.2013
Сообщений: 220
20.11.2013, 14:51  [ТС]     Решение уравнений методом Гаусса #3
Цитата Сообщение от zss Посмотреть сообщение
Почти правильно.
Только получится не диагональная матрица, а треугольная
1 x x | ответ 1
0 1 x | ответ 2
0 0 1 | ответ 3
Из последней строки находим x3=Ответ3
Подставляем в предпоследнюю - находим x2
и т.д.
Но как такое реализовать? Как я понял - это снова цикл в цикле, но немного не улавливаю как строчки вычитать и делить всё вот так.

Добавлено через 9 минут
Так мой вариант же выходит что так же работает,разве нет? Просто он также всё сокращает, меняя сам ответ. По идее в итоге получится всё также, просто в моем случае более наглядно всё видно и в последствии не надо подставлять значения.
Yandex
Объявления
20.11.2013, 14:51     Решение уравнений методом Гаусса
Ответ Создать тему
Опции темы

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