Предположим, что на территории
большого промышленного города
действует несколько
наблюдательных постов, оснащенных
приборами для измерения
какого-либо количественного
параметра, например, температуры
или концентрации углекислого газа.
Данные со всех постов можно нанести
на карту в виде отдельных точек. Но
такое представление будет крайне
мало информативным. Для целей
экологического мониторинга
интерес представляет задача,
позволяющая каким-то образом, по
имеющимся отдельным точкам с
известными значениями того или
иного параметра, составить
представление об общем его
распределении на всей территории
города. Процессы тепло- и
массообмена родственны в общем
смысле постепенному взаимному
усреднению параметров
перемешивающейся воздушной среды.
Тогда значение температуры в точке,
расположенной между постами, можно
примерно рассчитать как среднее
арифметическое. Но при этом оно
должно быть более схожим со
значениями, измеренными на
ближайших постах, и в меньшей
степени подвергаться влиянию
удаленных опорных точек. Числовой
характеристикой, ведущей себя
подобным образом, является так
называемое взвешенное среднее,
вычисляемое по формуле:
. Каждое из
значений xk умножается на
какой-то свой коэффициент ak,
который отражает его "вес",
долю участия или вклад в
формирование общего среднего. В
качестве весовых коэффициентов в
нашей экологической задаче будем
использовать отрицательные
степени расстояний от текущей
точки до наблюдательных постов. На
врезке приведен фрагмент
программного кода, реализующего
эти вычисления.
Private Sub Form_Click()
n = 10
m = 100
Randomize Timer
zmin = 100
zmax = 0
For k = 1 To n
x(k) = 100 * Rnd
y(k) = 100 * Rnd
z(k) = 100 * Rnd
If zmax < z(k) Then zmax = z(k)
If zmin > z(k) Then zmin = z(k)
Next k
For i = 1 To m
For j = 1 To m
sr = 0: srz = 0
For k = 1 To n
r(k) = (x(k) - i) ^ 2 + (y(k) - j) ^ 2
a = 1 / r(k)
sr = sr + a
srz = srz + a * z(k)
Next k
sz = srz / sr
c = ((sz - zmin) / (zmax - zmin)) * 255
Line (3 * (i - 1), 3 * (j - 1))-
(3 * i - 1, 3 * j - 1), RGB(c, c, c), BF
Next j
Next i
End Sub
В примере первоначально куб размером 100x100x100 заполняется десятью точками со случайными координатами x, y и z. Далее z рассматривается как зависимая переменная, и для нее строится "средневзвешенная" поверхность. Для вычисления весовых коэффициентов в программе используется выражение ak=1/rk, где rk - квадрат расстояния от данной текущей точки до k-того поста. На приведенном тоновом рисунке изображена одна из средневзвешенных поверхностей, полученная с помощью данного программного кода.
Метод средневзвешенной интерполяции мне как-то довелось использовать для визуализации данных о загрязненности снежного покрова Минска. Концентрации различных загрязнителей были измерены в пробах снега, взятых примерно в семидесяти точках в различных районах города. Далее по этим данным необходимо было построить общую непрерывную визуальную картину загрязненности тем или иным видом загрязнителей. Я использовал взвешенное среднее, а группа исследователей параллельно обрабатывала эти данные иными методами. Результаты получились сопоставимы и визуально схожи.

Сейчас, в эпоху глобального потепления и погодных аномалий, было бы интересно применить этот метод в иных более крупных масштабах, чем отдельно взятый город. Можно, например, на занятиях по информатике построить температурную карту республики в различные сезоны и годы, а затем произвести ретроспективный анализ ее изменений. Можно при помощи интернета узнать погоду в опорных точках по всему миру и на очередной лабораторной работе построить глобальную карту распределения тепла и холода на всей нашей планете.
А. КОЛЕСНИКОВ,
[email protected]





