IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Помогите наладить программу на VBA
vfrc
сообщение 6.11.2009, 21:41
Сообщение #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
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Евгений М.
сообщение 7.11.2009, 3:56
Сообщение #2


Студент
**

Группа: Продвинутые
Сообщений: 199
Регистрация: 6.11.2009
Город: Уфа
Вы: студент



Нужно еще добавить проверку а11, а22, а33. Если один из один из них = 0, то уравнение таким методом не решается (иначе операции после metka выполняют деление на ноль).
И еще. Эпсилон должен быть строго больше нуля (иначе получится бесконечный цикл т.к. условие "Abs(x1 - x1k) < eps And Abs(x2 - x2k) < eps And Abs(x3 - x3k) < eps" никогда не будет выполняться). Добавьте еще такую проверку.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия Сейчас: 1.5.2024, 20:02

Книжки в помощь: "Сборник заданий по высшей математике" Кузнецов Л.А., "Сборник заданий по высшей математике" Чудесенко В.Ф., "Индивидуальные задания по высшей математике" Рябушко А.П., и другие.




Зеркало сайта Решебник.Ру - reshebnik.org.ru