- •ПРЕДИСЛОВИЕ
- •ОПРЕДЕЛЕНИЕ И НАЗНАЧЕНИЕ МОДЕЛИРОВАНИЯ
- •1.1. ЧТО ТАКОЕ МОДЕЛЬ?
- •Место моделирования среди методов познания
- •Определение модели
- •Определение модели
- •Цели моделирования
- •1.2. КЛАССИФИКАЦИЯ МОДЕЛЕЙ
- •Материальное моделирование
- •Идеальное моделирование
- •Когнитивные, концептуальные и формальные модели
- •1.3. Классификация математических моделей
- •Классификационные признаки
- •Классификация математических моделей в зависимости от оператора модели
- •Классификация математических моделей в зависимости от целей моделирования (рис. 1.11)
- •Классификация математических моделей в зависимости от методов реализации (рис. 1.12)
- •Задания для самостоятельного выполнения
- •Глава 2
- •ЭТАПЫ ПОСТРОЕНИЯ МАТЕМАТИЧЕСКОЙ МОДЕЛИ
- •2.1. ОБСЛЕДОВАНИЕ ОБЪЕКТА МОДЕЛИРОВАНИЯ
- •2.2. КОНЦЕПТУАЛЬНАЯ ПОСТАНОВКА ЗАДАЧИ МОДЕЛИРОВАНИЯ
- •2.3. МАТЕМАТИЧЕСКАЯ ПОСТАНОВКА ЗАДАЧИ МОДЕЛИРОВАНИЯ
- •2.4. ВЫБОР И ОБОСНОВАНИЕ ВЫБОРА МЕТОДА РЕШЕНИЯ ЗАДАЧИ
- •stop
- •2.5. РЕАЛИЗАЦИЯ МАТЕМАТИЧЕСКОЙ МОДЕЛИ В ВИДЕ ПРОГРАММЫ ДЛЯ ЭВМ
- •2.6. ПРОВЕРКА АДЕКВАТНОСТИ МОДЕЛИ
- •2.7. ПРАКТИЧЕСКОЕ ИСПОЛЬЗОВАНИЕ ПОСТРОЕННОЙ МОДЕЛИ И АНАЛИЗ РЕЗУЛЬТАТОВ МОДЕЛИРОВАНИЯ
- •Задания для самостоятельного выполнения
- •ПРИМЕРЫ МАТЕМАТИЧЕСКИХ МОДЕЛЕЙ
- •3.1. СТАТИЧЕСКИЙ АНАЛИЗ КОНСТРУКЦИЙ
- •Содержательная постановка задачи
- •Концептуальная постановка задачи
- •Математическая постановка задачи
- •Решение задачи
- •Анализ результатов
- •Концептуальная постановка
- •Математическая постановка задачи
- •Методика решения задачи
- •Анализ результатов
- •3.3. ДИНАМИКА ПОПУЛЯЦИИ
- •Содержательная постановка задачи
- •Концептуальная постановка задачи
- •Решение задачи
- •Анализ результатов
- •Математическая постановка задачи для модели Ферхюльста
- •Решение задачи
- •Анализ результатов
- •Численное исследование модели Ферхюльста
- •3.4. МОДЕЛЬ КОНКУРЕНЦИИ ДВУХ ПОПУЛЯЦИЙ
- •Математическая постановка задачи
- •Качественный анализ задачи
- •Численное исследование модели конкуренции популяций
- •3.5. ГАРМОНИЧЕСКИЙ ОСЦИЛЛЯТОР
- •Содержательная постановка задачи
- •Концептуальная постановка задачи
- •Математическая постановка задачи
- •Решение задачи
- •Качественный анализ задачи
- •Численное исследование модели
- •Качественный анализ задачи
- •Решение задачи
- •Задания для самостоятельного выполнения
- •Глава 4
- •СТРУКТУРНЫЕ МОДЕЛИ
- •4.1. ЧТО ТАКОЕ СТРУКТУРНАЯ МОДЕЛЬ?
- •4.2. СПОСОБЫ ПОСТРОЕНИЯ СТРУКТУРНЫХ МОДЕЛЕЙ
- •4.3. ПРИМЕРЫ СТРУКТУРНЫХ МОДЕЛЕЙ
- •Задания для самостоятельного выполнения
- •МОДЕЛИРОВАНИЕ В УСЛОВИЯХ НЕОПРЕДЕЛЕННОСТИ
- •5.1. ПРИЧИНЫ ПОЯВЛЕНИЯ НЕОПРЕДЕЛЕННОСТЕЙ И ИХ ВИДЫ
- •5.2. МОДЕЛИРОВАНИЕ В УСЛОВИЯХ НЕОПРЕДЕЛЕННОСТИ, ОПИСЫВАЕМОЙ С ПОЗИЦИЙ ТЕОРИИ НЕЧЕТКИХ МНОЖЕСТВ
- •5.3. МОДЕЛИРОВАНИЕ В УСЛОВИЯХ СТОХАСТИЧЕСКОЙ НЕОПРЕДЕЛЕННОСТИ
- •5.4. МОДЕЛИРОВАНИЕ МАРКОВСКИХ СЛУЧАЙНЫХ ПРОЦЕССОВ
- •Задания для самостоятельного выполнения
- •ЛИНЕЙНЫЕ И НЕЛИНЕЙНЫЕ ЯВЛЕНИЯ
- •6.1. О ЗАКОНЕ ГУКА И ГРАНИЦАХ ЛИНЕЙНОСТИ
- •6.3. О ПОСТРОЕНИИ СПЛОШНЫХ МОДЕЛЕЙ. ВЫВОД ВОЛНОВОГО УРАВНЕНИЯ ИЗ ЗАКОНОВ МЕХАНИКИ
- •6.4. РЕШЕНИЕ ВОЛНОВОГО УРАВНЕНИЯ МЕТОДОМ ФУРЬЕ
- •6.6. УРАВНЕНИЯ МАКСВЕЛЛА
- •6.7. О КЛАССИФИКАЦИИ КВАЗИЛИНЕЙНЫХ СИСТЕМ
- •6.8. СВЯЗЬ НЕПРЕРЫВНОГО И ДИСКРЕТНОГО НА ПРИМЕРАХ УРАВНЕНИЯ КОЛЕБАНИЙ СТРУНЫ И УРАВНЕНИЯ ШРЕДИНГЕРА
- •6.9. О ПОЛЬЗЕ ФЕНОМЕНОЛОГИИ ПРИ ПОСТРОЕНИИ МАТЕМАТИЧЕСКИХ МОДЕЛЕЙ
- •6.10. АНАЛИЗ ПОДОБИЯ И РАЗМЕРНОСТИ
- •6.11. АВТОМОДЕЛЬНОСТЬ
- •6.12. САМООРГАНИЗАЦИЯ И СТРУКТУРЫ В НЕЛИНЕЙНЫХ СРЕДАХ
- •6.13. О НЕЛИНЕЙНЫХ ВОЛНАХ В СПЛОШНЫХ СРЕДАХ
- •6.14. ИЕРАРХИЧЕСКИЕ МОДЕЛИ ТУРБУЛЕНТНОСТИ И МНОГОМАСШТАБНЫЕ ФУНКЦИОНАЛЬНЫЕ БАЗИСЫ
- •Иерархический базис для турбулентных полей
- •Одномерный иерархический базис
- •Двумерный базис
- •6.15. ВЕЙВЛЕТЫ
- •Непрерывное вейвлет-преобразование
- •6.16. ВЕЙВЛЕТ-АНАЛИЗ ВРЕМЕННЫХ КОЛЕБАНИЙ
- •6.17. О ФРАКТАЛАХ И ИХ ПРИМЕНЕНИИ
- •Примеры фракталов
- •Подобие и скейлинг
- •Множества Мандельброта и Жюлиа
- •Фрактальная размерность кластеров
- •Экспериментальные методы определения фрактальной размерности
- •Модель случайных фракталов для описания растущих дендритных структур
- •Результаты применения модели случайных фракталов
- •6.18. НЕЛИНЕЙНЫЕ МОДЕЛИ ДНК
- •Структура и физические свойства ДНК
- •Модель Пейрара-Бишопа
- •Задания для самостоятельного выполнения
- •Глава 7
- •7.2. ИМИТАТОР СИСТЕМЫ МАССОВОГО ОБСЛУЖИВАНИЯ
- •7.3. КЛЕТОЧНЫЕ АВТОМАТЫ
- •7.4. МОДЕЛИРОВАНИЕ ДИСЛОКАЦИЙ В МЕТАЛЛЕ
- •Самоорганизация дислокаций в модели клеточных автоматов
- •Задания для самостоятельного выполнения
- •ЯЗЫК ФОРМАЛЬНОГО ОПИСАНИЯ АЛГОРИТМОВ
- •====== Приложение 2
- •П2.1. Решение уравнений высоких степеней и трансцендентных уравнений с одним неизвестным
- •П2.2. Решение систем линейных уравнений
- •БИБЛИОГРАФИЧЕСКИЙ СПИСОК
- •ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ
- •ОГЛАВЛЕНИЕ
- •Введение в математическое моделирование
•Вопросы для самопроверки
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