Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Практический курс математического и компьютерного моделирования. Учебно-практическое пособие
.pdf
РОССИЙСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
имени ИММАНУИЛА КАНТА
В.И. Зенкин
ПРАКТИЧЕСКИЙ КУРС
МАТЕМАТИЧЕСКОГО
И КОМПЬЮТЕРНОГО
МОДЕЛИРОВАНИЯ
Учебно-практическое пособие
Издательство
Российского государственного университета имени Иммануила Канта
2006

УДК 519.854.6(07)
ББК 22.19я73
З 563
Рецензент:
В.А. Суроткин, канд. физ.-мат. наук, доцент КГТУ
Зенкин В.И.
З 563 Практический курс математического и компьютерного
моделирования: Учеб.-практич. пособие. — Калининград:
Изд-во РГУ им. И. Канта, 2006. — 152 с.
ISBN 5-88874-732-7
В пособии на основе опыта поведения лабораторных и практических занятий по курсу «Математическое моделирование» со студентами специальности «прикладная математика и информатика»
излагаются проблемы, возникающие в большинстве задач математического и компьютерного моделирования, и методы их решения.
Приведены все необходимые теоретические сведения, относящиеся
к данной теме. На конкретных примерах рассмотрены
этапы вычислительного эксперимента: модель – алгоритм – программа. Большое внимание уделяется математической корректности постановки задачи моделирования и практическим приемам
программирования.
Учебное пособие предназначено для студентов и специалистов,
занимающихся математическим моделированием в различных областях науки и техники.
основные
УДК 519.854.6(07)
ББК 22.19я73
© Зенкин В.И., 2006
ISBN 5-88874-732-7 © Издательство РГУ им. И. Канта, 2006

ОГЛАВЛЕНИЕ
Введение ...............................................................................
6
I. Математические и компьютерные модели ..............
1. Модели. Метод математического моделирования ... 8
2. Компьютерное моделирование ................................. 13
3. Пример 1. Прыгающий мяч ...................................... 15
4. Пример 2. Реалистичное освещение ........................ 19
II. Программная реализация математической модели ..
1. Структурное программирование .............................. 27
2. Объектно-ориентированное программирование ..... 28
3. Объектно-ориентированное проектирование .......... 33
4. ООП в Delphi .............................................................. 36
5. Пример 1. Прыгающий мяч ...................................... 53
6. Листинги примера 1 ................................................... 55
6.1. Базовый класс ..................................................... 56
6.2. Класс
для модели, не учитывающей
сопротивление воздуха ...................................... 61
6.3. Класс для модели, учитывающей
сопротивление воздуха ...................................... 62
6.4. Модуль, поддерживающий графику ................ 65
6.5. Головной модуль ................................................ 68
7. Пример 2. Реалистичное освещение ........................ 75
8
26
3

8. Листинги примера 2 ................................................... 78
r
м
8.1. Базовый класс Tvector (вектор) и векторные
операции .............................................................. 78
8.2. Класс Tray (Луч) ................................................. 80
8.3. Класс Tcolo
(цвет) и операции с цветом ......... 82
8.4. Базовый класс Tfigure ........................................ 83
8.5. Класс Tsphere (сфера) ........................................ 85
8.6. Трассировщик ..................................................... 87
8.7. Головной файл .................................................... 91
III. Приемы и методы программирования ....................
1. Базовые схемы ............................................................ 96
1.1. Итерации ............................................................. 96
1.2. Рекурсия .............................................................. 97
1.3. Проектирование цикла с помощью инварианта .. 98
1.4. Вычисление инвариантной функции ................ 100
2. Тестирование и отладка программ ........................... 101
3. Работа с вещественными числами ........................... 106
4. Оптимизация программ ............................................. 108
4.1. Уменьшение объема занимаемой программой
памяти ................................................................. 108
4.2. Уменьшение времени выполнения програ
мы ... 109
5. Анимация .................................................................... 112
IV. Задания ...........................................................................
1. Требования к оформлению работ ............................. 119
2. Варианты заданий ...................................................... 122
2.1. «Идеальный» биллиард ..................................... 122
2.2. Игра «Жизнь» ..................................................... 124
2.3. L-системы ........................................................... 125
96
119
4

5
2.4. Математический маятник .................................. 128
2.5. Проблема трех тел .............................................. 128
2.6. Модель Солнечной системы ............................. 129
2.7. Маятник на диске ............................................... 130
2.8. Морская волна .................................................... 131
2.9. Волки и медведи ................................................. 132
2.10. Удар .................................................................. 132
2.11. Три точечные массы ........................................ 133
2.12. Модель сердца ................................................. 134
2.13. Мяч в ящике ..................................................... 135
2.14. Маятник на наклонной плоскости ................. 136
2.15. Маятник на нити .............................................. 136
2.16. Рычаг на диске ................................................. 137
2.17. Модель системы «хищник — жертва» .......... 138
2.18. Модель движения Земли вокруг
Солнца ....... 138
2.19. Цилиндры ......................................................... 139
2.20. Распространение тепла .................................... 140
2.21. Фармакокинетическая модель ........................ 140
2.22. Система «поршень — газ» .............................. 141
2.23. Колебания струны ........................................... 142
2.24. Маятник с цилиндром ..................................... 143
2.25. Жидкость в сосуде ........................................... 143
2.26. Задача И.Е. Жуковского .................................. 144
2.27. Модель колец Сатурна .................................... 145
2.28. Маятник на свободной подвеске .................... 145
2.29. Система итерирующих функций .................... 146
2.30. Фракталы .......................................................... 148
Рекомендуемая литература ..............................................
150

6
ВВЕДЕНИЕ
Математическое и компьютерное моделирование разнообразных процессов и явлений в самых различных областях науки и техники стало сейчас одним из основных способов получения новых научных знаний и технологических решений. Это
— наиболее гибкие и универсальные методы исследования
реальных объектов, процессов и явлений, с успехом применяемые в настоящее время в физике, астрономии, химии, биологии, медицине, экономике, военном деле, технических и социальных науках и многих других областях.
Для применения методов математического и компьютерного моделирования исследователь, независимо от его специальности, должен разбираться в алгоритмах вычислительной
математики и владеть способами их программной реализации
на компьютере
. Эти знания необходимы даже при использовании готовых пакетов программ, иначе будут затруднительны
или вообще невозможны анализ работы компьютерной модели, планирование и проведение вычислительных экспериментов и интерпретация их результатов. В настоящее время имеется несколько мощных программных пакетов для моделирования, таких как Simulink Matlab, Model Vision Studium и др.,
но они достаточно
сложны в изучении, дороги и, что самое
главное, при их использовании исследователь вынужден полностью полагаться на правильность работы этих программ,
что, естественно, никто гарантировать не может.
Поэтому имеет смысл, особенно при первоначальном освоении приемов моделирования, научиться программно реализовывать модели на универсальных языках высокого уровня.
Наиболее подходящим здесь является
объектно-ориентиро-

Введение
ванный метод программирования, который обладает рядом
преимуществ по сравнению с более традиционным структурным программированием.
Для понимания материала книги необходимы базовые знания языка Object Pascal (Delphi) и начальные знания операционной системы Windows. Основное внимание уделено практическим методам построения математических и компьютерных
моделей, весь необходимый теоретический материал дается в
краткой форме и снабжен
примерами. Приведен список задач,
достаточный для организации лабораторных работ по данному
курсу. Подробные описания моделей, содержащихся в заданиях, можно найти в указанной в конце книги рекомендуемой
литературе. Выполнение каждого задания расчитано на семестр и должно включать в себя математическую модель, численный алгоритм, программу и программную реализацию модели в соответствии с подробно разобранными примерами.
7

I. МАТЕМАТИЧЕСКИЕ И КОМПЬЮТЕРНЫЕ
МОДЕЛИ
Может показаться, что написанные нами уравнения сами
содержат структуру реального мира, которым можно управлять, манипулируя этими уравнениями.
Л. Купер [34]
Науки не пытаются объяснить, вряд ли они даже стараются интерпретировать — они в основном создают модели.
Под моделью понимается математическая конструкция, которая при добавлении некоторых словесных объяснений
описывает изучаемый феномен. Оправданием для такой математической конструкции служит единственное обстоятельство: ожидается, что она сработает.
Дж. фон Нейман, цит. по [11]
I.1. Модели. Метод математического
моделирования
Моделью какого-либо объекта (явления, феномена, процесса) называют другой объект, реальный или формальный, некоторые свойства которого частично совпадают со свойствами
моделируемого объекта. Ввиду сложности реального мира при
исследовании его явлений, процессов или объектов их обычно в
той или иной мере упрощают, выделяя те
свойства, которые
считают основными для рассматриваемого объекта или явления, и отвлекаясь от несущественных или малосущественных
деталей. Такое упрощение неизбежно при любом исследовании
хотя бы по той причине, что любой реальный объект имеет бесконечно много различных свойств и характеристик и, следова-
8

I. Математические и компьютерные модели
тельно, даже перечислить их все, а тем более изучить, нет никакой возможности. В некотором смысле можно сказать, что вся
научная деятельность сводится к построению и анализу моделей физических, биологических, технических, экономических,
социальных и других процессов, явлений и объектов.
Метод моделирования обычно применяют для изучения
исходных объектов тогда, когда непосредственное
ние либо по каким-то причинам неудобно (очень дорого
бует слишком много времени
возможно (моделируемый объект может не существовать в
реальности
приведет к катастрофе
4
или его прямое натурное исследование неизбежно
5
).
2
или опасно3), либо вообще не-
их изуче-
1
, тре-
Основными целями, ради которых создаются модели, являются следующие.
• Выявление зависимостей различных параметров модели,
характера их взаимодействия во времени и пространстве, нахождения оптимальных соотношений этих параметров.
• Прогнозирование поведения объектов моделирования,
чтобы, в частности, получить возможность ими управлять.
• Применение в качестве систем виртуальной реальности
или тренажеров при
подготовке персонала к работе на смоде-
лированных устройствах (системы реального времени).
1
Например, модель процессов в переходной экономике нашей стра-
ны начала 90-х гг. XX в. см. в [1, с. 302–306].
2
Например, моделирование игры в шахматы посредством прямого
перебора всех возможных ходов. По оценкам К. Шеннона, число
возможных ситуаций в шахматной партии равно примерно 10
43
. Ис-
следование всех ситуаций сейчас лежит за пределами возможностей
любого суперкомпьютера [38, с. 105].
3
Например, модель гонки вооружений (см. [1, с. 173–175]) или бое-
вых действий (см. [1, с. 175–179]).
4
Например, проект космического корабля или математическая рес-
таврация Тунгусского феномена см. в [1, с. 288–291].
5
Например, имитационная модель климатических последствий ло-
кального ядерного конфликта, см. в [1, с. 192–296].
9

Математическое и компьютерное моделирование
0
Следует ясно понимать, что не бывает модели без упрощений. Действительно, если некоторая модель имеет всего десять
входных параметров, каждый из которых независимо от других
может принимать десять различных значений, то только для тестирования такой модели в полном объеме (т.
ных значениях параметров) всего понадобится 10
е. при всевозмож-
10
= 10 000 000
000 прогонов. Нетрудно посчитать, что если на один прогон мо-
дели затратить только одну минуту, то такое «тестирование»
продлится более 19 000 лет. Кроме того, очевидно, что модель,
полностью совпадающая с оригиналом, также бесполезна, как
географическая карта в масштабе 1:1, поскольку в этом случае
отсутствует наиболее полезная черта моделей — абстрактность
6
.
Другими словами, модель никогда полностью не совпадает
по своим свойствам с оригиналом. С одной стороны, она должна отражать все свойства исходного объекта или явления, которые существенны для него, иначе модель бесполезна. С другой
стороны, необходимо, чтобы модель была как можно более
простой, иначе ее исследование будет затруднительно или
невозможно. Для сложных явлений и объектов часто очень трудно
совместить эти противоречивые требования. Таким образом,
при построении модели основной и наиболее трудной задачей
является решение вопроса о мере соответствия модели моделируемому объекту (адекватности) и, следовательно, проблемы
определения степени «существенности» параметров объекта.
Причем какие свойства считать основными, а какие несущест
венными — зависит как от моделируемого объекта, так и от
целей исследования. Поскольку очевидно, что одному и тому
же явлению могут соответствовать несколько различных моделей, то при прочих равных условиях предпочтительнее та из
них, которая в каком-то смысле проще других.
-
6
Льюис Керрол, математик и известный писатель, правда в шутку,
предлагал пользоваться именно такой картой, так как её достаточно
разложить на земле, чтобы в любой момент знать, где находишься:
нужно просто прочитать надпись, на которой стоишь.
1
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
