Фото - Луганский центр стоматологической имплантации

Клітинні автомати і комп'ютерна екологія

Третій Ангол, і впала з неба велика зірка, палаючи, як смолоскип, і впала на третину річок та на водні джерела. А ймення зорі тій полин; І стала третина води, як полин, і багато людей померли від вод, тому що вони стали гіркі.

Одкровення Святого Іоанна Богослова, гл. 8, ст. 10,11

Хтось влучно зазначив, що розмова про погоду стає цікавим лише при перших ознаках кінця світу. Сьогодні вчені і політики обговорюють проблеми погоди на глобальних форумах, та й прості люди починають потихеньку цікавитися погодою, причому не тільки на найближчі вихідні, а й взагалі ... Атмосфера - величезна, складна, розподілена, динамічна система. Передбачати її поведінку надзвичайно важко, часто просто неможливо. Дивлячись на висять в небесній блакиті хитромудрі хмарні структури, ми не завжди замислюємося про те, наскільки масштабні і драматичні процеси відбуваються там, у височині. Зовсім інше враження залишає прискорена зйомка хмарного неба. Картинка еволюції рояться хмарних мас мимоволі наводить на роздуми про природу часу і сенс земного існування. Схожі, але більш тривожні думки навівають кадри, що зображують розповзання смогу над великими мегаполісами або, гірше того, поступової дифузії ядерного гриба ... Всі ми пам'ятаємо старі чорно-білі навчальні фільми, що розповідають про формування зон зараження після атомного вибуху. Вони класифікуються за ступенем небезпеки. Поблизу епіцентру розташовується "мертва" зона суцільного інтенсивного зараження. Далі, в залежності від напрямку вітру, зони розподіляються у вигляді вкладених один в одного еліпсоїдів розсіювання. В принципі, схожою буде картина поширення і будь-якого іншого забруднювача від точкового джерела, наприклад, від димить труби, реактора, що вибухнув або апокаліптичної зірки з біблійного пророцтва. Процес поширення забруднювача в атмосфері - це процес розсіювання і змішування його частинок з частинками повітря. На хід цього процесу істотно впливають власні руху повітряних мас, тобто вітру. В одній і тій же місцевості вони дмуть в різних напрямках з певною частотою. Дані про частотах вітрів наносяться на особливу діаграму, що має романтичну назву, оспіване у безлічі бардівських пісень, - троянда вітрів. Частинки забруднювача потрапляють від початкового джерела в сусідні області. Потім з областей, що безпосередньо прилягають до джерела, поширюються вже в їх околицях, і так далі. Сам характер цього процесу вказує на те, що для моделювання розсіювання забруднювача в атмосфері можна використовувати підхід, заснований на ідеології клітинних автоматів. В цьому випадку досліджувану ділянку представляється у вигляді клітинного поля. На поле позначаються клітини, в яких знаходяться епіцентри поширення забруднення або зараження. Потім концентрацію забруднювача в кожній клітині поля можна, наприклад, наближено оцінювати за формулою:

(1)

де ak - це масив з дев'яти елементів, що містить ймовірності вітрів відповідних восьми напрямків і ймовірність штилю. Само собою зрозуміло, що дев'ять ймовірностей вітрів різних напрямків, включаючи ймовірність штилю, повинні в сумі давати одиницю. C * k - це вектор з дев'яти елементів, що містить концентрації забруднювача в сусідніх з даної восьми клітинах і в ній самій. Крок за кроком для всіх клітин поля обчислюється сума творів концентрацій в сусідніх восьми осередках на відповідні ймовірності вітрів. До суми додається ще й твір ймовірності штилю на концентрацію забруднювача в самій поточної клітинці. Для нормальної роботи програми необхідно мати дві копії клітинного поля. В одній з копій слід зберігати попереднє покоління, а в іншій - подальше. При зміні поколінь вміст наступного покоління стає попереднім. З розрахунків виключаються крайні ряди осередків. Це робиться для того, щоб уникнути "прикордонних" проблем при застосуванні формули (1). Повторюючи розрахунки багаторазово, ми можемо спостерігати динаміку формування еліпсоїдів розсіювання в часі. При разовому "уприскуванні" забруднювача в будь-яку осередок він швидко розсмоктується по клітинному масиву. Для отримання більш виразною картини розсіювання в пропонованому на врізки фрагменті програмного коду "впорскування" забруднювача у відповідні комірки здійснюється на початку розрахунку кожного чергового покоління. Значення концентрацій викидів вводяться в комірки в деяких довільних одиницях.

Для сприйняття результатів моделювання важлива розфарбування клітин. У наведеному програмному фрагменті використаний алгоритм, що переводить значення концентрацій забруднювача в різні градації яскравості кольорів - від темно-червоного до темно-зеленого. При цьому високі значення концентрацій зображуються відтінками червоного, який, у міру зниження Z, переходить в жовтий, а потім поступово згасає до темно-зеленого кольору (докладніше про колірних гамах і візуалізації графіків см. "КВ" № 2 , 2000 г.).

Звичайно, для по-справжньому точних моделей процесів розсіювання атмосферних забруднювачів слід звертатися до набагато більш прецизійним методиками, ніж та, про яку йшла мова. Але все ж в даному випадку вам немає необхідності вирішувати головоломну систему запаморочливих диференціальних рівнянь в приватних похідних на суперкомп'ютері астрономічної вартості. За допомогою цієї нескладної програми ви можете виконати якесь невеличке кумедне мініісследованіе з комп'ютерного моделювання екологічної ситуації у вашому районі, місті або області в межах часових рамок однієї лабораторної роботи.

Колесник, [email protected]

DefByte IK DefInt LN 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) = zb (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 = RG B (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

  • Зуботехническая лаборатория

    Детали
  • Лечение, отбеливание и удаление зубов

    Детали
  • Исправление прикуса. Детская стоматология

    Детали