Предположим, что на территории
большого промышленного города
действует несколько
наблюдательных постов, оснащенных
приборами для измерения
какого-либо количественного
параметра, например, температуры
или концентрации углекислого газа.
Данные со всех постов можно нанести
на карту в виде отдельных точек. Но
такое представление будет крайне
мало информативным. Для целей
экологического мониторинга
интерес представляет задача,
позволяющая каким-то образом, по
имеющимся отдельным точкам с
известными значениями того или
иного параметра, составить
представление об общем его
распределении на всей территории
города. Процессы тепло- и
массообмена родственны в общем
смысле постепенному взаимному
усреднению параметров
перемешивающейся воздушной среды.
Тогда значение температуры в точке,
расположенной между постами, можно
примерно рассчитать как среднее
арифметическое. Но при этом оно
должно быть более схожим со
значениями, измеренными на
ближайших постах, и в меньшей
степени подвергаться влиянию
удаленных опорных точек. Числовой
характеристикой, ведущей себя
подобным образом, является так
называемое взвешенное среднее,
вычисляемое по формуле: . Каждое из
значений 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-того поста. На приведенном тоновом рисунке изображена одна из средневзвешенных поверхностей, полученная с помощью данного программного кода.
Метод средневзвешенной интерполяции мне как-то довелось использовать для визуализации данных о загрязненности снежного покрова Минска. Концентрации различных загрязнителей были измерены в пробах снега, взятых примерно в семидесяти точках в различных районах города. Далее по этим данным необходимо было построить общую непрерывную визуальную картину загрязненности тем или иным видом загрязнителей. Я использовал взвешенное среднее, а группа исследователей параллельно обрабатывала эти данные иными методами. Результаты получились сопоставимы и визуально схожи.
Сейчас, в эпоху глобального потепления и погодных аномалий, было бы интересно применить этот метод в иных более крупных масштабах, чем отдельно взятый город. Можно, например, на занятиях по информатике построить температурную карту республики в различные сезоны и годы, а затем произвести ретроспективный анализ ее изменений. Можно при помощи интернета узнать погоду в опорных точках по всему миру и на очередной лабораторной работе построить глобальную карту распределения тепла и холода на всей нашей планете.
А. КОЛЕСНИКОВ,
andr61@mail.ru

Горячие темы