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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
SlashX6
15 / 15 / 1
Регистрация: 16.03.2012
Сообщений: 420
29.09.2012, 17:21     Решение системы методом Гаусса и разбор ошибок #1
Добрый вечер! Пару дней назад начал изучать 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 ";
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NoMasters
Псевдослучайный
1737 / 1080 / 69
Регистрация: 13.09.2011
Сообщений: 3,094
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
15 / 15 / 1
Регистрация: 16.03.2012
Сообщений: 420
29.09.2012, 17:54  [ТС]     Решение системы методом Гаусса и разбор ошибок #3
Там не неверно, по идеи там тогда должен быть ответ - система не совместима, но суть не настолько в том, насколько в том как сделать подробное решение этого чуда
Triton.cpp
 Аватар для 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
15 / 15 / 1
Регистрация: 16.03.2012
Сообщений: 420
29.09.2012, 18:35  [ТС]     Решение системы методом Гаусса и разбор ошибок #5
Triton.cpp, спасибо за приведённый пример. Просто я пытаюсь сделать вывод этого всего в окне программы, а ошибок тьма и не все понятны. Microsoft Visual Studio 2010 ругается даже там, где код правильный.
Yandex
Объявления
29.09.2012, 18:35     Решение системы методом Гаусса и разбор ошибок
Ответ Создать тему
Опции темы

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