ВУЗ:
Составители:
Map[Function[y, y + #2],
{{1,0},{0,1},{-1,0},{0,-1}}]] != {} &)]
Примечание: Обозначение #2 (предпоследнее значение, сгенерированное в Mathematica,
т.е. ранее, чем #) является параметром SameTest в loc, потому, что в SameTest #2
указывает на последний элемент списка.
Шаг 3. Проверяем loc с тем, чтобы выяснить, закончилось ли блуждание далеко от
кластера (вышло за окружность), и если нет, то добавляем в конец списка occupiedSites
еще один элемент с координатами loc.
If[Apply[Plus, loc^2] <= (rad +s)^2,
AppendTo[occupiedSites, loc]]
Шаг 4. Повторное исполнение последовательности шагов от 2 до 3 до тех пор, пока
количество занятых узлов (длина списка occupiedSites) не превышает n.
While[Length[occupiedSites] < n,
rad = (Max[Abs[occupiedSites]] + s);
loc =
FixedPoint[
(# + {{1,0},{0,1},{-1,0},{0,-1}}[[Random[Integer, {1, 4}]]])&,
Round[rad {Cos[#], Sin[#]}]&[Random[Real, {0, N[2 Pi]}]] ,
SameTest -> (Apply[Plus, #2^2] > (rad + s)^2 ||
Intersection[occupiedSites,
Map[Function[y, y + #2],
{{1,0},{0,1},{-1,0},{0,-
1}}]] != {} &)];
If[Apply[Plus, loc^2] <= (rad +s)^2,
AppendTo[occupiedSites, loc]]
]
Используя вышеприведенные фрагменты кода, можно составить программу для
моделирования процесса АОД с помощью процедуры Module[{loc, rad, particleCount = 0,
stepChoices = {{1,0},{0,1},{-1,0},{0,-1}}},…
И если использовать графические функции пакета Mathematica, то можно
визуализировать созданный кластер. Например, на рисунке приведен результат для s=10
и n=50. Другой пример использования графики для отображения представлен на рис. 6.13.
1
2
3
4
5
6
7
8
9
1011
12
13
14
15
16 17
18
19
20
21
22 23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
124
Страницы
- « первая
- ‹ предыдущая
- …
- 122
- 123
- 124
- 125
- 126
- …
- следующая ›
- последняя »