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

UptoLike

Теперь создадим список с правильной нумерацией (но, возможно, с промежутками в
числах), несколько раз применив правила преобразования к списку ulp.
correctlabels=ulp//. relabelrules1
На Шаге 6 создадим набор правил преобразования, используя список, получившийся при
удалении дубликатов из маркированного списка.
relabelrules2=Thread[Union[correctlabels] ->
Range[Length[Union[correctlabels]]]]
Правильная маркировка матрицы получается посредством применения relabelrules1 к ul, а
затем посредством применения relabelrules2 к полученному результату.
ufinal=ul//. relabelrules1/. relabelrules2
На основании этого программного кода, используя процедуру Module с начальными
условиями {uup := u[[q-1, k]], uback := u[[q, k-1]],
ulup := ul[[q-1, k]], ulback := ul[[q, k-1]]}
,
можно создать функцию ClusterLabel[r_List]:=… .
для цифровой маркировки кластеров.
Запуск программы
Мы можем использовать программы ClusterLabel и SitePercolation , чтобы создать и
маркировать, например, такой случайный участок перколяционной системы:
r=SitePercolation[0.493,20];
TableForm[cl=Reverse[ClusterLabel[r]]]
Можно показать графический результат в черно - белом варианте с эффектом градиента,
используя команду ListDensityPlot. Это может быть выполнено следующей программой:
ShowPercolation3[cluster_List,opts___]:=
ListDensityPlot[cluster,opts,
ColorFunction(GrayLevel[Abs[1-#]]&),FrameFalse]
ShowPercolation3[ClusterLabel[r]]
Ниже приведены результаты маркировки для решетки 20х20 для p=0.5 и p=0.7
96