МЕТОДИ ГЕОМЕТРИЧНОГО МОДЕЛЮВАННЯ

6.4 Приклади передбачення кромок вигоряння

Нехай в умовні моменти часу 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 (прикінцева фаза пожежі)

© 2004 Академя гражданской защиты Украины