Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Blueeyer
12 / 12 / 7
Регистрация: 09.10.2013
Сообщений: 222
#1

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

20.11.2013, 14:19. Просмотров 924. Ответов 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.

Прошу дать идейку и пару примеров - как такое реализовать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2013, 14:19
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Решение уравнений методом Гаусса (C++):

Решение линейных уравнений методом Гаусса
Доброе утро! Вы могли бы помочь мне решить вариант №29

Решение линейных уравнений методом Гаусса
Всем привет. Поставлена задача создать программу, способную решать линейные...

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

Решение систем линейных уравнений методом Гаусса
Такая вот проблема вышла, не работает один случай и никак не могу найти - в чем...

Решение системы линейных уравнений методом Гаусса
необходимо решить данную задачу в visual studio c++, если можно с...

Решение линейных уравнений методом Гаусса (error C2664)
Ошибка как я понял заключается в переводе данных с масивов,но немогу исправить....

2
zss
Модератор
Эксперт С++
6950 / 6512 / 4133
Регистрация: 18.12.2011
Сообщений: 17,175
Завершенные тесты: 1
20.11.2013, 14:28 #2
Почти правильно.
Только получится не диагональная матрица, а треугольная
1 x x | ответ 1
0 1 x | ответ 2
0 0 1 | ответ 3
Из последней строки находим x3=Ответ3
Подставляем в предпоследнюю - находим x2
и т.д.
0
Blueeyer
12 / 12 / 7
Регистрация: 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 минут
Так мой вариант же выходит что так же работает,разве нет? Просто он также всё сокращает, меняя сам ответ. По идее в итоге получится всё также, просто в моем случае более наглядно всё видно и в последствии не надо подставлять значения.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2013, 14:51
Привет! Вот еще темы с решениями:

Решение системы линейных алгебраических уравнений методом Гаусса
Решить систему n линейных алгебраических уравнений методом Гаусса. Использовать...

Решение систем линейных алгебраических уравнений методом Гаусса с выбором главного элемента
Помогите пожалуйста найти решение системы линейных уравнений с матричными...

Найти решение системы линейных уравнений методом Гаусса с выбором главного элемента в столбце
Решить систему линейных уравнений методом Гаусса с выбором главного элемента в...

Системы линейных уравнений методом Гаусса
День(ночь, утро, вечер) добрый(-ая, -ое) вопрос про метод Гаусса, как его...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru