Клеточные автоматы и компьютерная экология
Для восприятия результатов моделирования важна раскраска клеток. В приведенном программном фрагменте использован алгоритм, переводящий значения концентраций загрязнителя в различные градации яркости цветов - от темно-красного до темно-зеленого. При этом высокие значения концентраций изображаются оттенками красного, который, по мере снижения Z, переходит в желтый, а затем постепенно затухает до темно-зеленого цвета.
Конечно, для по-настоящему точных моделей процессов рассеивания атмосферных загрязнителей следует обращаться к намного более прецизионным методикам, чем та, о которой шла речь. Но все же в данном случае вам нет необходимости решать головоломную систему умопомрачительных дифференциальных уравнений в частных производных на суперкомпьютере астрономической стоимости. При помощи этой несложной программки вы можете выполнить некое небольшое занимательное миниисследование по компьютерному моделированию экологической ситуации в вашем районе, городе или области в пределах временных рамок одной лабораторной работы.
DefByte I-K
DefInt L-N
Dim G As Byte
Dim a(1 To 9) As Single
Dim b(1 To 200, 1 To 200) As Single
Dim c(1 To 200, 1 To 200) As Single
Dim Color As Long
Dim Zmin As Single
Dim Zmax As Single
Dim R As Single
Dim R4 As Single
Dim Z14 As Single
Dim Z24 As Single
Dim Z34 As Single
Private Sub Form_Click()
a(1) = 0.05
a(2) = 0.05
a(3) = 0.1
a(4) = 0.1
a(5) = 0.1
a(6) = 0.1
a(7) = 0.1
a(8) = 0.15
a(9) = 0.25
z = 7
Zmin = 0
Zmax = 2
R = Zmax - Zmin
R4 = R / 4
Z14 = Zmin + R4
Z24 = Z14 + R4
Z34 = Z24 + R4
n = 50
G = 50
For f = 1 To G
b(35, 35) = z
b(45, 15) = z / 2
For i = 2 To n - 1
For j = 2 To n - 1
c(i, j) = 0
k = 0
For l = -1 To 1
For m = -1 To 1
k = k + 1
c(i, j) = c(i, j) + a(k) * b(i + l, j + m)
Next m
Next l
Next j
Next i
For i = 1 To n
For j = 1 To n
Color = SetColor(c(i, j))
Line (6 * (i - 1), 6 * (j - 1))-(6 * i - 1, 6 * j - 1), Color, BF
b(i, j) = c(i, j)
Next j
Next i
Next f
End Sub
Public Function SetColor(z As Single) As Long
Dim t As Byte
Select Case z
Case Is < Zmin
SetColor = RGB(0, 63, 0)
Case Zmin To Z14
t = 63 + 192 * (z - Zmin) / R4
SetColor = RGB(0, t, 0)
Case Z14 To Z24
t = 255 * (z - Z14) / R4
SetColor = RGB(t, 255, 0)
Case Z24 To Z34
t = 255 * (1 - (z - Z24) / R4)
SetColor = RGB(255, t, 0)
Case Z34 To Zmax
t = 63 + 192 * (1 - (z - Z34) / R4)
SetColor = RGB(t, 0, 0)
Case Is > Zmax
SetColor = RGB(63, 0, 0)
End Select
End Function
Немного больше о технологиях >>>
Наш дом — Вселенная
Вот дом, который построил Джек.
Англ. народная песенка. Пер. С.Маршака
Как точно написать свой адрес?
Сначало просто: квартира, дом, улица, город,
страна. Потом, чуть подумав: планета Земля, звезда Солнце, галактика Млечный
Путь. Далее (по мере укрупнения масштаба и фан ...
Обобщенный принцип наименьшего действия
Введены
континуально многозначные функции, позволяющие адекватно описывать физические
задачи. Показано их отличие от разрывных функций. Сформулирована и решена
вариационная задача для функционалов с разрывным интегрантом, зависящих от
линейных интегральных операторов, действующ ...