ВУЗ:
Составители:
(может быть как по x, так и по y) в массиве occupiedSites. Понятно, что эта координата
будет принадлежать наиболее удаленному участку кластера от центра - начала координат.
2б. Выполняется случайное блуждание по решетке, начиная с выбранного узла в п.2а, до
тех пор, пока либо местоположение частицы не превысит значения (rad + s) либо частица не
окажется в узле рядом с узлом, который уже занят участком кластера. Фиксируются
координаты блуждания loc.
3. Если узел с координатами loc оказывается рядом с участком кластера, т.е. узлом
который уже занят, то loc добавляется к массиву занятых мест (к кластеру).
4. Выполняется последовательность шагов от 2 до 3, пока длина occupiedSites (занятых
мест) не достигнет значения n.
▪ Реализация алгоритма для пакета Mathematica
Шаг 1. Начальный список, содержащий затравку запишем как
occupiedSites = {{0,0}}
Шаг 2. Радиус окружности, на которой случайно запускается частица
rad = Max[Abs[occupiedSites]] + s
Запуски частиц происходят из случайно выбранного местоположения на окружности,
которое задается как
Round[rad {Cos[#], Sin[#]}]&[Random[Real, {0, N[2 Pi]}]]
Каждый новый шаг блуждания создается следующим образом:
(# + {{1,0},{0,1},{-1,0},{0,-1}}[[Random[Integer, {1, 4}]]])&
здесь # является текущим местоположением блуждания.
Блуждание прекращается тогда, когда результатом нижеследующей функции является
значение True
(Apply[Plus, #^2] > (rad + s)^2 ||
Intersection[occupiedSites,
Map[Function[y, y + #],
{{1,0},{0,1},{-1,0},{0,-1}}]] != {} &)
Примечание: Первое условие для завершения блуждания состоит в том, что если частица
попала в узел, квадрат расстояния которого от затравки больше чем (rad + s)^2, то ее
блуждание далее не рассматривается . Второе условие определяется тем фактом, что
частица приблизилась к какому-нибудь участку кластера occupiedSites.
Заключительное местоположение блуждания, которое называется loc, определяется
функцией FixedPoint, в которой используются функции приведенные выше.
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,
123
Страницы
- « первая
- ‹ предыдущая
- …
- 121
- 122
- 123
- 124
- 125
- …
- следующая ›
- последняя »