Реализация задачи с помощью технологии VBA
Option explicit
Sub Population() 'Текст модуля "Популяция-99"
Dim v As String: v = "Рост популяции по модели "Мальтуса-Ферхюльста"
Dim х As String: Dim No As Integer:'Описание текущих переменных
x = "Введите значение": Dim No As String:у="электронной таблицы"
'Ввод начальной численности популяции
z = lnputBox(x + "начальной численности популяции No", v): No = Clnt(z)
' Ввод коэффициента относительного прироста популяции
Dim m As Single: z = lnputBox(x + "относительного коэффициента прироста m", v)
m = CSng(z): Dim КAs Integer: Dim T As Single: Dim i As Integer: Dim j As Integer
Ввод значения предельной численности популяции.
z = lnputBox(x + "предельной численности популяции К", v): К = Clnt(z)
' Ввод значения исследуемого временного интервала.
z = lnputBox(x + "временного интервала Т", v):
Т = CSng(z): i = NT1(No, m, К, T)
j = MsgВох(“Прирост популяции (NT-No)=" & CStr(i - No), 1, v)
Запрос на сохранение результатов расчета в заданной электронной таблице.
j = MsgВох(“Будете создавать архив для результатов расчета", 1, v)
If j = 1 Then
x = "Введите номер": Dim NT As Integer: Dim NR As Integer: Dim NC As Integer
z = lnputBox(x +y+ " для записи результата расчета", v, CStr(1)): NT = Clnt(z)
z = lnputBox(x + " строки"+у+" для записи результата расчета", v, CStr(1)):
NR = Clnt(z)' Изменение типа переменной от строкового к целому
z = lnputBox(x + "столбца"+у+ для записи результата расчета", v, CStr(1)):
NC = Clnt(z)' Конец блока для адресации результатов расчета,
z=InputВох("Введите наименование популяции", v, "Насекомое?") Worksheets(NT).Cells(NR, NC).Formula = "Вид популяции"
Worksheets(NT).Cells(NR, NC + 1).Formula = z
Worksheets(NT).Cells(NR + 1, NC).Formula = "Начальная численность популяции" Worksheets(NT).Cells(NR + 1, NC + 1).Value = No
Worksheets(NT).Cells(NR + 2, NC).Formula = "Прирост популяции" Worksheets(NT).Cells(NR + 2, NC + 1).Value = i - No: End If:
End Sub 'Population
' Функция для решения прямой задачи модели о росте популяции.
Function NT1(No As Integer, m As Single, К As Integer, T As Single) As Integer
NT1 =K/(1 + (K - No) / No / Exp(m * T))
End Function 'NT1
' Функции для решения обратных задач модели о росте популяции
Function NT2(No As Integer, N As integer, К As Integer, T As Single) As single NT2=Log((No*(K-N)/N/(K-No))/T
End Function 'NT2
Function NT3(No As Integer, m As Single, N As Integer, T As Single) As Integer
NT3=(1 -Exp(m*T))*N*No/(N-No*Exp(m*T))
End Function ‘NT3
Численное решение сложных систем дифференциальных уравнений на примерах моделей Хищник-Жертва -Пища.
Дата добавления: 2016-02-04; просмотров: 598;