|
Нехай в умовні моменти часу t1 = 1, t2 = 2, t3 = 3 та t4 = 4 маємо результати аеророзвідки лісової пожежі у виді чотирьох топографічних схем контурів вигорання, нанесених на план місцевості, на якому обрано декартову систему координат Oxy (рис.6.21).

Рис. 6.21 - Контури вигоряння, які одержано
в результаті аеророзвідки
Виберемо на цих контурах опорні точки, які будуть вершинами багатокутника. Одержані чотири багатокутники вважатимемо тими, що апроксимують контури вигоряння. Кожний з багатокутників опишемо за допомогою нормальних рівнянь у виді FK(x, y) = 0 (K = 1...4). Для цього занумеруємо опорні точки проти напряму годинникової стрілки (на рис. 6.21)початкові опорні точки виділено кружечками).
Кожен з відрізків, які проходять через суміжні вершини багатокутника з координатами (xK, yK) та (xK+1, yK+1), опишемо за допомогою нормального рівняння (4.1). Якщо через Ú та Ù позначити R-операції a Ú b = (a + b + | a - b| )/2; a Ù b = (a + b - | a - b| )/2, то згідно опису багатокутника маємо відповідні рівняння:
F1 (x, y) º f1 Ù ... Ù f5 Ù (f6 Ú f7 ) = 0;
F2 (x, y) º (f1 Ú f2 Ú f3) Ù f4 Ù ... Ù f10 = 0; (6.34)
F3 (x, y) º (f1 Ú f2 Ú f3) Ù f4 Ù ... Ù f12 = 0,
F4 (x, y) º (f1 Ú f2 Ú f3) Ù f4 Ù ... Ù f13 = 0.
Алгоритм та Maple-програма опису першого контура
restart: with(plots): N := 7:
o := (a,b) -> (a + b + abs(a - b))/2:
p := (a,b) -> (a + b - abs(a - b))/2:
lin := (x1,y1,x2,y2,x,y) ->
(x*y1-x*y2-x1*y+x1*y2+x2*y-x2*y1)/
sqrt((y1-y2)^2+(x2-x1)^2):
x[1] := 0: y[1] := 4: x[2] := -2: y[2] := 4:
x[3] := -3.5: y[3] := 2: x[4] := -1: y[4] := -2:
x[5] := 1: y[5] := -2: x[6] := 2: y[6] := 0.5:
x[7] := 0: y[7] := 1: x[8] := 0: y[8] := 4:
for i from 1 to N do
f[i] := evalf(lin(x[i],y[i],x[i+1],y[i+1],x,y),4);
end do;
b1 := p(p(f[1],f[2]),p(f[3],f[4])):
b2 := p(f[5],o(f[6],f[7])):
F := (x,y) -> p(b1,b2):
FF := (x,y) -> evalf(F(x,y),3): FF(x,y);
a := min(seq(x[i],i=1..N)):
b := max(seq(x[i],i=1..N)):
c := min(seq(y[i],i=1..N)):
d := max(seq(y[i],i=1..N)):
implicitplot(FF(x,y)=0, x=a-0.1..b+0.1, y=c-0.1..d+0.1,
numpoints = 3000,thickness=3,scaling=CONSTRAINED,
axes=BOXED, labels=[x,y], labelfont=[TIMES,BOLD,19],axesfont=[TIMES,ITALIC,19]); |
У результаті виконання програми буде визначено рівняння сторін:

і функцію для опису першого контура вигоряння та його зображення (рис.6.21)
(6.32)

Алгоритм та Maple-програма опису другого контура
restart: with(plots): N := 10:
o := (a,b) -> (a + b + abs(a - b))/2:
p := (a,b) -> (a + b - abs(a - b))/2:
lin := (x1,y1,x2,y2,x,y) ->
(x*y1-x*y2-x1*y+x1*y2+x2*y-x2*y1)/
sqrt((y1-y2)^2+(x2-x1)^2):
x[1] := 5: y[1] := 1: x[2] := 2: y[2] := 2:
x[3] := 1.5: y[3] := 4: x[4] := 3: y[4] := 6:
x[5] := 1: y[5] := 7: x[6] := -1: y[6] := 6:
x[7] := -5: y[7] := 2: x[8] := -4: y[8] := -2:
x[9] := -1: y[9] := -4: x[10] := 3: y[10] := -3:
x[11] := 5: y[11] := 1:
for i from 1 to N do
f[i] := evalf(lin(x[i],y[i],x[i+1],y[i+1],x,y),4);
end do;
b1 := o(f[1],o(f[2],f[3])):
b2 := p(p(f[4],f[5]),p(f[6],f[7])):
b3 := p(p(b1,f[8]),p(f[9],f[10])):
F := (x,y) -> p(b2,b3):
FF := (x,y) -> evalf(F(x,y),3): FF(x,y);
a := min(seq(x[i],i=1..N)):
b := max(seq(x[i],i=1..N)):
c := min(seq(y[i],i=1..N)):
d := max(seq(y[i],i=1..N)):
implicitplot(FF(x,y)=0, x=a-0.1..b+0.1, y=c-0.1..d+0.1,
numpoints = 3000,thickness=3,scaling=CONSTRAINED,
axes=BOXED, labels=[x,y], labelfont=[TIMES,BOLD,16],axesfont=[TIMES,ITALIC,19]); |
У результаті виконання програми буде визначено рівняння сторін:

функцію для опису другого контура вигоряння та його зображення (рис.6.22)


|

|
Рис. 6.21 - Перший контур |
Рис. 6.22 - Другий контур |
Алгоритм та Maple-програма опису третього контура
restart: with(plots): N := 12:
o := (a,b) -> (a + b + abs(a - b))/2:
p := (a,b) -> (a + b - abs(a - b))/2:
lin := (x1,y1,x2,y2,x,y) ->
(x*y1-x*y2-x1*y+x1*y2+x2*y-x2*y1)/
sqrt((y1-y2)^2+(x2-x1)^2):
x[1] := 7.5: y[1] := 2: x[2] := 3.5: y[2] := 4:
x[3] := 4.5: y[3] := 7: x[4] := 5.5: y[4] := 9:
x[5] := 2.5: y[5] := 10: x[6] := -3: y[6] := 8:
x[7] := -7: y[7] := 3: x[8] := -7: y[8] := -3:
x[9] := -5: y[9] := -6: x[10] := 1: y[10] := -7:
x[11] := 6: y[11] := -5: x[12] := 7.5: y[12] := -2:
x[13] := 7.5: y[13] := 2:
for i from 1 to N do
f[i] := evalf(lin(x[i], y[i], x[i+1], y[i+1],x,y),4);
end do;
b1 := o(f[1],o(f[2],f[3])):
b2 := p(p(f[4],f[5]),p(f[6],f[7])):
b3 := p(p(b1,f[8]),p(f[9],f[10])):
F := (x,y) -> p(p(b2,b3),p(f[11],f[12])):
FF := (x,y) -> evalf(F(x,y),3): FF(x,y);
a := min(seq(x[i],i=1..N)): b := max(seq(x[i],i=1..N)):
c := min(seq(y[i],i=1..N)): d := max(seq(y[i],i=1..N)):
implicitplot(FF(x,y)=0, x=a-0.1..b+0.1, y=c-0.1..d+0.1,
numpoints = 3000,thickness=3,scaling=CONSTRAINED,
axes=BOXED,labels=[x,y], labelfont=[TIMES,BOLD,16],axesfont=[TIMES,ITALIC,19]);
|
У результаті виконання програми буде визначено рівняння сторін:

і функцію для опису третього контура вигоряння та його зображення (рис.6.23):
(6.37)
Алгоритм та Maple-програма опису четвертого контура
restart: with(plots): N := 13:
o := (a,b) -> (a + b + abs(a - b))/2:
p := (a,b) -> (a + b - abs(a - b))/2:
lin := (x1,y1,x2,y2,x,y) ->
(x*y1-x*y2-x1*y+x1*y2+x2*y-x2*y1)/
sqrt((y1-y2)^2+(x2-x1)^2):
x[1] := 11: y[1] := 3: x[2] := 6: y[2] := 7:
x[3] := 8.5: y[3] := 10: x[4] := 7: y[4] := 12:
x[5] := -2: y[5] := 11: x[6] := -7: y[6] := 7:
x[7] := -9: y[7] := 2: x[8] := -8.5: y[8] := -5:
x[9] := -7: y[9] := -7: x[10] := -1: y[10] := -9:
x[11] := 5: y[11] := -8: x[12] := 8: y[12] := -5:
|
x[13] := 11.5:y[13] := -1: x[14] := 11: y[14] := 3:
for i from 1 to N do
f[i] := evalf(lin(x[i], y[i], x[i+1], y[i+1],x,y),4);
end do;
b1 := o(f[1],f[2]): b2 := p(p(f[3],f[4]),p(f[5],f[6])):
b3 := p(p(f[7],f[8]),p(f[9],f[10])):
b4 := p(p(f[11],f[12]),p(f[13],b1)):
F := (x,y) -> p(p(b2,b3),b4):
FF := (x,y) -> evalf(F(x,y),3): FF(x,y);
a := min(seq(x[i],i=1..N)): b := max(seq(x[i],i=1..N)):
c := min(seq(y[i],i=1..N)): d := max(seq(y[i],i=1..N)):
implicitplot(FF(x,y)=0, x=a-0.1..b+0.1, y=c-0.1..d+0.1,
numpoints = 3000,thickness=3,scaling=CONSTRAINED,
axes=BOXED,labels=[x,y], labelfont=[TIMES,BOLD,16],axesfont=[TIMES,ITALIC,19]); |
У результаті виконання програми буде визначено рівняння сторін:

та функцію для опису четвертого контура та його зображення (рис.6.24)

|

|
Рис. 6.23 - Третій контур |
Рис. 6.24 - Четвертий контур |
Програма передбачення контурів вигоряння у залежності від параметра екстраполяції k , яку складено на основі формули іміджевої векторної екстраполяції, має вид:
restart: with(plots): k := 2:
f1 := Формула (4.5): f2 := Формула (4.6):
f3 := Формула (4.7): f4 := Формула (4.8):
f5 := f4 + ((f2 - f1)*1^k + (f3 - f2)*2^k +
(f4 - f3)*3^k)/(1^k+2^k+3^k):
implicitplot({f1,f2,f3,f4,f5},x=-12..16,y=-12..16,
axes=BOXED,thickness=2, grid=[100,100],
scaling=CONSTRAINED,axes=BOXED, labels=[x,y], labelfont=[TIMES,BOLD,16],axesfont=[TIMES,ITALIC,19]); |
У результаті виконання програми одержуємо прогноз “поведінки” кромки вигоряння на умовний момент часу t5 = 5, в залежності від параметра екстраполяції k. При цьому значенню k = - 2 відповідає початкова фаза пожежі (рис. 6.25), k = 0 - відповідає її середня фаза (рис. 6.26), а значенню k = 2 - прикінцева фаза лісової пожежі (рис. 6.27).
Таким чином, за допомогою іміджевої екстраполяції можна спрогнозувати у часі характер поведінки кромок вигоряння. При цьому важливою є наявність регулюючого параметра екстраполяції k.
Отже, в роботі приведене нове розв’язання задачі, що виявляється в розробці методу опису розвитку в часі топографічної схеми сім’ї контурів вигоряння рослинного матеріалу за певною кількістю вузлових зображень і в розробці на цій основі алгоритмів побудови на екрані комп’ютера зображень кромок вигоряння трьох типів: проміжних, тих, що передують вузловим зображенням, та прогнозованих кромок в наперед визначені моменти часу в залежності від геометричної форми вузлових зображень.

Рис. 6.25 - Екстраполяція при k = -2 (початкова фаза пожежі)

Рис. 6.26 - Екстраполяція при k = 0 (середня фаза пожежі)

Рис. 6.27 - Екстраполяція при k = 2 (прикінцева фаза пожежі)
|