Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Практический курс математического и компьютерного моделирования. Учебно-практическое пособие

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
IV. Задания
цессов желательно выводить информацию о проценте сде­ланной работы. В сообщениях об ошибке пользователя обя­зательно выводите информацию о том, как ее исправить и/или ее причинах (см. листинги примеров). В сложных проектах разумно применять настраиваемый самим пользо­вателем интерфейс (см., например, [29]).
Форматирование исходных кодов и грамотные краткие
комментарии необходимы для
читаемости и понимания смыс­ла программы. Комментарии должны содержать только самое необходимое для пояснения логики программы и ее сопрово­ждения, но в то же время быть вполне достаточными для этих целей. Комментарии предназначаются для тех, кто владеет языком программирования, тем, кто его не знает, никакие по­яснения не помогут. Старайтесь
оформлять строки коммента­риев в виде отдельных блоков, чтобы визуально отделить их от программного кода.
Делайте отступы в несколько пробелов для программ­ных блоков. Операторы, как правило, лучше располагать в отдельных строках
43
. Знаки «+», «–» окружите пробелами, после знаков препинания должен быть пробел (исключение — «.»). После «(» и перед «)» желателен пробел. Перемен-
ные, константы, классы, функции и процедуры должны иметь осмысленные, содержательные имена, в противном случае необходимы комментарии, их описывающие. Объяв­ление функции (процедуры, класса) должно сопровождаться комментарием, содержащим сведения об этой функции, ее параметрах, назначении
и, при необходимости, описание алгоритма работы. Сами функции, процедуры, классы жела­тельно отделять друг от друга пустой строкой или пунктир­ной линией. Более подробно о форматировании исходных кодов см., например, [30].
43
В печатных изданиях (не в этой книге!) форматированием исход-
ных кодов программ часто пренебрегают из-за экономии места. В текстах в электронном виде для этого нет никаких разумных причин.
121
Математическое и компьютерное моделирование
ρ
ρ
τ
IV.2. Варианты заданий
IV.2.1. «Идеальный» биллиард
Данная модель может служить примером модели идеаль­ного газа. Газ моделируется шарами, двигающимися без тре­ния по плоскому квадратному столу и абсолютно упруго стал­кивающимися друг с другом и со стенками стола («биллиар­да»). Входными параметрами модели являются:
радиус шаров (один и тот же для всех шаров);
— L — длина стороны стола;
— maxN — количество шаров (maxN < 20);
массы шаров, i = 1, …, maxN;
— m
i
0000
),(),,(
vvyx начальные значения координат цен-
yixiii
тров шаров и их начальные скорости, i = 1, …, maxN, выбран­ные случайным образом. Для координат центров шаров, оче­видно, должны выполняться неравенства:
00
ii
.,
ρρρρ
LyLx
Расстояние между центрами шаров, конечно, не должно превышать величины 2
;
— T — временной интервал «существования» модели, вы­раженный в секундах;
масштабный коэффициент времени.
После случайного размещения шаров на столе для задан­ного промежутка времени T находятся самые ранние моменты столкновений каждой пары
44
шаров (без учета возможных по-
мех со стороны других шаров и стенок биллиарда), а также моменты столкновений каждого шара со стенками (снова без учета помех). Затем выбирается самое раннее из этих столкно-
44
Одновременное столкновение трёх шаров в данной модели счита-
ется невозможным. Если такое столкновение происходит, то его счи­тают последовательностью двух столкновений.
122
IV. Задания
ρ
=
вений — именно оно, очевидно, и произойдет, так как ничто не успеет ему помешать. Обозначим t' время этого столкнове­ния. Если t' > T, то никаких столкновений в модели не про­изошло и координаты
0
t
vrr += ,
i
ii
где
r
= (xi, yi),
i
0
r = ),(
i
v
= (vxi, vyi).
i
Если же t'
00
yx ,
ii
T,
r
i-го шара определяются по формуле
i
то рассчитывают­ся координаты всех шаров в мо­мент t' и их скоро­сти. После этого задача сводится к описанной выше,
Рис. IV.1
но интервал T заменяется на Tt' и процесс повторяется до тех пор, пока не будет исчерпан заданный временной проме­жуток T.
Момент столкновения шаров i и j
находится из уравнения
22
.4))((
ρ
=+ t
vvrr
jiji
Изменения скоростей после столкновений получаются, ис­ходя из закона сохранения импульса
Δ .
где
m
j
mm
+
ji
)2/(),,(
rnvnnv =
m
i
,, vvvvvv
Δ
jjii
Δ
mm
+
ji
Описанная модель является примером хаотической сис­темы — движение шаров с течением времени становится не-
предсказуемым. Рассчитать аналитически движение шаров на сколько-нибудь длительное время практически невозможно (почему?).
123
Математическое и компьютерное моделирование
τ
Сделать графическую анимированную иллюстрацию дан­ной модели, подобрав подходящий масштаб времени
. Для того чтобы показать хаотический характер модели, нужно пре­дусмотреть возможность замены в некоторый заданный момент времени всех скоростей на противоположные и возможность движения всех шаров в «обратных» направлениях — в хаотиче­ской системе прямые и «обратные» траектории не совпадают.
Литература: [12; 16].
IV.2.2. Игра «Жизнь»
Придуманная американским математиком Дж. Конвеем
(John Conway) игра «Жизнь» в самом общем виде моделирует
реальные процессы зарождения, развития и гибели живых ор­ганизмов.
Описание игры. Имеется бесконечная доска, разграфленная на клетки, на которую можно ставить произвольное число фишек («организмов»). Фишки можно ставить в любые клет­ки. После расстановки фишек вступают в
действие генетиче-
ские законы Конвея:
1) любая фишка, у которой имеются 2 или 3 соседние
фишки, выживает и переходит в следующее поколение;
2) любая фишка, у которой больше 3 соседей, погибает от
перенаселенности, фишка, у которой меньше 2 соседей, поги­бает от одиночества;
3) если у какой-либо пустой клетки ровно 3 соседние клетки с
фишками, то
на этой клетке происходит рождение новой фишки.
Замечания: a) у любой клетки — 8 соседей; б) рождение и смерть организмов происходят одновременно, все вместе взя­тые фишки в течение одного цикла рождения-смерти образу­ют одно поколение.
Из законов Конвея следует, что существуют беспредельно развивающиеся популяции и такие, которые заканчивают свое развитие одним из
следующих способов: полностью исчезают;
124
IV. Задания
переходят в устойчивые постоянные конфигурации, образуя бесконечный колебательный режим.
Автор игры рекомендует следующий порядок действий:
1) отметить все фишки, обреченные на гибель;
2) отметить все клетки, где в следующем поколении про-
изойдет рождение фишки;
3) снять всех «мертвых», поставить «новорожденных».
Сделать графическую анимированную иллюстрацию дан­ной модели, подобрав подходящий масштаб времени. Реали­зовать возможность расстановки и удаления фишек с помо­щью мыши, а также используя специальный список с началь­ными координатами фишек (текстовый файл). Предусмотреть возможность ведения протокола изменения «популяции» (со­хранять координаты фишек каждого поколения в текстовый файл). Развитие популяций должно происходить как в автома­тическом, так и в ручном (пошаговом) режимах
. Вести счет поколений. В документации описать все известные типы кон­фигураций, привести примеры по ним.
Литература: [7; 37].
IV.2.3. L-системы
L-системы были впервые введены в рассмотрение А. Лин­денмейером (A. Lindenmayer) в 1968 г. для моделирования развития живых организмов. L-система представляет собой набор символов и правил, задаваемых текстовой записью, для графического представления объекта на плоскости.
Удобно представлять, что графические построения реали­зуются при помощи специального исполнителя, который в ка­ждый момент времени «знает
» свои координаты, направление движения и длину отрезка (длина отрезка постоянна, ее можно выбрать произвольно на каждой итерации), на величину кото­рого он может переместиться. Управляется исполнитель сле­дующими командами:
125
Математическое и компьютерное моделирование
6
Символ
команды
F
f
+
| [
]
{ }
;
Рисовать заданный отрезок в заданном направлении Передвинуться в заданном направлении на заданный отрезок расстояния без рисования Изменить текущее направление против часовой стрелки на заданный угол Изменить текущее направление по часовой стрелке на заданный угол Реверс (поворот на 180 Помеcтить в стек Вытолкнуть из стека координаты и направление и сде­лать их текущими Начало записи L-системы Конец записи L-системы Комментарий до конца строки
Значение команды
o
)
45
текущие координаты и направление
В начале описания, до символа «
{», принято задавать
имя объекта. После символа начала записи задается теку­щий угол — « ваемый инициатор «
Angle n», угол равен 360°/n. Затем так назы-
Axiom S», где S — начальное значение
строки команд, содержащей один или несколько текстовых символов, которая далее будет содержать команды испол­нителю. Символ «
=» означает подстановку правой части
вместо левой. Сама операция подстановки выполняется столько раз, сколько задаст пользователь (параметр
Order).
Начальное направление по умолчанию равно 0°. Рассмот­рим примеры, которые можно будет использовать в про­грамме в качестве тестовых.
45
Стеком называют структуру, в которой накапливают некоторые
элементы, причём обязательно условие: элементы из стека можно доставать только в порядке, обратном порядку их помещения в стек. На языках высокого уровня стек обычно реализуется в виде одно­связного списка (см. листинги примеров).
12
IV. Задания
7
Пример 1. Кривая Коха.
Koch{ ; имя объекта Angle 6 ; угол = 360/6 градусов Axiom F ; инициатор F=F+ F– F+ F ; подстановка F <-- F+F--F+F }
Order = 1 строка команд имеет вид F+ F– F+ F, при Order
При
= 2 эта строка станет
и т. д. Соответственно будет меняться и изображение кри-
F+ F
F+ F– F+ F + F+ F– F+ F – F+ F– F+ F+ F+ F–
вой Коха — как показано на рисунке IV.2.
Рис. IV.2
Пример 2. «Дерево».
tree{ Angle 16 ;угол = 360/16 Axiom ++++F ;начальное направлениевверх F=FF–[– F+ F+ F]+[+ F– F– F] }
На рисунке IV. 3 дано «дерево» при значениях Order, рав-
ных 1,2 и 3.
Рис. IV.3
12
Математическое и компьютерное моделирование
τ
τ
=
+
τ
Сделать графическую анимированную реализацию L-системы,
подобрав подходящую задержку времени
. Предусмотреть ре-
жим пошагового и автоматического выполнения построений.
Входные параметры:
, Order, текстовый файл с команда­ми построения. Программа должна правильно анализировать последовательность команд в этом файле (выдавать сообще­ния об ошибках в записи команд и их возможных причинах), редактировать и сохранять его.
Литература: [8; 10; 11; 13].
IV.2.4. Математический маятник
Математический маятник можно представить как матери­альную точку P, которая под действием силы тяжести движет­ся по окружности радиуса L. Координату точки P зададим как
угол x = x(t), где t — время. Уравнение движения (рис. IV. 4)
&&
,0sin
xgxL
где g — ускорение свободного па-
дения. В начальный момент времени t =
0 имеем: x(0) = x
, )0(x&= 0.
0
Cделать графическую анимирован-
Рис. IV. 4
Входные параметры: L, x
ную иллюстрацию модели, подобрав подходящий масштаб времени
, τ.
0
.
IV.2.5. Проблема трех тел
Три материальные точки взаимодействуют по закону все­мирного тяготения
)(
mm
ij
&&
=
m
x
ijii
xx
ji
3
r
ij
=
ji
,3,2,1,,
128
IV. Задания
τ
τ
где xi = u0, плоскости, задающий позицию i-го тела, r
&
x
(0) = v
i
масса i-го тела, xi = xi(t) — вектор
0, mi
расстояние ме-
ij
жду i-м и j-м телами.
Известно, что эта задача допускает пять частных решений, когда все три тела находятся в одной неизменной плоскости. При этом конфигурация тел остается неизменной и они опи­сывают кеплеровские траектории с общим фокусом в центре масс системы. Два частных решения соответствуют случаю, когда три тела все время образуют равносторонний треуголь­ник, — треугольные решения Лагранжа. Еще три частные ре- шения, соответствующие расположению всех трех тел на одной прямой, называются прямолинейными решениями Эйлера.
Построить графическую анимированную иллюстрацию модели, подобрав подходящий масштаб времени
. Модель построить для общего случая, и, кроме того, она должна пра­вильно отражать перечисленные выше частные решения. Осо­бое внимание обратить на точность численных расчетов при решении системы дифференциальных уравнений модели.
Входные параметры модели: m
, rij, u0, v0, τ.
i
IV.2.6. Модель Солнечной системы
Построить графическую анимированную иллюстрацию модели Солнечной системы, подобрав подходящий масштаб времени
. Все планеты и астероиды вращаются вокруг Солн­ца в одном направлении (против хода часовой стрелки, если смотреть с северного полюса мира). Движения планет подчи­няются законам Кеплера:
1. Каждая планета движется по эллипсу, в одном из фоку-
сов которого находится Солнце.
2. Планеты движутся по своим орбитам с переменной ско-
ростью,
при этом площади, описываемые радиус-вектором, проведенным от центра Солнца до центра планеты, за равные промежутки времени равны.
129
Математическое и компьютерное моделирование
τ
ω
3. Квадраты периодов обращения планет пропорциональ-
ны кубам больших полуосей их орбит.
Все необходимые для модели данные сведены в таблицу:
Небесное
тело
Меркурий 0,4 0,24 0,38 0,056 0,206 Венера 0,7 0,62 0,95 0,814 0,007 Земля 1,0 1,0 1,0 1,0 0.017 Марс 1,5 1,88 0,53 0,11 0,093 Пояс астероидов 2,3 — 3,3 — — Юпитер 5,2 11,86 11,19 317,37 0,048 Сатурн 9,5 29,46 9,4 95,08 0,056 Уран 19,2 84,02 4,0 14,61 0,047 Нептун 30,0 164,79 4,0 17,23 0,009 Плутон 39,5 247,7 0,5 0,18 0,249 Солнце — — 109 332960
Расстояние
до Солнца
(а. е.)
Время
обра-
щения
Диаметр
(Земля = 1)
Масса
(Земля = 1)
Эксцент-
риситет
орбиты
Предусмотреть задание начального положения для каждой планеты. Изображение Солнечной системы должно масшта­бироваться. Соблюдать масштаб диаметров планет не обяза­тельно. Входные параметры модели:
, координаты начально-
го положения каждой планеты.
Литература: [16, с. 104–112].
IV.2.7. Маятник на диске
Однородный диск радиуса R вращается с постоянной угло­вой скоростью w. К диску на нити длины L подвешена матери­альная точка. Уравнение движения (рис. IV. 5)
2
R
&&
x
L
ω
&
xxx
0
g
xt
l
,0)0(,)0(
==
,0sin)sin(
=+
x
130
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]