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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
SlashX6
16 / 16 / 1
Регистрация: 16.03.2012
Сообщений: 430
#1

Решение системы методом Гаусса и разбор ошибок - C++

29.09.2012, 17:21. Просмотров 1098. Ответов 4
Метки нет (Все метки)

Добрый вечер! Пару дней назад начал изучать C++ для выполнения данного задания. Задание заключается в следующем: "Решить систему равенств с точностью до 0,0001, используя метод Гаусса."
Почитав и посмотрев книжки/видео уроки, ринулся писать решения. На бумаге всё просто, а вот с программой нет.
Использую Microsoft Visual Studio 2010 для выполнения поставленной задачи. Visual Studio выдаёт ошибки и много, как я понял некоторые ошибки это просто глюки программы.

Не моглибы Вы помочь с решением. Именно вот такого "подробного" типа решением чтобы оно работало и была проверка(проверку думаю сам осилю сделать как и само решение методом Гаусса так как в и-нете есть материал.)?
Вот как решение выглядит на бумаге:

1 действие)
0,40x1 + 0,11x2 + 0,18x3 = 0,47
0,28x1 - 0,59x2 + 0,02x3 = 0,01
0,02x1 + 0,24x2 + 0,10x3 = 0,22

2 действие)
0,40x1 + 0,11x2 + 0,18x3 = 0,47 | : 0,40
0,28x1 - 0,59x2 + 0,02x3 = 0,01
0,02x1 + 0,24x2 + 0,10x3 = 0,22

3 действие)
x1 + 0,275x2 + 0,45x3 = 1,175 | * (-0,28) (-0,02)
0,28x1 - 0,59x2 + 0,02x3 = 0,01
0,02x1 + 0,24x2 + 0,10x3 = 0,22

4 действие)
x1 + 0,275x2 + 0,45x3 = 1,175
0,513x2 - 0,146x3 = -0,339 | : (-0,513)
-0,2455x2 - 0,091x3 = -0,2435

5 действие)
x1 + 0,275x2 + 0,45x3 = 1,175
x2 - 0,2846x3 = -0,6608 | * 0,2455
-0,2455x2 - 0,091x3 = -0,2435

6 действие)
x1 + 0,275x2 + 0,45x3 = 1,175
x2 - 0,2846x3 = -0,6608
0,0226x3 = 0,4055 | : 0,0226

7 действие)
x1 + 0,275x2 + 0,45x3 = 1,175
x2 - 0,2846x3 = -0,6608
x3 = 17,9438

Ответ: нету такого числа чтобы умножая на х3 получилось 17,9438. Последнее уравнение неверно.


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
/*
#include <iostream>
using namespace std;
int main()
 
{
    float x1, x2, x3, a, a1, a2;
        x1 = 0,40;
        x2 = -0,28;
        x3 = -0,02;
        a = 0,513;
        a1 = 0,2455;
        a2 = 0,0226;
    
    cout << "0,40x1 + 0,11x2 + 0,18x3 = 0,47 \n ";
    cout << "0,28x1 - 0,59x2 + 0,02x3 = 0,01 \n ";
    cout << "0,02x1 + 0,24x2 + 0,10x3 = 0,22 \n ";
        
    cout << " \n ";
    
    // 1 действие)
    cout << "0,40 " << "+" << 0,11 \ x1 << "+" << 0,18 \ x1 << "=" << 0,47 \ x1 <<  "| : 0,40 " ;
    cout << "0,28x1 - 0,59x2 + 0,02x3 = 0,01 \n ";
    cout << "0,02x1 + 0,24x2 + 0,10x3 = 0,22 \n ";
    
    cout << " \n ";
    
    // 2 действие)
    cout <<  "x1 + " << 0,11 * x2 << "x2 + " << 0,18 * x2 << "x3 = "<< 0,47 * x2 << "| * -0,28 " ;
    cout << "0,28x1 - 0,59x2 + 0,02x3 = 0,01 \n ";
    cout << "0,02x1 + 0,24x2 + 0,10x3 = 0,22 \n ";
    
    cout << " \n ";
    
    // 3 действие)
    cout <<  "x1 + " << 0,275 * x3 << "x2 + " 0,45 * x3 << "x3 = " <<1,175 * x3 << "| * -0,02 " ;
    cout << "0,28x1 - 0,59x2 + 0,02x3 = 0,01 \n ";
    cout << "0,02x1 + 0,24x2 + 0,10x3 = 0,22 \n ";
    
    cout << " \n ";
    
    // 4 действие)
    cout << " x1 + 0,275x2 + 0,45x3 = 1,175 \n ";
    cout <<       "0,513x1 " << "x2 - " << 0,146 \ a << "x3 = " << -0,339 \ a << "| : 0,513 ";
    cout << " x1 - 0,2455x2 - 0,091x3 = -0,2435 \n ";
    
    cout << " \n ";
    
    // 5 действие)
    cout << " x1 + 0,275x2 + 0,45x3 = 1,175 \n ";
    cout <<        << "x2 " -0,2846 \ a1 << "x3 = "-0,6608 \ a1 << "| : 0,2455";
    cout << "      -0,2455x2 - 0,091x3 = -0,2435 \n ";
    
    cout << " \n ";
    
    // 6 действие)
    cout << " x1 + 0,275x2 + 0,45x3 = 1,175 \n ";
    cout << "      x2 - 0,2846x3 = -0,6608 \n ";
    cout <<           0,0226 \ a2 << "x3 = " << 0,40553 \ a2 << "| : 0,0226" ;
    
    cout << " \n ";
    
    // 7 действие)
    cout << " x1 + 0,275x2 + 0,45x3 = 1,175 \n ";
    cout << "      x2 - 0,2846x3 = -0,6608 \n ";
    cout << "               x3 = 17,9438 \n ";
    
    cout << " \n ";
    cout << "Ответ: нету такого числа чтобы при умножении на х3 получалось 17б9438 ";
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.09.2012, 17:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Решение системы методом Гаусса и разбор ошибок (C++):

Решение системы уравнений методом Гаусса - C++
Всем доброго времени суток. Нужно написать программу для решения СЛАУ методом Гаусса. #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #define...

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

Решение системы линейного уравнение методом Гаусса - C++
Ребята можешь кто подсказать программу или показать варианты программы , которая может решить данное уравнение по методу Гауса . Очень...

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

Найти решение системы линейных уравнений методом Гаусса с выбором главного элемента в столбце - C++
Решить систему линейных уравнений методом Гаусса с выбором главного элемента в столбце. Вот моя программа #include &quot;stdafx.h&quot; ...

очередной разбор ошибок. системы счисления - C++
Конечно задание делала по примерам,можно сказать собирала по кусочкам, пыталась.. А теперь не могу понять правильно или нет сделала потому...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
NoMasters
Псевдослучайный
1753 / 1096 / 72
Регистрация: 13.09.2011
Сообщений: 3,127
29.09.2012, 17:41 #2
Цитата Сообщение от SlashX6 Посмотреть сообщение
0,40x1 + 0,11x2 + 0,18x3 = 0,47
0,28x1 - 0,59x2 + 0,02x3 = 0,01
0,02x1 + 0,24x2 + 0,10x3 = 0,22
Цитата Сообщение от SlashX6 Посмотреть сообщение
Ответ: ... Последнее уравнение неверно.
Это как получилось? Система из трёх линейнонезависимых уравней с тремя переменными, как тут может не найтись решение?
SlashX6
16 / 16 / 1
Регистрация: 16.03.2012
Сообщений: 430
29.09.2012, 17:54  [ТС] #3
Там не неверно, по идеи там тогда должен быть ответ - система не совместима, но суть не настолько в том, насколько в том как сделать подробное решение этого чуда
Triton.cpp
33 / 33 / 3
Регистрация: 14.04.2011
Сообщений: 103
29.09.2012, 18:25 #4
Как-то писал программу по Выч.мату, которая выводит в файл все этапы решения СЛАУ в более-менее читаемой форме.
Результат ее работы для вышеприведенной СЛАУ:
Кликните здесь для просмотра всего текста
РЕШЕНИЕ СЛАУ МЕТОДОМ ГАУССА
════════════════════════════════════════════════════════════════════
0.18 0.11 0.4 │ 0.47
0.02 0.59 0.28 │ 0.01
0.1 0.24 0.02 │ 0.22

ПРЯМОЙ ХОД
──────────
1 0.611111 2.22222 │ 2.61111
0 0.577778 0.235556 │-0.0422222
0 0.178889 -0.202222 │-0.0411111

1 0.611111 2.22222 │ 2.61111
0 1 0.407692 │-0.0730769
0 0 -0.275154 │-0.0280384

1 0.611111 2.22222 │ 2.61111
0 1 0.407692 │-0.0730769
0 0 1 │ 0.101901

ОБРАТНЫЙ ХОД
────────────
1 0.611111 0 │ 2.38466
0 1 0 │ -0.114621
0 0 1 │ 0.101901

1 0 0 │ 2.45471
0 1 0 │ -0.114621
0 0 1 │ 0.101901

РЕШЕНИЕ СЛАУ МЕТОДОМ ГАУССА С ПОСТОЛБЦОВЫМ ВЫБОРОМ ГЛАВНОГО ЭЛЕМЕНТА
════════════════════════════════════════════════════════════════════
0.18 0.11 0.4 │ 0.47
0.02 0.59 0.28 │ 0.01
0.1 0.24 0.02 │ 0.22

ПРЯМОЙ ХОД
──────────
Перестановка строк
0.18 0.11 0.4 │ 0.47
0.02 0.59 0.28 │ 0.01
0.1 0.24 0.02 │ 0.22

Нормирование
1 0.611111 2.22222 │ 2.61111
0 0.577778 0.235556 │-0.0422222
0 0.178889 -0.202222 │-0.0411111

Перестановка строк
1 0.611111 2.22222 │ 2.61111
0 0.577778 0.235556 │-0.0422222
0 0.178889 -0.202222 │-0.0411111

Нормирование
1 0.611111 2.22222 │ 2.61111
0 1 0.407692 │-0.0730769
0 0 -0.275154 │-0.0280384

Нормирование
1 0.611111 2.22222 │ 2.61111
0 1 0.407692 │-0.0730769
0 0 1 │ 0.101901

ОБРАТНЫЙ ХОД
────────────
1 0.611111 0 │ 2.38466
0 1 0 │ -0.114621
0 0 1 │ 0.101901

1 0 0 │ 2.45471
0 1 0 │ -0.114621
0 0 1 │ 0.101901

РЕШЕНИЕ СЛАУ МЕТОДОМ ГАУССА С ВЫБОРОМ ГЛАВНОГО ЭЛЕМЕНТА
════════════════════════════════════════════════════════════════════
0.18 0.11 0.4 │ 0.47
0.02 0.59 0.28 │ 0.01
0.1 0.24 0.02 │ 0.22

ПРЯМОЙ ХОД
──────────
Перестановка строк
0.02 0.59 0.28 │ 0.01
0.18 0.11 0.4 │ 0.47
0.1 0.24 0.02 │ 0.22

Перестановка столбцов
0.59 0.02 0.28 │ 0.01
0.11 0.18 0.4 │ 0.47
0.24 0.1 0.02 │ 0.22

Нормирование
1 0.0338983 0.474576 │ 0.0169492
0 0.176271 0.347797 │ 0.468136
0 0.0918644 -0.0938983 │ 0.215932

Перестановка столбцов
1 0.474576 0.0338983 │ 0.0169492
0 0.347797 0.176271 │ 0.468136
0 -0.0938983 0.0918644 │ 0.215932

Нормирование
1 0.474576 0.0338983 │ 0.0169492
0 1 0.506823 │ 1.346
0 0 0.139454 │ 0.34232

Нормирование
1 0.474576 0.0338983 │ 0.0169492
0 1 0.506823 │ 1.346
0 0 1 │ 2.45471

ОБРАТНЫЙ ХОД
────────────
1 0.474576 0 │-0.0662614
0 1 0 │ 0.101901
0 0 1 │ 2.45471

1 0 0 │ -0.114621
0 1 0 │ 0.101901
0 0 1 │ 2.45471

РЕШЕНИЕ СЛАУ МЕТОДОМ ГАУССА-ЖОРДАНА
════════════════════════════════════════════════════════════════════
0.18 0.11 0.4 │ 0.47
0.02 0.59 0.28 │ 0.01
0.1 0.24 0.02 │ 0.22

1 0.611111 2.22222 │ 2.61111
0 0.577778 0.235556 │-0.0422222
0 0.178889 -0.202222 │-0.0411111

1 0 1.97308 │ 2.65577
0 1 0.407692 │-0.0730769
0 0 -0.275154 │-0.0280384

1 0 0 │ 2.45471
0 1 0 │ -0.114621
0 0 1 │ 0.101901
SlashX6
16 / 16 / 1
Регистрация: 16.03.2012
Сообщений: 430
29.09.2012, 18:35  [ТС] #5
Triton.cpp, спасибо за приведённый пример. Просто я пытаюсь сделать вывод этого всего в окне программы, а ошибок тьма и не все понятны. Microsoft Visual Studio 2010 ругается даже там, где код правильный.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.09.2012, 18:35
Привет! Вот еще темы с ответами:

Решение матриц Методом Гаусса - C++
Ребят, не запускается программа на C++ для Решения матриц Методом Гаусса. Пожалуйста, запустите и выясните в чём проблема. И желательно...

Решение СЛАУ методом Гаусса - C++
помогите разобраться!!ВЫдает 85 ошибок!!!! #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;tchar.h&gt; #include &lt;iostream&gt; #include...

Решение СЛАУ методом Гаусса - C++
Всем привет))) Друзья, сколько я уже лазию по инету и по этому форуму, я никак не могу найти правильно работающей программки. Может кто...

Решение СЛАУ методом Гаусса - C++
У меня программа для решения слау методом Гаусса с выбором главного элемента по столбцам. Что-то мне не нравятся ответы, гляньте может в...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
29.09.2012, 18:35
Ответ Создать тему
Опции темы

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