Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
11 / 12 / 8
Регистрация: 16.11.2016
Сообщений: 892

Решение СЛАУ методом Гаусса. Ошибка

14.03.2020, 19:52. Показов 534. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день/утро/вечер! Хочу прописать решение СЛАУ методом Гаусса ( https://ru.wikipedia.org/wiki/Метод_Гаусса найдите на странице через cntr+f прямой ход). Прописал преобразование пару строк (не все преобразования!!!), но почему-то выдаёт даже близко неверный результат за те же пару преобразований:
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
private void slau()
        {
            matrix[0, 1] = matrix[0, 1] - matrix[0, 0] * (matrix[0, 1] * matrix[0, 0]);
            matrix[1, 1] = matrix[1, 1] - matrix[1, 0] * (matrix[0, 1] * matrix[0, 0]);
            matrix[2, 1] = matrix[2, 1] - matrix[2, 0] * (matrix[0, 1] * matrix[0, 0]);
            matrix[3, 1] = matrix[3, 1] - matrix[3, 0] * (matrix[0, 1] * matrix[0, 0]);
 
            matrix[0, 2] = matrix[0, 2] - matrix[0, 0] * (matrix[0, 2] * matrix[0, 0]);
            matrix[1, 2] = matrix[1, 2] - matrix[1, 0] * (matrix[0, 2] * matrix[0, 0]);
            matrix[2, 2] = matrix[2, 2] - matrix[2, 0] * (matrix[0, 2] * matrix[0, 0]);
            matrix[3, 2] = matrix[3, 2] - matrix[3, 0] * (matrix[0, 2] * matrix[0, 0]);
 
            matrix[0, 3] = matrix[0, 3] - matrix[0, 0] * (matrix[0, 3] * matrix[0, 0]);
            matrix[1, 3] = matrix[1, 3] - matrix[1, 0] * (matrix[0, 3] * matrix[0, 0]);
            matrix[2, 3] = matrix[2, 3] - matrix[2, 0] * (matrix[0, 3] * matrix[0, 0]);
            matrix[3, 3] = matrix[3, 3] - matrix[3, 0] * (matrix[0, 3] * matrix[0, 0]);
 
            matrix[1, 2] = matrix[1, 1] - matrix[1, 1] * (matrix[1, 2] * matrix[1, 1]);
            matrix[2, 2] = matrix[2, 1] - matrix[2, 1] * (matrix[1, 2] * matrix[1, 1]);
            matrix[3, 2] = matrix[3, 1] - matrix[3, 1] * (matrix[1, 2] * matrix[1, 1]);
 
            matrix[1, 3] = matrix[1, 3] - matrix[1, 1] * (matrix[1, 3] * matrix[1, 1]);
            matrix[2, 3] = matrix[2, 3] - matrix[2, 1] * (matrix[1, 3] * matrix[1, 1]);
            matrix[3, 3] = matrix[3, 3] - matrix[3, 1] * (matrix[1, 3] * matrix[1, 1]);
 
 
 
            ShowMatrix();
        }
 
        private void ShowMatrix()
        {
            dataGridView1.RowCount = matrix.GetLength(0);
            dataGridView1.ColumnCount = matrix.GetLength(1);
 
            for (int i = 0; i < dataGridView1.RowCount; i++)
                for (int j = 0; j < dataGridView1.ColumnCount; j++)
                    dataGridView1[j, i].Value = matrix[i, j];
        }
Первая картинка - правильное решение
Вторая - решение моей программы
Миниатюры
Решение СЛАУ методом Гаусса. Ошибка   Решение СЛАУ методом Гаусса. Ошибка  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.03.2020, 19:52
Ответы с готовыми решениями:

Ошибка точки входа. Решение СЛАУ методом Гаусса
Добрый день! Пишу программу для решения заданной СЛАУ методом Гауссом. Отдельные части программы работают правильно. При компиляции...

Решение СЛАУ методом Гаусса
Привет всем! уже сбился с ног в поисках работающего кода для решения СЛАУ методом Гаусса, буду очень благодарен если кто подкинет пример...

Решение СЛАУ методом ГАУССА
По роду деятельности зачастую необходимо решать СЛАУ вида A*x=b A x b До недавних пор использовал библиотеку ALGLIB для .NET ...

3
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,115
Записей в блоге: 2
14.03.2020, 20:11
triatri3, посмотрите здесь Реализации решение СЛАУ методом Гаусса

Добавлено через 9 минут
Цитата Сообщение от triatri3 Посмотреть сообщение
Прописал преобразование пару строк (не все преобразования!!!)
Как я понял вы прописали только первый шаг.
На первом шаге преобразование первой строки отливается от преобразования других строк.
В целом, на каждом шаге преобразовании строки с номером шаги иное чем других строк.
Будем называть ее "Основной".

В "классическом" Гауссе Основная строка не изменяется.
В "усовершенствованном" Основная строка делится на свой диагональный элемент.
Поэтому после окончания преобразования всех строк получается единичная матрица - в ней есть только диагональные элементы равные единице.
1
11 / 12 / 8
Регистрация: 16.11.2016
Сообщений: 892
19.03.2020, 16:06  [ТС]
Переписал код заново, что-то более приблежённое получается, но всё равно далёкое. В чём ошибка, не подскажите, господа и леди?

П.с. закоментил половину строк т.к. хочу пошагово разобрать ошибки в моём коде (а по-другому и не получится). Выполняется только первый шаг - преобразование со 2-ой по 4-ую строку, обнуление первых элементов.
Прикреплю иллюстрацию:
сверху - решение на одном из сайтов, снизу - выполнение моей программы.
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
double val = matrix[1,0] / matrix[0,0];
            matrix[1, 1] = matrix[1, 1] - matrix[0, 1] * val;
            matrix[1, 2] = matrix[1, 2] - matrix[0, 2] * val;
            matrix[1, 3] = matrix[1, 3] - matrix[0, 3] * val;
            matrix[1, 0] = matrix[1, 0] - matrix[0, 0] * val;
            //wector[1] = wector[1] - wector[0] * val;
            val = matrix[2, 0] / matrix[0, 0];
            matrix[2, 1] = matrix[2, 1] - matrix[0, 1] * val;
            matrix[2, 2] = matrix[2, 2] - matrix[0, 2] * val;
            matrix[2, 3] = matrix[2, 3] - matrix[0, 3] * val;
            matrix[2, 0] = matrix[2, 0] - matrix[0, 0] * val;
            wector[2] = wector[2] - wector[0] * val;
            val = matrix[3, 0] / matrix[0, 0];
            matrix[3, 1] = matrix[3, 1] - matrix[0, 1] * val;
            matrix[3, 2] = matrix[3, 2] - matrix[0, 2] * val;
            matrix[3, 3] = matrix[3, 3] - matrix[0, 3] * val;
            matrix[3, 0] = matrix[3, 0] - matrix[0, 0] * val;
            wector[3] = wector[3] - wector[0] * val;
 
            /*val = matrix[2, 1] / matrix[1, 1];
            matrix[2, 1] = matrix[2, 1] - matrix[1, 1] * val;
            matrix[2, 2] = matrix[2, 2] - matrix[1, 2] * val;
            matrix[2, 3] = matrix[2, 3] - matrix[1, 3] * val;
            wector[2] = wector[2] - wector[1] * val;
            val = matrix[3, 1] / matrix[1, 1];
            matrix[3, 1] = matrix[3, 1] - matrix[1, 1] * val;
            matrix[3, 2] = matrix[3, 2] - matrix[1, 2] * val;
            matrix[3, 3] = matrix[3, 3] - matrix[1, 3] * val;
            wector[3] = wector[3] - wector[1] * val;
 
            val = matrix[3, 2] / matrix[2, 2];
            matrix[3, 2] = matrix[3, 2] - matrix[2, 2] * val;
            matrix[3, 3] = matrix[3, 3] - matrix[2, 3] * val;
            wector[3] = wector[3] - wector[2] * val; */
            for (int i = 0; i < 4; i++)
                dataGridView3[0, i].Value = wector[i];
 
            ShowMatrix();
Миниатюры
Решение СЛАУ методом Гаусса. Ошибка  
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,115
Записей в блоге: 2
19.03.2020, 16:55
triatri3, по коду вроде всё правильно.
Может исходные данные другие?

Поставьте точку останова на перовой строке и пошагово проверьте.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.03.2020, 16:55
Помогаю со студенческими работами здесь

Програмное решение СЛАУ методом гаусса
ребята прошу очень помощи с кодом))) за ранее спасибочки)))))))

Решение СЛАУ(СЛАР) методом Гаусса
Можете написать программу, для решения СЛАУ методом Гаусса на c#! Вы ее писали, но с классами! реализуйте, пожалуйста ее без классов!...

Реализации решение СЛАУ методом Гаусса
Народ, есть рабочий код для решений СЛАУ методом Гаусса, но возникает ошибка что надо добавить статический метод Main, а я незнаю куда его...

Решение СЛАУ методом Гаусса, с определённой точностью
Доброго дня! Для заданной системы линейных уравнений (4 уравнения), найти решение методом Гаусса с точностью Е=0.0001. Можете подсказать,...

Решение СЛАУ методом Гаусса, с определённой точностью
Есть код, для решения СЛАУ методом Гаусса. Но не могу понять, как добавить точность (е=0.0001). Может кто-то подсказать? using System;...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Функция установки текстового статуса в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru