Эта программа моделирует одномерное случайное блуждание.
RandomWalk[n_]:=NestList[(#+(-1) ^Random[Integer])&,0,n]
|
График, демонстрирующий первые 200 шагов случайного блуждания.
ListPlot[RandomWalk[200],PlotJoined->True];
|
Ясность программ системы Mathematica позволяет легко модифицировать их для более общих случаев.
Эта программа моделирует случайное блуждание в пространстве размерности d.
RandomWalk[n_,d_]:=NestList[(#+(-1) ^Table[Random[Integer],{d}])&,Table[0,{d}],n] |
График трехмерного случайного блуждания.
Show[Graphics3D[Line[RandomWalk[1000,3]]]];
|
Это программа для моделирования одного шага эволюции клеточной системы.
LifeStep[a_List] := MapThread[If[(#1 == 1 && #2 == 4) || #2 == 3, 1, 0]&, {a, Sum[RotateLeft[a, {i, j}], {i, -1, 1}, {j, -1, 1}]}, 2] |
А это пример оптимизированной программы, которая оперирует со списками живых клеток.
LifeStep[list_] := With[{u=Split[Sort[Flatten[Outer[Plus,list,N9,1] ,1]]]}, Union[Cases[u,{x_,_,_}->x], Intersection[Cases [u,{x_,_,_,_}->x],list]]] N9=Flatten[Array[List,{3, 3},-1], 1] ; |
Система Mathematica позволяет легко создавать программы, состоящие из нескольких компонент.
Здесь приведены составляющие программы, моделирующей поведение клеточных систем
CenterList[n_Integer]:=ReplacePart[Table[0, {n}], 1, Ceiling[n/2]] ElementaryRule [num_Integer] := IntegerDigits[num, 2, 8] CAStep[rule_List, a_List] :=rule[[ 8 - (RotateLeft[a] + 2 (a + 2 RotateRight[a])) ]] CAEvolveList[rule_List, init_List, t_Integer] :=NestList[CAStep[rule, #]&, init, t] CAGraphics[history_List] :=Graphics[Raster[1 - Reverse[history]], AspectRatio -> Automatic] |
Пример работы программы.
Show[CAGraphics[ CAEvolveList[ElementaryRule[30], CenterList[101], 50]] ];
|
Mathematica имеет компилятор для оптимизации программ, которые работают со списками и числами.
CAStep = Compile[{{rule, _Integer, 1}, {a, _Integer,1}}, rule[[ 8 - (RotateLeft[a] + 2 (a + 2 RotateRight[a])) ]]] |
Программы системы Mathematica зачастую являются прямой трансляцией теоретических положений справочной литературы.
Здесь вводятся необходимые определения для расчета импеданса электрической цепи.
![]() |
Использование данных выше определений.
![]() |
Пример электрической схемы, заданной при помощи символической спецификации.
![]() |
Обе эти программы аппроксимируют Золотое Сечение с точностью до k знаков.
![]() {1.6180339887498948482,1.6180339887498948482, 1.6180339887498948482} |
Эта программа соответствует недавно открытой приближенной формуле для нахождения количества простых чисел, меньших заданного числа.
![]() |
Сравнение приближенного результата с точным значением, полученным с помощью встроенной функции PrimePi.
![]() {168, 168} |
Это программа, отвечающая модели Kohmoto для спектра энергии квантовой частицы в одномерном квазипериодическом потенциале.
FareySequence[q_]:=Apply[Union,Array[Range[#-1]/#&,q]]
|
Пример работы программы.
Show[Graphics[SpectrumData /@ FareySequence[20]]] -Graphics- |