Детализация
Выражения - универсальный конструктор в Mathematica
Напомним, что f[x,y,...] - универсальный (канонический) вид выражения, где x, y,... могут быть выражениями или атомарными объектами (числами, символами, строками).
Последовательность аргументов x, y, ... называется Sequence.
In[1] :=f [Sequence [x,у,z] ] Out[1]=f[x,y,z] In[2]:=f [x, Sequence [y,z],w] Out[2] = f [x,y,z,w]
f называется заголовком ( Head ) выражения f[x, y, ...]. Заголовок f может быть как символом, так и более сложным выражением (в приведенных ниже примерах заголовки - это f[2] и (a+b) ):
In[3]:=f [2][х,у] (а + Ь)[х] Out[3] =f[2][х, у] Out[4] =(а+b)[х]
Еще пример: заголовком является InterpolatingFunction[{{0.,3.}},<>] (команда First - взятие первого элемента списка):
In[5]:= у/.First[NDSolve[{y''[х] == -у[х], у[0] == у'[0]==2} , y,{х,0,3}]] f[x] f[2.3] Plot[f[x],{x,0,3}] Out[5] =InterpolatingFunction [{{0.,3.}}, <>] Out[6] =InterpolatinqFunction [{f0.,3.}}, <>][х] Out[7] =0.158858
In[9] := Clear [f]
Команда FullForm позволяет представить выражение в каноническом виде:
Out[10] = Times[Power[ Plus[a,Power[Plus [b, Times[-1, c]],Rational[1, 2]]], -1],Plus[x,y,Times[-1,w,z]]]
Выражения имеют структуру дерева:
Список, как частный случай выражения, тоже имеет структуру дерева:
In[12]:=TreeForm[{a,{b,с},d}]
Если в одной скобке стоит последовательность выражений , разделенных точкой с запятой, то на самом деле там имеется одно выражение . Например, последовательность выражений
In[13]:=х=2; у=х2; y 0ut[14]=4
представляет собой одно выражение
In[15]:=CompoundExpression[х=2,у=х2,у] Out[15]=4 In[16]:=Clear[x,у]
Уровни выражения expr
Каждое выражение разбито на уровни. Посмотреть на них можно с помощью команды Level[expr,levelspec], где levelspec описывает интересующие уровни:
levelspec ={n} - только n -й уровень (нулевой уровень - само выражение):
levelspec = n - все уровни от 1-го до n -го (нулевой уровень не включен):
levelspec = {n, m} - уровни с номерами между n и m:
levelspec = {n, Infinity} - уровни с номерами, не меньшими, чем n: