Файл: Могилев А.В. Информатика.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 31.03.2021

Просмотров: 6572

Скачиваний: 50

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

 

666 

 

Рис.

 7.59. 

wl

 = 10, 

w2 =

 10 (кризис наступил) 

 

Программа 153.

 Имитационное моделирование очереди 

Program Bank; 

Uses Graph, Crt; 
Var Gm, Gd, P, X, Qq, I, T, V : Integer; St : String[1O]; 
Begin  

Qq := 0; P := 6; V := 2; Randomize; DetectGraph(Gd, Gm); 
InitGraph(Gd, Gm, ' '); 
SetColor(2); RectAngle(300, 100, 500, 300); Т :- 0; 
Repeat  
Т := Т + 1; Str(T, St); SetTextStyle(0, 0, 1) ; 

SetColor(4); OutTextXY(600, 50, St); X := Random(ll) ; 
If X < P Then Qq := Qq + 1; SetColor(15) ; 
For I := 0 To Qq Do Circle(490 - I * 30, 200, 15);  
Delay(1000); SetColor(0); 
For I := 0 To Qq Do Circle(490 - I * 30, 200, 15); 
If T Mod V = О  
Then Begin 
Qq := Qq - 1; If Qq < 0 Then Qq :- 0; Setcolor(15) ; 
For I := 0 To Qq Do Circle(490 - I * 30, 200, 15); 

 End; 

SetColor(O); OutTextXY(600, 50, St)  
Until KeyPressed Or (Qq > 15); ReadLn; 

End. 

 

6.3. РАЗЛИЧНЫЕ ПРИМЕРЫ МОДЕЛИРОВАНИЯ СЛУЧАЙНЫХ ПРОЦЕССОВ 

 
Метод  статистического  моделирования  имеет  множество  приложений.  Чаще  всего  он  за-

ключается в том, что для решения математической задачи строится некоторая случайная величина 
ζ, такая, что математическое ожидание этой случайной величины 

E

(ζ) является значением искомо-

го решения. Проводя достаточное количество раз эксперимент со случайной величиной ζ, можно 
найти приближенное решение как среднее значение результатов эксперимента. 

1. Вычисление площадей.

 Найти площадь фигуры 

G,

 вписанной в прямоугольник с разме-

рами сторон 

а

  и 

b. С

  помощью  датчика  равновероятно  распределенных  случайных  чисел  много-

кратно  генерируются  координаты  точки,  принадлежащей  прямоугольнику.  Очевидно,  что  при 
большом  числе  испытаний  площадь  фигуры 

G

  приближенно  равна  отношению  числа  точек,  по-

павших  в  область 

G, 

к  числу  всех  разыгранных  точек.  В  качестве  примера  приведем  программу 

вычисления числа 

π

, находя указанным методом площадь круга, вписанного в квадрат, по 100000 

испытаний. Оценку точности полученного результата оставляем читателям. 

 

Программа 154.

 Вычисление числа 

π 

 методом Монте-Карло 

Program Chislo_Pi; 

Uses Crt; Var I, N : Longint; X, Y : Real; 


background image

 

667 

Begin 

Randomize; N := 0; 
For I := 1 To 100000 Do 

Begin 

:=

 Random; Y := Random; 

If Sqr(X - 0.5) + Sqr(Y - 0.5) < 0.25 Then N := N + 1 

End; 
WriteLn ('pi=', (N / 100000 / Sqr(0.5)) : 8 : 5) ; 
Repeat Until KeyPressed End. 
 

2. Задача Бюффона.

 На поле, разграфленное параллельными прямыми, расстояние между 

которыми 

L,

 бросается наугад  игла длиной 

l

 (рис. 7.60).  Какова вероятность того, что игла,  упав, 

пересечег хотя бы одну прямую? 

 

Рис. 7.60. К.

 задаче Бюффона 

 

Ж.Бюффон (XVIII в.) подсчитал: 

р

 = 

L

l

2 . Таким образом, если 

L = 

2

l,

 то 

р

 = 

1 . Кроме того, 

р

 = 

N

N

1

,

 где 

N -

 число бросаний, 

N

1

 - число пересечений иглы с линиями.  

Относительная доля случаев, когда игла пересечет хотя бы одну

 

из параллельных

 

прямых 

равно 

р

 = 

1 . Это был один

 

из старинных способов опредения числа 

π.

 

Имитационное моделирование проведем следующим образом. Примем 

L

 = 1 и 

l

 = 

2

1 . «Иг-

лу» будем «бросать» в квадрат размером, скажем, 20х20, левый нижний угол которого имеет ко-
ординаты (0, 0). Положение концов иглы будем задавать с помощью датчика равномерно распре-
деленные, случайных чисел в диапазоне от 0 до 20. Точнее говоря, эти числа определят направле-

ние отрезка, вдоль  которого находится очередная  игла;  для того,  чтобы ее  длина была равна 

2

1

вторую  из  случайных  точек  -  концов  отрезка  -  подвинем  вдоль  него  до  достижения  указанной 
длины иглы. В математическом отношении это сводится к следующей несложной процедуре; 

• генерация координат точек 

А(х

1

, y

1

), B(x

2

, у

2

);

 

 определение координат точки 

В

1

1

 + 

α(х

2

 – х

1

), у

1

 + 

α(у

2

 – у

1

)),

 где 

 

Поскольку расстояние между горизонтальными линиями взято равным единице, а сами ли-

нии  имеют  целочисленные  координаты  по

  у,

  то  определить,  пересекает  ли  игла  прямую,  очень 

просто - да, если целые части ординат тoчeк 

A

 и 

В

1

 различны. 

 

Программа 155

 Решение задачи Бюффона. 

Program Buffon; 

Uses Crt; Var I, J, K, M, N : Integer; XI, X2, Y1, Y2, Al : Real; 

Begin 

Randomize; M := 30000; N := 1; 
For I := 1 To M Do  

Begin 
X1 := Random * 20; Yl := Random * 20; X2 := Random * 20; 
Y2 := Random * 20; 
A1 := 0.5 / Sqrt(Sqr(X2 – X1) + Sqr(Y2 - Yl) ) ; 
J := Round(Yl); К := Round(Yl + A1 * (Y2 – Y1)); 


background image

 

668 

If J <> К Then N := H + 1  

End; 
WriteLn('pi=', W / N) : 8 : 5); Repeat Until KeyPressed  

End. 

 

Создание  демонстрационной  программы,  которая  выводит  на  экран  несколько  параллель-

ных прямых из общего набора и имеющие к ним отношение «иглы», предоставляем читателю. 

Рекомендуем  провести  с  предложенной  программой  несколько  экспериментов.  Понятно, 

что  чем  больше  значение 

т,

  тем,  по-видимому,  точнее  результат.  Однако.  почему  он  постоянно 

слегка занижен? Все ли учтено на краях той зоны, в которой разыгрываются броски иглы? Чтобы 
почувствовать проблему, следует увеличить число параллельных прямых, что в данной программе 
очень легко сделать. Почему результат становится лучше? Отметим, что проблема краевых усло-
вий, когда события должны по условиям задачи разыгрываться на бесконечном поле, а при имита-
ционном  моделировании  фактически  разыгрываются  на  конечном  (и  даже  не  очень  большом), 
возникает часто и решение ее нетривиально. 

3. Нефтяное месторождение.

 Дано нефтяное месторождение, в котором область залегания 

нефти 

G

  ограничивается  кривой 

С.

  Дебит  скважины,  т.е.  количество  получаемой  из  нее  нефти  в 

единицу времени,  зависит от пластового давления нефти 

U

  в  точке  скважины.  Поэтом)  для  про-

гнозирования нефтедобычи важно знать распределение пластового давления на всем месторожде-
нии  при  условии,  что  оно  экспериментально  измерено  лишь  на  его  границе.  В  математическом 
плане функция 

U(r)

 удовлетворяет уравнению Лапласа 

)

(

2

r

U

 = 0; задача нахождения его реше-

ния внутри области при заданном значении 

U(r)

 на границе - так называемая, краевая задача Ди-

рихле; в данной задаче это решение, которое часто совсем не просто найти аналитически, позво-
лило бы правильно определить точку для скважины. 

 

Рис. 7.61. Наложение сетки на заданную область 

 

Покроем область 

G

 мелкой сеткой. Отметим узлы, наиболее близкие к границе 

С,

 и будем 

считать, что значения функции 

U

 в этих узлах приблизительно равны значениям этой функции в 

ближайших к ним точках границы. Будем искать значение функции 

U(A)

 в некотором внутреннем 

узле 

A

 (рис. 7.61). 

Поместим в точке 

А

 блуждающую частицу, которая может перемещаться по области в по-

следовательные моменты времени, переходя из одного  угла в соседний. Направления  перемеще-
ний случайны, равновероятны и не зависят от ее положения  и предыстории блуждания. Случай-
ный эксперимент состоит в наблюдении факта выхода блуждающей частицы в некоторый гранич-
ный узел. Когда блуждание прекращается, запоминается значение функции 

f

(

с

i

) в этой точке, и так 

далее, 

N

 раз. Замечательный факт состоит в том, что решение в точке 

 

Другими словами, среднее значение приближенно равно решению задачи Дирихле в точке 

А.

 

4. Модель «пьяницы» (модель случайного блуждания).

 Зададим блуждание точки (объ-

екта) по горизонтальной линии по правилу: если случайное число из интервала [0, 1] меньше 0,5, 
то точка делает шаг вправо 

x

 

= х +

 

h

, в противном случае 

x

 

= х - h. 

 


background image

 

669 

Программа 156.

 Модель случайного блуждания 

Program Tochka; 
Uses Crt, Graph; Var I, J : Integer; Z, P, X, H, Y : Integer; 
Begin 

X := 320; Y := 240; H := 10; P := 4; DetectGraph(I, J) ; 
InitGraphd, J, "); 
SetColor(15); Line(10, 312, 630, 312); Randomize; 
Repeat 

Z := Random(8); If Z >= P Then X := X + H Else X := X - H; 
SetColor(Green); Circle(X, Y, 10); Delay(200); 
SetColor(0); Circle(X, Y, 10) 

Until KeyPressed Or (X >= 640) Or (X <= 0); CloseGraph  

End. 

 

В программе шаг является постоянным, но никто не мешает нам сделать его переменным, 

выбирая из интервала [0, hmax] случайным образом. Для этого зададим максимально возможный 
шаг 

НМах

 и в цикле определим

 H := Random(HMax).

 

Если задать аналогичным образом вероятности движения точки вверх – вниз, вправо - вле-

во (0 < 

рх <

 1, 0 

< рy <

 1), получим хаотическое блуждание точки на плоскости. Для моделирова-

ния  блуждания  точки  в  замкнутом  прямоугольном  объеме  примем  абсолютно  упругое  (зеркаль-
ное) отражение от стенок. 

 

Программа 157.

 Хаотическое блуждание точки 

Program Broun; 

Uses Crt, Graph; 
Var I, J, X, Y, HxMax, HyMax, Hx, Ну : Integer; PI, P2, Z1, Z2 : Real; 

Begin 

X := 320; Y :== 240; HxMax := 30; PI := 0.5; P2 := 0.5; HyMax := 30; 
DetectGraph (I, J) ; InitGraph (1, J, ''); SetColor(15); 
Randomize; RectAngle(100, 100, 540, 380); 
SetColor(Green); Circle(X, Y, 10); Delay(200); SetColor(0); 
Circle(X, У, 10); 

Repeat 

Zl := Random; Z2 := Random; Hx := Random(HxMax); 
Ну := Random(HyMax) ; 
If (Zl < PI) Then X := X + Hx Else X := X - Hx; 
If (Z2 < P2) Then Y := Y + Ну Else Y :" У - Ну; 
If X <= 110 Then X := X + 2 * (110 - X) ; 
If X >= 530 Then X := X - 2 * (-530 + X) ; 
If Y <= 110 Then Y := Y + 2 * (110 - Y) ; 
If Y >= 370 Then Y := Y - 2 * (Y - 370); 
SetColor(Green); Circle(X, Y, 10); Delay(100); 
SetColor(0); Circle(X, Y, 10)  

Until Keypressed; CloseGraph  

End. 

 

Подобным (хотя и более сложным) образом происходит броуновское движение, хорошо из-

вестное из курса физики. Если след точки не стирать, то можно будет наблюдать на экране траек-
торию такого движения. Нет большого труда перейти к  случаю 

п

  частиц.  Для  этого  необходимо 

завести  два  массива  координат  точек  и  аналогично  предыдущему  примеру  организовать  их  дви-
жение. 

 

Программа 158.

 Броуновское движение 

Program Gaz; 

Uses Crt, Graph; 
Var I, J, HxMax, HyMax, Hx, Ну, N, I : Integer; 

X, Y : Array[0..500] Of Integer; PI, P2, Z1, Z2 : Real; 


background image

 

670 

Begin N := 100; 

For I := 1 To N Do Begin X[I] := 320; Y[I] := 240 End; 
HxMax := 10; PI := 0.5; P2 := 0.5; HyMax := 10; 
DetectGraph (1, J) ; InitGraphd, J, ' '); SetColor(15); 
Randomize; RectAngle(100, 100, 540, 380); 
For I := 1 To N Do PutPixel(X[I], Y[I], White); Delay(200); 
For I := 1 To N Do PutPixel(X(I], Y[I], 0) ; 

  Repeat 

For I := 1 To N Do  
 Begin  

Zl := Random; Z2 := Random; 
Hx := Random(HxMax); Ну := Random(HyMax); 
If Zl < PI Then X[I] := X[I] + Hx Else X[I] := X[I]— Hx; 
If Z2 < P2 Then Y[I] := Y[I] + Ну Else Y[I] := Y[I] - Ну; 
If X[I] <= 110 Then X[I] := X[I] + 2 * (110 - X[I]); 
If X(I] >= 530 Then X[I] := X[I] - 2 * (-530 + Х[I]; 
If Y[I] <= 110 Then Y(I] := Y[I] + 2 * (110 - Y[I]); 
If Y[I] >= 370 Then Y[I] := Y[I] - 2 * (Y[I] - 370); 
PutPixel (X[I], Y[I], 15)  

  End; Delay(100); 
For I := 1 To N Do PutPixel(X[I], Y[I], 0)  

Until KeyPressed; CloseGraph  

End. 

 

Построенная компьютерная модель в первом приближении может позволить моделировать 

многие явления и процессы, происходящие в газах: рассеивание облака, диффузия газов. С ее по-
мощью можно получить многие зависимости параметров газа друг от друга. В частности, давление 
(число  соударений  частиц  на  стенки)  от  длины  свободного  пробега  (величин

  HxMax 

и

  HyMax)

 

или от числа частиц. 

Представляет  значительный  интерес  имитационное  моделирование  явлений  в  сплошных 

средах,  удовлетворяющих  законам  идеального  газа,  таких,  как  истечение  газа  в  вакуум,  ударная 
волна,  волны  разрежения  и  т.п.  Для  модернизации  модели  можно  ввести  в  алгоритм  упругое 
столкновение частиц друг с другом, возникновение кластерных ансамблей и многое другое. 

При  вероятностном  моделировании  используют

 

различные  методы,  которые

 

позволяют 

решать задачи из различных областей. Ниже перечислены сферы применения вероятностных ме-
тодов. 

Метод  статистического  моделирования:  решение  краевых  задач  математической  физики, 

решение систем линейных алгебраических уравнений, обращение матриц и сводящиеся к ним се-
точные методы решения систем дифференциальных уравнений, вычисление кратных интегралов, 
решение  интегральных  и  интегродифференциальных  уравнений,  задач  ядерной  физики,  газовой 
динамики, фильтрации, теплотехники. 

Метод имитационного моделирования: моделирование систем массового обслуживания, за-

дачи  АСУ,  АСУП  и  АСУТП,  задачи  защиты  информации,  моделирование  сложных  игровых  си-
туаций и динамических систем. 

Метод  стохастической  аппроксимации:  рекуррентные  алгоритмы  решения  задач  статисти-

ческого оценивания. 

Метод  случайного  поиска:  решение  задач  оптимизации  систем,  зависящих  от  большого 

числа параметров, нахождение экстремумов функции большого числа переменных. 

Другие  методы:  вероятностные  методы  распознавания  образов,  модели  адаптации,  обуче-

ния и самообучения. 

 

Контрольные вопросы и задания 

 
Для ответов на эти вопросы может понадобиться выход за пределы кратких сведений, из-

ложенных в данном параграфе. 

1.  Какие  случайные  события  называют  достоверными?  невозможными?  несовместимыми? 

противоположными?