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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Blueeyer
12 / 12 / 1
Регистрация: 09.10.2013
Сообщений: 222
#1

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

20.11.2013, 14:19. Просмотров 840. Ответов 2
Метки нет (Все метки)

Был создан двухмерный динамический пассив, где указываем кол-во строк и столбцов, а затем записываем значение каждого числа всех строк поочередно. Вышло что-то такое:
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++ Решение линейных уравнений методом Гаусса (error C2664)
C++ Решить систему алгебраических уравнений методом Гаусса
C++ Методом Гаусса решить систему n линейных алгебраических уравнений
C++ Системы линейных уравнений методом Гаусса
Найти решение системы линейных уравнений методом Гаусса с выбором главного элемента в столбце C++
Системы линейных уравнений методом Гаусса C++
C++ Решение системы линейных уравнений методом Гаусса
Решение систем линейных уравнений методом Гаусса C++
C++ Решение системы линейных алгебраических уравнений методом Гаусса
C++ Написать программу для решения системы уравнений методом Гаусса (c++)
C++ Решение систем линейных алгебраических уравнений методом Гаусса с выбором главного элемента
Решение линейных уравнений методом Гаусса C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
6242 / 5845 / 1891
Регистрация: 18.12.2011
Сообщений: 14,975
Завершенные тесты: 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
Сообщений: 222
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     Решение уравнений методом Гаусса
Ответ Создать тему
Опции темы

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