Иллюстрированный самоучитель по Mathematica 3

Написание программ в системе Mathematica

Язык программирования высокого уровня системы Mathematica позволяет Вам писать сложные программы быстрее, чем когда-либо прежде.

Даже состоящая всего из одной строки программа системы Mathematica может выполнять сложные операции.

Эта программа моделирует одномерное случайное блуждание.

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]]]];

Богатство языка программирования системы Mathematica делает простой реализацию сложнейших алгоритмов.

Это программа для моделирования одного шага эволюции клеточной системы.

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 зачастую являются прямой трансляцией теоретических положений справочной литературы.

Здесь вводятся необходимые определения для расчета импеданса электрической цепи.

Иллюстрированный самоучитель по Mathematica 3 › Написание программ в системе Mathematica

Использование данных выше определений.

Иллюстрированный самоучитель по Mathematica 3 › Написание программ в системе Mathematica

Пример электрической схемы, заданной при помощи символической спецификации.

Иллюстрированный самоучитель по Mathematica 3 › Написание программ в системе Mathematica

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.