Оглавление
Предисловие . . . . . . . . . . . . . . . . . . . . . . . . 3
Предисловие . . . . . . . . . . . . . . . . . . . . . . . . 3
Руководства по компьютерному моделированию
физических процессов . . . . . . . . . . . . . . . . . . 5
Руководства по программированию на Microsoft Visual Basic . . 5
Руководства по алгоритмам . . . . . . . . . . . . . . . . . 6
Некоторые дополнительные руководства . . . . . . . . . . . 6
1. Априорная информация . . . . . . . . . . . . . . . . . 9
1.1. Необходимость перехода к компьютерному моделированию . 9
1.2. Модель разработки программных решений Microsoft Solutions
Framework . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.3. Пример проектирования программного решения.
Моделирование теплоотдачи . . . . . . . . . . . . . . . . . 13
1.3.1. Исходная задача . . . . . . . . . . . . . . . . . . . 13
1.3.2. Концептуальное проектирование. Анализ . . . . . . . 13
1.3.3. Форма ввода и вывода результатов . . . . . . . . . . 14
1.3.4. Сценарий . . . . . . . . . . . . . . . . . . . . . . 15
1.4. Логическое проектирование . . . . . . . . . . . . . . . 15
1.4.1. Прототип пользовательского интерфейса . . . . . . . 15
1.4.2. Основные и вспомогательные сервисы . . . . . . . . . 15
1.4.3. Алгоритмы решения дифференциального уравнения . . . 16
1.5. Физическое проектирование . . . . . . . . . . . . . . . 17
1.5.1. Версия 1. Работа с минимальными средствами . . . . . 17
1.5.2. Версия 2. Использование объектов . . . . . . . . . . 17
1.5.3. Версия 3. Использование стандартных элементов управления 18
1.6. Реализация проекта . . . . . . . . . . . . . . . . . . . 18
1.6.1. Версия 1 . . . . . . . . . . . . . . . . . . . . . . 18
1.6.2. Пользовательский интерфейс . . . . . . . . . . . . . 19
1.6.3. Листинги кода . . . . . . . . . . . . . . . . . . . 24
1.6.4. Версия 2 . . . . . . . . . . . . . . . . . . . . . . 51
1.6.5. Пользовательский интерфейс . . . . . . . . . . . . . 52
1.6.6. Модули класса и стандартные модули . . . . . . . . . 53
1.6.7. Листинги кода . . . . . . . . . . . . . . . . . . . 53
1.6.8. Версия 3 . . . . . . . . . . . . . . . . . . . . . . 67
1.6.9. Пользовательский интерфейс . . . . . . . . . . . . . 68
1.6.10. Листинги кода . . . . . . . . . . . . . . . . . . . 72
1.7. Задачи и перспективы . . . . . . . . . . . . . . . . . . 81
1.8. Заключительные замечания . . . . . . . . . . . . . . . 82
1.9. Литература . . . . . . . . . . . . . . . . . . . . . . . 83
1.10. Приложение 1. Алгоритмы Эйлера и Рунге—Кутты . . . . 83
2. Движение в однородном силовом поле . . . . . . . . . 87
2.1. Рассматриваемая задача . . . . . . . . . . . . . . . . . 87
2.2. Сценарий программного решения . . . . . . . . . . . . 91
2.3. Реализация программного решения . . . . . . . . . . . . 92
2.4. Пользовательский интерфейс . . . . . . . . . . . . . . 93
2.5. Листинги кода . . . . . . . . . . . . . . . . . . . . . 95
2.6. Простые задачи моделирования движения . . . . . . . . 124
2.6.1. Задача 1 . . . . . . . . . . . . . . . . . . . . . . 125
2.6.2. Задача 2 . . . . . . . . . . . . . . . . . . . . . . 125
2.6.3. Задача 3 . . . . . . . . . . . . . . . . . . . . . . 125
2.6.4. Задача 4 . . . . . . . . . . . . . . . . . . . . . . 126
2.6.5. Задача 5 . . . . . . . . . . . . . . . . . . . . . . 126
2.7. Задачи и перспективы . . . . . . . . . . . . . . . . . 127
2.8. Литература . . . . . . . . . . . . . . . . . . . . . . 127
2.9. Приложение 2. Алгоритмы Кромера и средней точки . . . 128
2.10. Приложение 3. Пример моделирования . . . . . . . . . 131
3. Движение в полях центральных сил . . . . . . . . . . 136
3.1. Рассматриваемые модели . . . . . . . . . . . . . . . . 136
3.1.1. Частица в поле неподвижного центра . . . . . . . . . 137
3.1.2. Две частицы в центральном поле . . . . . . . . . . . 139
3.1.3. Частица в поле двух центров . . . . . . . . . . . . . 140
3.2. Сценарий программного решения . . . . . . . . . . . . 142
3.3. Реализация программного решения . . . . . . . . . . . 143
3.4. Пользовательский интерфейс . . . . . . . . . . . . . . 145
3.5. Листинги кода . . . . . . . . . . . . . . . . . . . . . 147
3.6. Сборки проектов . . . . . . . . . . . . . . . . . . . . 223
3.7. Простые задачи моделирования . . . . . . . . . . . . . 223
3.7.1. Задача 1 . . . . . . . . . . . . . . . . . . . . . . 223
3.7.2. Задача 2 . . . . . . . . . . . . . . . . . . . . . . 225
3.7.3. Задача 3 . . . . . . . . . . . . . . . . . . . . . . 226
3.7.4. Задача 4 . . . . . . . . . . . . . . . . . . . . . . 226
3.7.5. Заключительные замечания . . . . . . . . . . . . . 226
3.8. Литература . . . . . . . . . . . . . . . . . . . . . . 227
Оглавление
3.9. Приложение 4. Сохранение момента импульса.
Алгоритм Верле . . . . . . . . . . . . . . . . . . . . . . 228
4. Линейные и нелинейные осцилляторы . . . . . . . . . 232
4.1. Рассматриваемые задачи . . . . . . . . . . . . . . . . 233
4.1.1. Гармонический осциллятор . . . . . . . . . . . . . 233
4.1.2. Математический маятник . . . . . . . . . . . . . . 237
4.1.3. Осциллятор Морзе . . . . . . . . . . . . . . . . . 238
4.1.4. Осциллятор Ван-дер-Поля . . . . . . . . . . . . . . 238
4.1.5. Осциллятор Дуффинга . . . . . . . . . . . . . . . 239
4.2. Сценарий программного решения . . . . . . . . . . . . 239
4.3. Реализация программного решения . . . . . . . . . . . 241
4.4. Листинги кода . . . . . . . . . . . . . . . . . . . . . 243
4.5. Простые задачи моделирования колебательных режимов . 273
4.5.1. Задача 1 . . . . . . . . . . . . . . . . . . . . . . 274
4.5.2. Задача 2 . . . . . . . . . . . . . . . . . . . . . . 275
4.6. Задачи и перспективы . . . . . . . . . . . . . . . . . 276
4.7. Литература . . . . . . . . . . . . . . . . . . . . . . 277
4.8. Приложение 5. Метод отображения Пуанкаре . . . . . . 278
4.9. Приложение 6. Быстрое преобразование Фурье . . . . . 279
5. Хаотические режимы простых динамических систем . . 283
5.1. Рассматриваемые задачи . . . . . . . . . . . . . . . . 283
5.1.1. Каскады удвоения периода для одномерных отображений 283
5.1.2. Модели Реслера и Лоренца . . . . . . . . . . . . . 287
5.2. Сценарии программных решений . . . . . . . . . . . . 288
5.3. Реализация программных решений . . . . . . . . . . . 289
5.3.1. Сечения Пуанкаре и показатель Ляпунова квадратичного
отображения. Структура проекта и пользовательский
интерфейс . . . . . . . . . . . . . . . . . . . . . . 289
5.4. Листинги кода . . . . . . . . . . . . . . . . . . . . . 290
5.5. Орбиты последовательности итераций квадратичного
отображения . . . . . . . . . . . . . . . . . . . . . . . 304
Структура проекта и пользовательский интерфейс . . . . . 304
5.6. Листинги кода . . . . . . . . . . . . . . . . . . . . . 305
5.7. Моделирование хаотической динамики. Структура проекта
и пользовательский интерфейс . . . . . . . . . . . . . . . 318
5.8. Листинги кода . . . . . . . . . . . . . . . . . . . . . 322
5.9. Простые задачи моделирования хаотической динамики . . . . 350
5.9.1. Задача 1 . . . . . . . . . . . . . . . . . . . . . . 350
Оглавление
5.9.2. Задача 2 . . . . . . . . . . . . . . . . . . . . . . 351
5.9.3. Задача 3 . . . . . . . . . . . . . . . . . . . . . . 351
5.9.4. Задача 4 . . . . . . . . . . . . . . . . . . . . . . 351
5.9.5. Задача 5 . . . . . . . . . . . . . . . . . . . . . . 351
5.10. Задачи и перспективы . . . . . . . . . . . . . . . . . 352
5.11. Литература . . . . . . . . . . . . . . . . . . . . . 353
5.12. Приложение 7. Показатель Ляпунова и его вычисление . . . 353
6. Случайное блуждание в двух измерениях . . . . . . . 356
6.1. Рассматриваемые задачи . . . . . . . . . . . . . . . . 357
6.1.1. Случайное блуждание на целочисленной решетке . . . 357
6.1.2. Рост кластеров по механизму ограниченной диффузией
агрегации . . . . . . . . . . . . . . . . . . . . . . 360
6.2. Сценарии программного решения . . . . . . . . . . . . 363
6.2.1. Случайное блуждание . . . . . . . . . . . . . . . 363
6.2.2. Ограниченная диффузией агрегация . . . . . . . . . 363
6.3. Реализация программных решений . . . . . . . . . . . 364
6.3.1. Случайное блуждание . . . . . . . . . . . . . . . 364
6.5. Ограниченная диффузией агрегация . . . . . . . . . . . 376
6.6. Листинги кода . . . . . . . . . . . . . . . . . . . . . 377
6.7. Простые задачи моделирования . . . . . . . . . . . . . 394
6.7.1. Задача 1 . . . . . . . . . . . . . . . . . . . . . . 394
6.7.2. Задача 2 . . . . . . . . . . . . . . . . . . . . . . 394
6.7.3. Задача 3 . . . . . . . . . . . . . . . . . . . . . . 394
6.7.4. Задача 4 . . . . . . . . . . . . . . . . . . . . . . 394
6.7.5. Задача 5 . . . . . . . . . . . . . . . . . . . . . . 395
6.7.6. Задача 6 . . . . . . . . . . . . . . . . . . . . . . 395
6.8. Задачи и перспективы . . . . . . . . . . . . . . . . . 395
6.8.1. Время жизни при наличии центров захвата . . . . . . 395
6.8.2. Случайное блуждание по свободным узлам . . . . . . 396
6.9. Литература . . . . . . . . . . . . . . . . . . . . . . 396
6.10. Приложение 8. Характеристические функции случайных
величин . . . . . . . . . . . . . . . . . . . . . . . . . . 397
6.11. Приложение 9. Сравнение выборок наблюдений . . . . . 399
7. Перколяция на целочисленной решетке . . . . . . . . 401
7.1. Рассматриваемые задачи . . . . . . . . . . . . . . . . 402
7.1.1. Алгоритм оккупации периметра
Хаммерсли—Лиса—Александровица . . . . . . . . . . 402
Оглавление
7.1.2. Алгоритм многократной маркировки ячеек
Хошена—Копельмана . . . . . . . . . . . . . . . . . 403
7.2. Сценарии и реализации программных решений . . . . . . 405
7.2.1. Кластеры Хаммерсли—Лиса—Александровица . . . . 405
7.3. Листинги кода . . . . . . . . . . . . . . . . . . . . . 406
7.4. Кластеры Хошена—Копельмана . . . . . . . . . . . . . 421
7.5. Листинги кода . . . . . . . . . . . . . . . . . . . . . 424
7.6. Простые задачи моделирования кластеров . . . . . . . . 445
7.6.1. Задача 1 . . . . . . . . . . . . . . . . . . . . . . 445
7.6.2. Задача 2 . . . . . . . . . . . . . . . . . . . . . . 445
7.6.3. Задача 3 . . . . . . . . . . . . . . . . . . . . . . 445
7.6.4. Задача 4 . . . . . . . . . . . . . . . . . . . . . . 445
7.6.5. Задача 5 . . . . . . . . . . . . . . . . . . . . . . 445
7.7. Задачи и перспективы . . . . . . . . . . . . . . . . . 446
7.8. Литература . . . . . . . . . . . . . . . . . . . . . . 446
8. Моделирование динамики клеточными автоматами . . 448
8.1. Рассматриваемые задачи . . . . . . . . . . . . . . . . 449
8.1.1. Игра «Жизнь» Дж. Конуэя и ее модификации . . . . . 449
8.1.2. Самоорганизованная критичность П. Бака . . . . . . 452
8.2. Сценарии и реализации программных решений . . . . . . 455
8.2.1. Игра «Жизнь» . . . . . . . . . . . . . . . . . . . 455
8.3. Листинги кода . . . . . . . . . . . . . . . . . . . . . 455
8.4. Самоорганизованная критичность . . . . . . . . . . . . 465
8.5. Листинги кода . . . . . . . . . . . . . . . . . . . . . 466
8.6. Простые задачи моделирования кластеров . . . . . . . . 478
8.6.1. Задача 1 . . . . . . . . . . . . . . . . . . . . . . 478
8.6.2. Задача 2 . . . . . . . . . . . . . . . . . . . . . . 478
8.6.3. Задача 3 . . . . . . . . . . . . . . . . . . . . . . 479
8.6.4. Задача 4 . . . . . . . . . . . . . . . . . . . . . . 479
8.6.5. Задача 5 . . . . . . . . . . . . . . . . . . . . . . 480
8.7. Задачи и перспективы . . . . . . . . . . . . . . . . . 480
8.8. Литература . . . . . . . . . . . . . . . . . . . . . . 480
9. Метод молекулярной динамики . . . . . . . . . . . . 482
9.1. Рассматриваемая задача . . . . . . . . . . . . . . . . 483
9.2. Сценарий и реализация программного решения . . . . . . 485
9.3. Листинги кода . . . . . . . . . . . . . . . . . . . . . 487
9.4. Простые задачи моделирования . . . . . . . . . . . . . 503
9.4.1. Задача 1 . . . . . . . . . . . . . . . . . . . . . . 503
Оглавление
9.4.2. Задача 2 . . . . . . . . . . . . . . . . . . . . . . 504
9.4.3. Задача 3 . . . . . . . . . . . . . . . . . . . . . . 504
9.4.4. Задача 4 . . . . . . . . . . . . . . . . . . . . . . 504
9.4.5. Задача 5 . . . . . . . . . . . . . . . . . . . . . . 505
9.5. Задачи и перспективы . . . . . . . . . . . . . . . . . 505
9.6. Литература . . . . . . . . . . . . . . . . . . . . . . 506
9.7. Приложение 10. Теорема вириала и давление . . . . . . 507