Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2808.Введение в математическое моделирование..pdf
Скачиваний:
111
Добавлен:
15.11.2022
Размер:
38.88 Mб
Скачать

Вопросы для самопроверки

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

2.Может ли системное время быть не равно реальному времени? Почему?

3.В каких случаях обосновано применение имитаторов?

4.В чем принципиальные отличия аналитических моделей и имита­

торов?

5.В чем схожесть реального й вычислительного с использованием имитатора экспериментов?

6.В чем достоинства и недостатки моделирования системного вре­ мени с постоянным и переменным шагами?

7.Назовите отличия технологии создания имитаторов от аналити­ ческих моделей.

8.Почему имитаторы можно отнести к разновидности математи­ ческих моделей?

9.В каких случаях имитатор СМО является предпочтительным по отношению к аналитическому подходу?

Задания для самостоятельного выполнения

1. Разработайте имитатор одноканальной СМО с ограниченным вре­ менем ожидания в очереди. Предполагается, что поток заявок, поступа­ ющий в систему, является простейшим. Поступившая в систему заявка может сразу поступить на обслуживание, если канал свободен, либо встать в очередь. Если время пребывания заявки в очереди превысило некоторое предельное для нее значение, она покидает систему необслуженной. Интервал времени At между поступлением двух соседних заявок, максимальное время пребывания заявки в очереди Ah и время ее выпол­ нения Aw описываются случайными величинами, подчиненными показа­ тельному распределению с заданными средними значениями. Имитатор должен выполнять оценку следующих параметров эффективности СМО:

>среднего времени пребывания заявки в очереди;

>вероятности выполнения заявок;

>коэффициента загрузки системы.

2.Аналогично заданию 1 разработайте имитатор я-канальной СМО

сограниченным временем пребывания в очереди.

3.Разработайте имитатор регулируемого светофором перекрестка до­ роги. Движение в одном направлении считайте однополосным. При дви­ жении через перекресток разрешено движение прямо, повороты налево

414

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

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

 

4.

Разработайте программу, реализующую клеточный автомат

«Жизнь». Состояние клеточного пространства выведите на экран в гра­

фическом режиме. Исследуйте эволюцию КА для следующих начальных

состояний, задающих расположение «живых» клеток:

 

а)

'

' "'-С'

б)

в)

 

 

 

 

г)

 

* ''

д)

е)

ж)

5. Разработайте клеточный автомат «Лишайники», поведение которого подчинено следующим правилам:

>клетка может находиться в активном или пассивном состоянии;

>клетка становится активной, если в восьми соседних клетках на­

ходится N{, N2 или N3 активных клеток;

 

> если число активных клеток в окрестности не равно

N2 или

N3, то клетка становится пассивной.

6. Разработайте клеточный автомат «Дюны», поведение которого подчинено следующим правилам:

>клетка может находиться в активном и пассивном («спрятанном») состоянии;

>если клетка была активна и из восьми соседних клеток более N активны, то клетка «прячется». Время нахождения в «спрятанном» состоянии равно W тактов;

>если время «прятания» закончилось и в окрестности не более М активных клеток, то клетка вновь становится активной.

7. Разработайте клеточный автомат «Термит», поведение которого подчинено следующим правилам:

>клетка может находиться в пассивном или активном состоянии.

Вначальный момент все ячейки пассивны, «Термит» расположен

вцентральной клетке и направлен кверху;

>автомат «Термит» переходит на соседнюю клетку, и если Она ак­ тивная, то делает ее пассивной и поворачивает налево на 90\ Если клетка была пассивна, «Термит» делает ее активной и поворачи­ вает направо на 90е

=====Приложение 1

ЯЗЫК ФОРМАЛЬНОГО ОПИСАНИЯ АЛГОРИТМОВ

Метод решения любой задачи можно представить в виде некоторо­ го алгоритма, понимаемого как последовательность действий, в резуль­ тате которых достигается необходимый результат. Сам алгоритм может быть выражен различными способами. Исходя из требований возможной простоты, удобочитаемости и логической ясности естественно в качестве описания алгоритма выбрать такой способ, который был бы сопоставим с описанием на языке программирования и содержал конструкции есте­ ственного языка. При этом важно, чтобы описание алгоритма проводи­ лось в соответствии с общими принципами и правилами структурного программирования. Такому требованию удовлетворяет язык проектиро­ вания программ PDL, русская версия которого носит название псевдо­ кода. Хотя язык PDL имеет неформальный характер, т.е. не рассчитан на трансляцию, тем не менее перевод записи алгоритма с языка PDL на языки программирования не составляет труда. Ниже приводится подроб­ ное описание всех соглашений.

Комментарии. Набираются курсивом. В начале алгоритма помещают­ ся комментарии, кратко описывающие назначение алгоритма и опреде­ ляющие используемые переменные.

Константы. Все константы считаются десятичными числами, если в комментариях не оговорено иное. Например, все числа 3; —5; 3,14159; 1,5*10“3 являются константами.

Переменные. Переменная - это имя, используемое для хранения зна­ чения, которое может изменяться. Имена переменных для большей на­ глядности могут содержать как прописные, так и строчные символы ла­ тинского алфавита. Например, Pi, Fi, х, у.

Массивы. Массив — имя для индексированной совокупности вели­ чин. Для имен массивов действуют те же соглашения, что и для пере­ менных. Обращение ко всему массиву осуществляется по его имени, а к индивидуальным элементам — по имени массива с указанием списка индексов. Индексы могут принимать как положительные, так и отрица­ тельные значения. При описании массива в квадратных скобках указы­ ваются минимальные и максимальные значения каждого индекса.

Пример:

А25;

В350

—обращение к элементам массива;

 

А; В

 

—обращение ко всему массиву;

 

А[-1

5 , 0 ...10]

—описание массива.

Оператор присваивания. Знак «=» используется для присвоения переменной, расположенной в левой части оператора, значения выраже­ ния из правой части.

Арифметические, логические операции и операции отношений. Арифме­ тические операции над целыми числами:

+ сложение;

— вычитание;

умножение;

/ деление;

div - вычисление целой части числа (например, 7 div 2 = 3); mod —вычисление остатка от деления (например, 7 mod 2 = 1). Арифметические операции над вещественными числами:

+ сложение;

-

вычитание;

умножение;

/

деление.

Логические операции

andи ог, как это здесь показано, выделяются

жирным шрифтом. Операции отношений:

= равно;

 

фне равно;

< меньше;

 

> больше;

< меньше или равно;

 

> больше или равно.

Пример: (а<5) and(а*0)

Операторы start и stop.Используются для обозначения начала и кон­

ца работы алгоритма.

Составной оператор. Может содержать произвольное число операто­

ров и выделяется операторными скобками:

begin

[ произвольное число операторов ]

end

Условный оператор. Условное выполнение оператора может быть

представлено в двух формах: if (условие) then

else [операторы, выполняемые, если условие истинно]

[операторы, выполняемые, если условие ложно]

endif

или if (условие) then

[операторы, выполняемые, если условие истинно]

endif

Пример: if (а<0) thenх := х + 1

endif elseх := х -

Оператор выбора. Имеет следующий вид:

case

х of

 

 

 

Xj

[операторы, выполняемые, если х = Xj ]

х2,х3,Х4

[операторы, выполняемые, если х = х2, х3 или х4 ]

х5

Хб

[операторы, выполняемые, если х5 < х < х$ ]

хп

[операторы, выполняемые, если х = хп ]

else

[операторы, выполняемые, если х не совпадает ни с одной

 

из меток ]

 

end case

 

 

 

Пример:

case

i of

 

 

 

1

x:=x+l

выполняется, если i = 1

 

2,4,6

x:=l

выполняется, если i = 2, 4 или 6

 

10... 15

x:=0

выполняется, если 10 < / < 15

 

end case

 

 

Оператор цикла с параметром:

for (переменная цикла) = (нач.значениё) to (кон.значение) step (шаг цикла)

[выполняемые операторы] next {переменная цикла)

Пример: for i = -5 to 9 step 2 x := х+/

next /

Оператор Цикла с предусловием. while (условие)

[выполняемые операторы] end while

Цикл выполняется, пока условие истинно.

Пример:

while (/<5)

 

х := х+2

 

/ := /+1

 

end while

Информационные сообщения и сообщения об ошибке. Для вывода сооб­ щений используются функции Error (<пояснение>) и Attention (<текст сообщения>)

Процедуры• Отдельные блоки алгоритма удобно оформлять в виде са­ мостоятельных процедур:

procedure <название процедуры>

Данные:

Результат: start

return

Вызов процедуры выполняется с помощью следующего оператора: do <название процедуры>

Можно использовать предопределенные вспомогательные процеду­

ры выхода:

 

 

halt

-

завершение программы;

exit

—завершение процедуры;

break

-

завершение цикла.

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

А л гор и тм П1.1.

procedure Определение корней квадратного уравнения.

Данные: А,

В, С -

коэффициенты уравнения Лх2 + 2Ьс+ С = 0 .

Результаты:

хх и

значение корней уравнения.

start

 

 

х,:=0

*2 :=0

if (|Л|>10-5) then D := В2 - 4АС

if (D £ 0) then

else Attention(#£/tt действительных корней)

end if end if

return