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

Компьютерное моделирование физических явлений. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
☆
мя, за которое вакансия достигает поверхности металла, находящейся на расстоянии r, а также получить распределение вероятностей для време­ни прохода.
4.2.5.Диффузиячастицыврешеточномгазе
Хотя во всех вышеприведенных примерах фигурируют случайные блуждания на решетке, хранить координаты узлов решетки или путь пешехода в процессе моделирования на компьютере не было необходи­мости. В следующем примере мы рассмотрим модель случайного блуж­дания, в которой требуется хранить координаты решетки, образованной газом частиц (коллективом пешеходов).
Рассмотрим случай ненулевой концентрации с случайных частиц на квадратной решетке. Каждая частица перемещается случайным обра­зом в ближайший свободный узел, и попадание двух частиц в один узел исключено, иначе говоря, частицы не взаимодействуют. Такая модель является примером
решеточного газа. Заметим, что движение отдель-
ной частицы коррелированно с движением других частиц. Физическое обоснование этой модели возникает в физике металлов, где диффузия обусловлена температурными вакансиями, концентрация которых зави­сит от температуры. Основной рассматриваемой физической величиной является коэффициент самодиффузии D отдельной меченой частицы. Алгоритм Монте-Карло для вычисления D можно сформулировать сле­дующим образом.
1. Распределить частицы с концентрацией с случайным образом по
узлам решетки. При этом 0 < с 1. Пометить каждую частицу (т. е. сде­лать ее непохожей на другие) и запомнить ее начальное положение в массиве.
2. На каждом шаге случайным образом выбрать частицу и один из соседних с ней узлов. Если соседний узел не занят, то частица переходит в него; в противном случае она сохраняет свое текущее положение.
В этом случае «время» измеряется в произвольных единицах. При­нятая единица времени, которой удобно пользоваться, соответствует одному шагу метода Монте-Карло на частицу. За один шаг метода Монте-Карло каждая частица совершает в среднем один переход. Коэф-
фициент диффузии D получается предельным п
ереходом t функции
D(t), где D(t) определяется выражением
)( tR
где <
R(t)
2
> – полное среднеквадратичное смещение, приходящееся на
tD , (4.13)
1
dt
2
2
)(
одну меченую частицу за время t.
61
Реализовав такую модель, можно вычислить величину D на квад­ратной решетке для различных значений c. Хотя D определяется как предел при t
  выражения (4.13), на практике D(t) флуктуирует со
временем и путем увеличения t точность не повышается. Лучшую ста­тистику для D можно получить, усредняя D по как можно большему числу меченых частиц и, следовательно, рассматривая решетку как можно большего размера L. Отклонение D(t) от точного значения об­ратно пропорционально квадратному корню из числа частиц, по кото­рым прои
зводится усреднение в (4.13). D является монотонно убываю-
щей функцией концентрации с.
■Программадвумерногослучайногоблуждания
Модель случайного блуждания в многомерных пространствах более сложна,чемводномерномпространстве.Водномерномпространствекаж‐ дый шаг блуждания соответствует либо 0градусов(шаг вперед),либо180 градусов(шагназад).Вмногомерныхпространствахшагможетиметьцелый диапазоннаправлений.
Рассмотримслучайноеблужданиенаквадратнойрешеткевдвумерном пространстве(тетрадьвклетку).Этоблужданиесостоитизшаговодинаковой длины,случайновзятыхсодинаковойвероятностьювсеверном,восточном, южном и западном направлениях. Список возможных случаев для шага в этомблужданииследующий:{{0,1},{1,0},{0,‐1},{‐1,0}}.
 Создадимсписокnвозможныхшагов:
{{0,1},{1,0},{0,-1},{-1,0}}[[Table[Random[Integer, {1, 4}], {n}] ]]
По аналогии с расчетом одномерного блуждания определите процедуру
Walk2D,результатомкоторойбудетсписокместоположенийприблуждании, n–шагблужданиярешетки,которыйначинаетсявначалекоординат:
Walk2D[n_] := FoldList[Plus, {0, 0}, {{0,1},{1,0},{0,-1},{-1,0}}[[Table[Random[Integer, {1, 4}], {n}]]]]
Выполним
Walk2D[30]
иполучимодинизвариантовкоординатнашегоблуждания:
{{0, 0}, {–1, 0}, {–1, 1}, {0, 1}, {0, 2}, {–1, 2}, {0, 2}, {0, 1}, {–1, 1}, {–1, 2}, {0, 2}}
Мыможемполучитьснимокблуждания,используяграфическуювстроенную функцию Line,котораяпрорисовываетлиниюмеждусоседнимиточками блуждания:
ShowWalk2D[coords_, opts___]:=Show[Graphics[Line[coords], opts, AspectRatio -> Automatic]]
Дляn=4000:
ShowWalk2D[ Walk2D[4000] ]
прорисует,например:
62
■ Программаn‐мерногослучайногоблуждания
Используятакоесредствоматематики,каканонимнаяфункция,можно записатьслучайноеблужданиевn‐мерномтакимобразом:
WalkND[n_,d_] := NestList[(#+(-1)^Table[Random[Integer],{d}])&, Table[0,{d}],n]
Длятрехмерногослучайногоблужданияиз3000шаговпостроимгра‐ фик:
Show[Graphics3D[Line[WalkND[3000,3]]]]
4.3.Случайныеблужданиябезсамопересечений
Модели случайного блуждания без самопересечений (ББС) играют очень важную роль в области физики полимеров, где ББС представляет длинную цепочку – молекулу, состоящую из многих маленьких моле­кул, связанных вместе в соответствии c ковалентными химическими связями. Самое первое исследование (1934) конфигураций полимеров было проведено с использованием моделей случайных блужданий. На протяжении последних десятилетий изучение статистических свойств длинных гибких полимерных цепочек и моделей случайных блужданий развивалось параллельно. Другие примеры применения модели ББС: поведение ферромагнетиков, различные модели Изинга и некоторые критические явления.
63
Полимер состоит из очень большого числа N (N ~ 103…105) повто­ряющихся звеньев, или мономеров. Например, повторяющиеся звенья
цепочки полиэтилена можно изобразить как ... –СН2–СН2–СН2– ... . Зна-
ние детальной структуры полимера важно для многих практических приложений. Если, например, мы хотим усовершенствовать производ­ство резины, то нужно хорошо разбираться в свойствах локальных дви­жений цепочек каучука. Однако если нас интересуют глобальные свой­ства полимера, то детали строения цепочки можно не принимать во внимание.
Рассмотрим известный пример о кусочке спагетти, помещенном в теплую воду. Через короткий промежуток времени спагетти становится гибким и ведет себя подобно полимерной цепочке в хорошем раствори­теле, т. е. спагетти как не сворачивается в маленький комок, так и не вытягивается полностью. Скорее, кусочек приобретает случайную структуру, как схематично показано на рис. 4.6.
Рис 4.6. Схематическое представление
линейного полимера, помещенного в хороший
растворитель (а); пример соответствующего
блуждания на квадратной решетке (б)
В этом случае спагетти ведет себя как слабый раствор полимерных цепочек в хорошем растворителе. Разбавленность раствора означает, что можно не принимать во внимание запутывание цепочек и рассмат­ривать каждую цепочку отдельно. Наличие «хорошего» растворителя означает, что полимеры могут свободно двигаться и, следовательно, принимать всевозможные конфигурации. Одной из фундаментальных геометрических характеристик, которую можно использовать для опи­сания полимера, является среднеквадратичное расстояние между кон­цами цепочки RN, где RN определяется формулой (4.10) и N – количество мономеров. Известно, что для слабого раствора полимерных цепочек в хорошем растворителе асимптотическая зависимость RN выражается формулой (4.11) с показателем степени  ~ 3/5 для всех гибких цепочек.
Для двумерного случая известен точный результат  = 3/4. Множитель а в выражении (4.11) определяется структурой мономеров и самим рас­творителем.
64
Обсудим модель случайного блуждания, которая описывает гло­бальные свойства линейных полимеров в растворе. Идеализация заклю­чается в размещении полимерной цепочки на решетке (рис. 4.6, б). Из­вестно, что если пренебречь взаимодействием мономеров между собой, то независимо от размерности и структуры решетки получается цепочка с = 1/2. Поскольку этот результат для  не соответствует эксперимен­тальным данным, необходимо рассмотреть более реалистичную модель цепочки, в которой учитывается самое важное физическое свойство лю­бого полимера: два мономера не могут находиться в одном месте про­странства. Данное ограничение, известное как условие «исключенного объема», означает, что само блуждание невозможно адекватно описать с помощью только модели случайного блуждания. Стандартная решеточ­ная модель гибкой полимерной цепочки будет являться блужданием без самопересечений. Расчет характеристик ББС – трудная задача, и вычис­ления на компьютере комбинаторным методом и методом Монте-Карло сыграли важную роль в получении современных представлений об этих явлениях.
Опишем простейший алгоритм моделирования ББС на квадратной решетке методом Монте-Карло. Удобно представить решетку в виде двумерного массива; этот массив используется для записи узлов, кото­рые посещались. Выберем произвольный узел в качестве начального и предположим, что первый шаг делается на «север», поскольку блужда­ния, порождаемые тремя другими возможными начальными шагами, различаются только направлением. Заметим, что второй шаг можно сделать в трех возможных направлениях. Для получения несмещенных результатов генерируется случайное число (1, 2 или 3), которое и опре­деляет выбор одного из трех направлений движения. Последующие ша­ги генерируются аналогичным образом. К сожалению, обычно при та­ком способе моделирования блуждание не продолжается бесконечно. Рассмотрим (N = 3)-шаговое блуждание, показанное на рис. 4.7, а.
Для получения несмещенных результатов нам нужно, как обычно, сгенерировать случайное число (1, 2, 3). Следующий шаг, показанный на рисунке 4.7, а, приводит к самопересечению и тем самым нарушает принятое ограничение. Может сложиться и ситуация, как на рис. 4.7, б. Если следующий шаг приводит к самопересечению, то блуждание пре­кращается и начинается новое блуждание из начальной точки.
Рис.4.7. Примеры блужданий без самопересечений
на квадратной решетке: а – запрещенное (N = 4)-шаговое
блуждание; б – такое (N = 8)-шаговое блуждание, кото-
рое приводит к самопересечению
65
Недостатком приведенного выше метода моделирования является
R
его неэффективность для длинных цепочек, т. к. доля успешных попы­ток уменьшается экспоненциально с увеличением задаваемой длины цепочки. Для преодоления этого недостатка было предложено несколь­ко «улучшений» метода.
Одним из наиболее эффективных улучшений метода является метод
рептаций (от лат. reptatio – ползающий, пресмыкающийся). Для просто-
ты рассмотрим модель полимерной цепочки, у которой все углы связи равны 90°. В качестве примера такой модели на рис. 4.8 показаны пять (N = 5)-звенных независимых полимерных цепочек (другие цепочки сов­падают с приведенными с точностью до преобразований поворота или отражения). Метод рептаций можно кратко описать следующим образом:
1. Случайным образом выбираем цепочку и удаляем хвостовое
звено.
2. Пробуем добавить звено в начало цепочки. Возможно не более
двух направлений присоединения нового головного звена.
3. Если добавление нового звена приводит к нарушению условия самонепересечения, возвращаемся к исходной цепочке и меняем местами голову и хвост. Включаем эту цепочку в статистическую выборку.
Для получения статистического среднего
2
приведенные выше
N
шаги повторяем много раз.
Рис. 4.8. Пять независимых возможных блужданий из N = 5 шагов
на квадратной решетке с углами связи /2; голова и хвост каждого
блуждания обозначаются стрелкой и кружком соответственно
В качестве примера использования метода рептаций предположим,
что мы выбрали цепочку а на рис. 4.8. Новое звено можно добавить в двух
направлениях (рис. 4.9, а), так что в среднем получается
1
2
1
. По
гвa
2
сравнению с этим в цепочке б звено можно добавить только в одном на-
правлении, и получается бдб
1
2
1
, где хвост и голова цепочки б
2
меняются местами (рис. 4.9, б).
66
Рис. 4.9. Допустимые преобразования цепочек а и б; одно из возможных
преобразований цепочки б нарушает условие самонепересечения,
и, таким образом вместо этого меняются местами голова и хвост
Остальные цепочки преобразуются по схемам адв
1
1
и бад
2
гвг
1
2
2
1
. В результате все пять цепочек равноверо-
2
1
2
1
2
ятны, т. е. преобразования, применяемые в методе рептаций, сохраняют собственные статистические веса цепочек. Существует лишь одна труд­ность: если не начать с конфигурации, имеющей «тупики» на обоих кон­цах, как, например, показанной на рис. 4.10, то такую конфигурацию мы никогда не получим, используя описанное выше преобразование. Отсюда видно, что метод рептаций приводит к небольшому смещению нашей ста­тистической выборки и вычисленное среднее расстояние между концами цепочки будет получаться немного больше, чем если бы рассматривались все конфигурации. Однако вероятность таких «тупиковых» конфигураций очень мала и смещением в большинстве случаев можно пренебречь.
Рис. 4.10. Пример дважды тупиковой конфигурации
для обыкновенного самонепересекающегося блуждания,
которую невозможно получить в методе рептаций
,
■ПрограммаББСнаосновеалгоритмарептаций
Приизученииобщихсвойствслучайногоблужданияисследуетсяnшаго‐ выхблужданий,которыеформируютсяпосредствомдобавленияновогошага кпредыдущему,поканевыполнитсяnшагов.Этотметодформированияпро‐ стыхблужданий неиспользуетсяпри изучении ББС,потомучто в случаепе‐ ресечения последующим шагом предыдущего приходится прерывать про‐ цесс и начинать строить блуждание заново.Сростомчислаблужданий
67
возможность прерывания процесса растет, следовательно, эффективность генерированияББСстановитсяоченьнизкой.
АльтернативныйподходкформированиюББСсостоитвтом,чтобысчи‐ татьновыйшагкакББС,т.е.исключитьвозможностьпересеченияшагов.При такомподходеможноприменитьалгоритмрептаций.
▪Алгоритм
1a.ЗададимнадвумернойрешеткеББСдлинойn(создадимдвумерный массивизnэлементов,которыйибудетпредставлятьнашуББС).
1б.ВычислимквадратдлиныББСизапишемегозначениев squaredist.
Следующую последовательность шагов необходимо выполнить не‐ сколькораз.Первыйраз– используяначальнуюконфигурациюзаданнуюна шаге1,адалее–используяконфигурацию, полученнуюнапредыдущихша‐ гах. Опишем последовательность действий спроизвольной конфигурацией, которуюназовем
config.
2.Случайновыберемшаг‐приращениедлядобавленияк config.
3.Проверяем,непересекаетлиновыйшагкакой‐нибудьизпредыдущих
шагов,кромепервого(т.е.несовпадаетлиположениеновогошагаскаким‐ нибудьдругимшагомв
config). Еслипроизошлопересечение,переписыва‐
емконфигурациюнаоборот,т.е.последнийэлементзаписываемкакпервый ит.д.Послечегозаписываемновуюконфигурациювпеременную
path. Если
пересечений нет, добавляем новый шаг в качестве последнего элемента
config, удаляемпервыйэлементизаписываемновуюконфигурациюв path.
4.ВычисляемновуюдлинуББСидобавляемк squaredist.
5.Выполняемпоследовательностьшагов2–4mразсначальнойконфигура‐ ции.
6.ОпределяемсреднеезначениедлиныББС,строимграфики.
▪Реализацияалгоритма
Шаг1a.НачальноеББСзадаетсяспомощьютаблицы.
config = Table[{i, r}, {i, r, r + n}];
Шаг1b.ВычисляемквадратдлиныначальногоББС.
squaredist = n^2
68
Шаг2.Случайнымобразомвыбираемприращениешага идобавляем к последнемуэлементув
newpt = Last[config] + choice[[Random[Integer, {1, 4}]]];
config, чтобыполучитьновоеположениешага.
Шаг3. newpt сравниваетсяс config, чтобыпроверитьнесовпадаетли онслюбымшагом
MemberQ[Rest[config], newpt]
config, кромепервогошага:
Если произошло пересечение,то config переписывается задом напе‐ ред,иконечнаяББСконфигурациязаписываетсявconfig2.
config2 = Reverse[config]
Если пересечения нет,топервыйшаг config удаляется, newpt добав‐ ляетсякрезультату,иноваяББСконфигурациязаписываетсяв
config2 = Append[Rest[config], newpt]];
path.
Этитрифрагментаможнообъединитьвусловнуюфункцию:
If[MemberQ[Rest[config], newpt], config2 = Re­verse[config], config2 = Append[Rest[config], newpt]];
Шаг4.ПолучаемновуюконфигурациюББС:
config = config2;
ВычисляемновуюдлинуББСидобавляетсяк squaredist:
squaredist += Plus @@ ((First[config] – Last[config])^2);
Можнообъединитьшаги2–4какчастьпрограммы:
snake := (choice = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}}; newpt = Last[config] + choice[[Random[Integer, {1, 4}]]]; If[MemberQ[Rest[config], newpt], config2 = Reverse[config], config2 = Append[Rest[config], newpt]]; config = config2; )
Шаг5.Длятого,чтобывыполнитьmшагов,организуемциклспомощью командыDo:
Do[snake, {m}]
Шаг6.ВычисляемсреднеквадратичнуюдлинуББС:
N[squaredist/(m + 1)]
69
▪Результаты
1
0510152
051
Важнымэлементомпрограммыявляется визуализациявычислительно‐ гоэксперимента.Основнымэлементомкартинкиявляетсямассивsquare– этот двумерный массив задает поле,покоторомубудет«скользить змея». Вподпрограмме надо задать ячейки, которые содержат звенья цепи,чтобы нарисункеихобозначитьдругимцветом.Крометого,необходимокорректно задатьразмерымассиваsquareиположениемассиваconfigвнем,чтобы «змейка»не«выскользнула»запределыsquare.
Из вышеприведенных фрагментов можносоставить программу,три возможныхрезультатакоторойприведеныввидеграфиковдляm=100:
25
25
25
20
15
10
5
0
0 5
0 15 20
20
15
10
5
0
20
15
10
5
0
0
0 15 20
Существует еще один очень эффективный, динамичный алгоритм для генерирования d-размерного ББС в с заданным числом шагов, кото­рый называется алгоритмом центра. Принцип его действия заключа­ется в выборе одной из d-симметричных операций (поворота или отра­жения) на d-размерной поверхности. Далее ББС делится на две части в случайной точке, называемой центром, и над второй половинкой произ­водится выбранная ранее операция. Для двумерного пространства дос-
таточно взять только три операции симметрии: вращения на –90, +90 и 180.
На рис 4.11 первая картинка – начальная конфигурация ББС, со­стоящей из четырех звеньев, а вторая, третья и четвертая картинки – для
конфигураций после поворотов на втором шаге на +90, –90 и 180 со­ответственно.
Рис. 4.11. Иллюстрация операций для алгоритма центра
Глядя на пример (рис. 4.11), мы можем записать алгоритм для вы­полнения действия поворота для любой ББС.
70
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]