Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/19: Рейтинг темы: голосов - 19, средняя оценка - 4.53
0 / 0 / 1
Регистрация: 24.05.2014
Сообщений: 4

Система линейных уравнений. Решение методом Гаусса

24.05.2014, 10:11. Показов 4184. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
Сегодня столкнулся с проблемой. Лазил на форуме, находил решения, но все равно не верно получается... Вполне возможно упустил что.

В чем суть:
Имеется код, все считает отлично, но если в элемент (1,1) подставить значение 0, то все летит к чертям. Учусь в строительном, поэтому с программированием плоховато дружу.

Visual Basic
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
Dim a(5, 5), b(5) As Double
        Dim x(5), f, k As Double
        Label1.Text = " "
        Label2.Text = " "
        Label3.Text = " "
'Вывод матрицы на лэйбл
        For i = 1 To 5
            For j = 1 To 5
                Label1.Text = Label1.Text & a(i, j) & " "
            Next
            Label1.Text = Label1.Text & vbCrLf
        Next
'Вычисление элементов
        For u = 1 To 5
            For i = u + 1 To 5
                If a(i, u) = 0 Then
                    i = i
                Else
                    k = -a(u, u) / a(i, u)
                    If k = 0 Then
                        For j = u To 5
                            a(i, j) = a(i, j) * 0 + a(u, j)
                        Next j
                    Else
                        For j = u To 5
                            a(i, j) = a(i, j) * k + a(u, j)
                        Next j
                        b(i) = b(i) * k + b(u)
                    End If
                End If
            Next i
        Next u
'Обратный ход, нахождение Х
        For i = 5 To 1 Step -1
            f = 0
            For j = i + 1 To 5
                f = f + a(i, j) * x(j)
            Next
            x(i) = (b(i) - f) / a(i, i)
        Next
'Вывод результата
        For i = 1 To 5
            For j = 1 To 5
                Label2.Text = Label2.Text & a(i, j) & " "
            Next
            Label2.Text = Label2.Text & vbCrLf
        Next
        For i = 1 To 5
            label3.text = label3.text & x(i) & vbCrLf
        Next
Вот и не могу сообразить что не так... До элемента (4,3) считает все правильно, а дальше переплет в дебаге вижу...

Проверяю по данному варианту:




Надеюсь, изложил достаточно информации и надеюсь на Вашу помощь
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.05.2014, 10:11
Ответы с готовыми решениями:

Система линейных уравнений. Решение методом Гаусса
Доброго времени суток, нужна не большая помощь Мне нужно сделать 4 линейных уравнения, нашел код, но он на 5 линейных уравнений, меняю...

Решение системы линейных уравнений методом простых итераций
Доброго времени суток, дорогие друзья. У меня задание, написанное в заголовке. Код ругается на строку z(v,o)=k(i,i) Он выдает сообщение...

Решение системы уравнений методом Гаусса и ошибка переполнения (Overflow)
Нужно было составить прогу решения системы уравнений методом Гаусса, выдаёт эту ошибку в выделенной сточке: Private Sub...

7
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
24.05.2014, 10:25
«Решение систем линейных уравнений. Метод Гаусса»
0
0 / 0 / 1
Регистрация: 24.05.2014
Сообщений: 4
24.05.2014, 10:33  [ТС]
FelixMacintosh, благодарен! Попробую разобраться, на такое не натыкался.
0
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
24.05.2014, 10:52
Цитата Сообщение от Krajben Посмотреть сообщение
Надеюсь, изложил достаточно информации и надеюсь на Вашу помощь
во всяком случае, там более подробнее, и даже если не разберёшся,
то найдуться охотники разобрать это...

Добавлено через 2 минуты
я бы и сдесь выложил, переписав в своём хакерском стиле..
только меня бесит движок этого сайта, и здешний редактор формул, вобщем беда...
0
0 / 0 / 1
Регистрация: 24.05.2014
Сообщений: 4
24.05.2014, 11:02  [ТС]
FelixMacintosh, в любом случае большое спасибо! Я посмотрел - есть непонятные моменты, разберусь, это не сложно

Добавлено через 3 минуты
FelixMacintosh, мне вообще дали наводку на то, чтобы просветить коэф. k на равенство 0... Видимо, ошибся где-то и не могу догнать.
0
0 / 0 / 1
Регистрация: 24.05.2014
Сообщений: 4
04.06.2014, 18:02  [ТС]
Лучший ответ Сообщение было отмечено The trick как решение

Решение

UPD
Для тех, кто любит готовенькое...
Добил этот код до конца, прошу использовать грамотно. Выкладываю полностью программу.

Visual Basic
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
 Dim a(5, 5), b(10) As Double
 
        Dim x(5), f, k, swap As Double
 
        a(1, 1) = Val(TextBox1.Text)
        a(2, 1) = Val(TextBox2.Text)
        a(3, 1) = Val(TextBox3.Text)
        a(4, 1) = Val(TextBox4.Text)
        a(5, 1) = Val(TextBox5.Text)
        a(1, 2) = Val(TextBox10.Text)
        a(2, 2) = Val(TextBox9.Text)
        a(3, 2) = Val(TextBox8.Text)
        a(4, 2) = Val(TextBox7.Text)
        a(5, 2) = Val(TextBox6.Text)
        a(1, 3) = Val(TextBox15.Text)
        a(2, 3) = Val(TextBox14.Text)
        a(3, 3) = Val(TextBox13.Text)
        a(4, 3) = Val(TextBox12.Text)
        a(5, 3) = Val(TextBox11.Text)
        a(1, 4) = Val(TextBox20.Text)
        a(2, 4) = Val(TextBox19.Text)
        a(3, 4) = Val(TextBox18.Text)
        a(4, 4) = Val(TextBox17.Text)
        a(5, 4) = Val(TextBox16.Text)
        a(1, 5) = Val(TextBox25.Text)
        a(2, 5) = Val(TextBox24.Text)
        a(3, 5) = Val(TextBox23.Text)
        a(4, 5) = Val(TextBox22.Text)
        a(5, 5) = Val(TextBox21.Text)
        b(1) = Val(TextBox30.Text)
        b(2) = Val(TextBox29.Text)
        b(3) = Val(TextBox28.Text)
        b(4) = Val(TextBox27.Text)
        b(5) = Val(TextBox26.Text)
 
        Label1.Text = " "
        Label2.Text = " "
        Label3.Text = " "
 
        For i = 1 To 5
            For j = 1 To 5
                Label1.Text = Label1.Text & a(i, j) & " "
            Next
            Label1.Text = Label1.Text & vbCrLf
        Next
 
 
        For u = 1 To 5
            For i = u + 1 To 5
                If a(u, u) = 0 Then 'Если элемент главной диагонали равен 0, то нужно поменять строки местами
                    For j = u To 5
                        swap = a(i, j)
                        a(i, j) = a(u, j)
                        a(u, j) = swap
                    Next
                    swap = b(i)
                    b(i) = b(u)
                    b(u) = swap
                    If a(i, u) = 0 Then
                        i = i
                    Else
                        k = -a(u, u) / a(i, u)
                        For j = u To 5
                            a(i, j) = a(i, j) * k + a(u, j)
                        Next j
                        b(i) = b(i) * k + b(u)
                    End If
                Else
                    If a(i, u) = 0 Then
                        i = i
                    Else
                        k = -a(u, u) / a(i, u)
                        For j = u To 5
                            a(i, j) = a(i, j) * k + a(u, j)
                        Next j
                        b(i) = b(i) * k + b(u)
                    End If
                End If
            Next i
        Next u
        'Обратный ход, нахождение Х
        For i = 5 To 1 Step -1
            f = 0
            For j = i + 1 To 5
                f = f + a(i, j) * x(j)
            Next
            x(i) = (b(i) - f) / a(i, i)
        Next
 
        For i = 1 To 5
            For j = 1 To 5
                Label2.Text = Label2.Text & a(i, j) & " "
            Next
            Label2.Text = Label2.Text & vbCrLf
        Next
 
        For i = 1 To 5
            Label3.Text = Label3.Text & x(i) & vbCrLf
        Next
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
04.06.2014, 21:27
А если матрица будет 100х100 Вы 10000 строк напишите?

А(99,99)=val(textbox10000.text)
0
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
05.06.2014, 09:45
10000 строк писать вручную !!!

Добавлено через 6 минут
Visual Basic
1
2
3
        For f = 1 To 5
            a(f, 1) = CallByName(Me, "TextBox" & f, VbGet)
        Next
Добавлено через 7 минут
Visual Basic
1
2
3
        For f = 1 To 5
            a(f, 1) = CallByName(Me, "TextBox" & f, VbGet).Text
        Next
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.06.2014, 09:45
Помогаю со студенческими работами здесь

Решение линейных уравнений
Нужно сделать лабораторную а знаний не хватает,помогите правильно записать в программе уравнение я его записываю так,но мне программа...

Решение линейных уравнений с средствами Visual Basic
Помогите пожалуйста, сделать на Visual Basic решение линейных уравнений (на графике определить приближенное решение системы уравнений и...

Решение системы линейных уравнений методом Гаусса и Жордана-Гаусса
Помогите пожалуйста начала работать сначала работать с методом Гаусса, но в Unit2 Delphi ругается на type arys=array of real; не могу...

Система линейных уравнений методом Гаусса
Помогите пожалуйста решить систему уравнений... Заранее благодарен. 2y+7z=17 2x-y-3z=3 3x+4y-5z=8

Система линейных уравнений методом Гаусса
Помогите пожалуйста решить систему линейных уравнений методом Гаусса sin(x+y)-1,5x =0,2 (x^2)+(y^2)=1


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru