Система линейных уравнений. Решение методом Гаусса - VB
Формулировка задачи:
Доброго времени суток.
Сегодня столкнулся с проблемой. Лазил на форуме, находил решения, но все равно не верно получается... Вполне возможно упустил что.
В чем суть:
Имеется код, все считает отлично, но если в элемент (1,1) подставить значение 0, то все летит к чертям. Учусь в строительном, поэтому с программированием плоховато дружу.
Вот и не могу сообразить что не так... До элемента (4,3) считает все правильно, а дальше переплет в дебаге вижу...
Проверяю по данному варианту:
Надеюсь, изложил достаточно информации и надеюсь на Вашу помощь
Решение задачи: «Система линейных уравнений. Решение методом Гаусса»
textual
Листинг программы
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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д