![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
vfrc |
![]()
Сообщение
#1
|
Школьник ![]() Группа: Продвинутые Сообщений: 14 Регистрация: 1.7.2008 Город: Елец ![]() |
Помогите, пожалуйста, исправить программу для решения системы линейных уравнений методом Зейделя. (Если она вообще корректно составлена).
Sub metod_Zeydelya() Dim a11 As Double, a21 As Double, a31 As Double Dim a12 As Double, a22 As Double, a32 As Double Dim a13 As Double, a23 As Double, a33 As Double Dim b1 As Double, b2 As Double, b3 As Double Dim x1 As Double, x2 As Double, x3 As Double Dim x1k As Double, x2k As Double, x3k As Double Dim eps As Double, n As Integer Sheets("Лист1").Select Cells(1, 6) = "Ввод исходных данных" Cells(10, 6) = "Вывод результатов" Cells(3, 1) = "a11 =" Cells(4, 1) = "a21 =" Cells(5, 1) = "a31 =" Cells(3, 4) = "a12 =" Cells(4, 4) = "a22 =" Cells(5, 4) = "a32 =" Cells(3, 7) = "a13 =" Cells(4, 7) = "a23 =" Cells(5, 7) = "a33 =" Cells(3, 10) = "b1 =" Cells(4, 10) = "b2 =" Cells(5, 10) = "b3 =" Cells(12, 1) = "x1 =" Cells(12, 4) = "x2 =" Cells(12, 7) = "x3 =" Cells(12, 10) = "n =" Cells(8, 5) = "eps=" a11 = Cells(3, 2) a21 = Cells(4, 2) a31 = Cells(5, 2) a12 = Cells(3, 5) a22 = Cells(4, 5) a32 = Cells(5, 5) a13 = Cells(3, 8) a23 = Cells(4, 8) a33 = Cells(5, 8) b1 = Cells(3, 11) b2 = Cells(4, 11) b3 = Cells(5, 11) eps = Cells(8, 6) n = 1 x1k = 0 x2k = 0 x3k = 0 metka: x1 = 1 / a11 * (b1 - a12 * x2k - a13 * x3k) x2 = 1 / a22 * (b2 - a21 * x1 - a23 * x3k) x3 = 1 / a33 * (b3 - a31 * x1 - a32 * x2) If Abs(x1 - x1k) < eps And Abs(x2 - x2k) < eps And Abs(x3 - x3k) < eps Then Cells(12, 2) = x1 Cells(12, 5) = x2 Cells(12, 8) = x3 Cells(12, 11) = n Else x1k = x1 x2k = x2 x3k = x3 n = n + 1 GoTo metka End If End Sub |
![]() ![]() |
Евгений М. |
![]()
Сообщение
#2
|
Студент ![]() ![]() Группа: Продвинутые Сообщений: 199 Регистрация: 6.11.2009 Город: Уфа Вы: студент ![]() |
Нужно еще добавить проверку а11, а22, а33. Если один из один из них = 0, то уравнение таким методом не решается (иначе операции после metka выполняют деление на ноль).
И еще. Эпсилон должен быть строго больше нуля (иначе получится бесконечный цикл т.к. условие "Abs(x1 - x1k) < eps And Abs(x2 - x2k) < eps And Abs(x3 - x3k) < eps" никогда не будет выполняться). Добавьте еще такую проверку. |
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 27.5.2025, 19:52 |
Зеркало сайта Решебник.Ру - reshebnik.org.ru