End Function 'Ochibka

'Численное решение уравнений модели "Хищник-Жертва-Пища"

Sub HGP2001()

Dim RM(1 To 17) As Single 'рабочий массив

Dim E As Single: Dim T As Single: Dim NT As Integer: Dim s As String

Dim i As Integer: Dim W As String: Dim p As String: Dim q As Single

Dim j As Integer: Dim m As Integer: Dim n As Integer: Dim v As Integer

Dim NS As Integer: Dim I As Integer: Dim X As Single: Dim Y As Single

Dim Z As Single: I = 0: W = "Модель <Хищник-Жертва-Пища>"

p = "Задайте интервал времени, в котором моделируете процесс"

s = lnputBox(p, W): Т = CSng(s)

р = "Задайте точность решения системы уравнений": s = lnputBox(p, W)

Е = CSng(s): р = "Задайте номер таблицы для результатов прогноза"

s = lnputBox(p, W): NT = Clnt(s)

р = "Выводить данные для графической иллюстрации процесса"

j = MsgBox(p, 4, W)

s = InputВох("Предлагаю вывести на экран каждую n-ю точку", W, 10)

n = Clnt(s)

s = InputВох("Число повторных решений с новым шагом", W, 10)

NS = Clnt(s) : q = 0 : m = 0

For i = 1 To 8:RM(i) = Worksheets(NT).Cells(6 + i, 2).Value: Next i

For i = 1 To 3:RM(i + 8) = Worksheets(NT).Cells(3, i + 1).Value

RM(i +11) = RM(i + 8): RM(i + 14) = 0: Next i

Do While Ochibka(RM) > E

Do While q < T + RM(8)

lfj = 6 Then

v = m / n

If m = v * n Then

For i = 1 To 3

Worksheets(NT).Cells(16 + v, 1 + i).Value = RM(8 + i): Next i

Worksheets(NT).Cells(16 + v, 1).Value = q:End lf:End If 'j=0 'v=m

X = RM(9) + RM(8) * (HGP1(RM(1), RM(2), RM(3), RM(9), RM(10), RM(11)))

Y = RM(10) + RM(8) * (HGP2(RM(6), RM(7), RM(9), RM(10)))

Z= RM(11) + RM(8) * (HGP3(RM(4), RM(5), RM(9), RM(11)))

RM(9) = X: RM(10) = Y: RM(11) = Z:m = m + 1:q = q + RM(8)

If RM(9) < 0 Then

p = "Проверьте правильность задания параметров"

s = lnputBox(p, "Отрицательное число жертв")

GoTo Metka:

End If If RM(10)<0Then

s = lnputBox(p, "Отрицательное количество пищи")

GoTo Metka:End If

If RM(11) < 0 Then

s = lnputBox(p, "Отрицательное количество хищников")

GoTo Metka:End If:Loop 'q<T

For i = 1 To 3:RM(i + 14) = RM(i + 11):RM(i + 11) = RM(i + 8)

RM(i + 8) = Worksheets(NT).Cells(3, 1 + i).Value:Next l:RM(8) = RM(8) / 2

n = n * 2 ‘Количество точек оставляем прежним

р = "Предлагаю вывести на экран каждую n-ю точку"

s = lnputBox(p, W, CStr(n)):n = Clnt(s):l = 1 + 1

If I > NS Then

GoTo Metka:End If

Loop' Ochibka>E

Ifj = 7 Then

For i = 1 To 3:Worksheets(NT).Cells(16, 1 + i).Value = RM(11 + i):Next l:End If

Worksheets(NT).Cells(16,1).Value = q

Metka:

s = " Точность e=" + CStr(E) + ";шаг h=" + CStr(RM(8))

s = s + ";число решений L=" + CStr(l):Worksheets(NT).Cells(14, 3),Formula = s

End Sub 'HGP2001

Численное решение системы N нелинейных дифференциальных уравнений первого порядка на примере

модели динамики мирового рынка энергоресурсов( Marchetti)

Математическое описание модели :dNi/dt=Ki*Ni*Bi*(Aij*Ni*Nj)

(Ni- объем i-ro вида энергоресурса; Ki.Bi, Aij- эмпирические константы)

 








Дата добавления: 2016-02-04; просмотров: 575;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.006 сек.