Детализация
Заголовок выражения
Заголовок выражения f[x, y, ...] - это f, заголовки атомарных объектов называются их типами.
In[23]:=Head[f [х, у] ] Out[23] = f In[24]: = Head[x + у] Out[24] = Plus
Типы атомарных объектов:
- целые числа - Integer ;
- рациональные числа - Rational ;
- вещественные числа - Real ;
- комплексные числа - Complex ;
- символы - Symbol ;
- строки - String.
In[25]:= {Head[l] , FullFormfl]} {Head[l/2], FullForm[l / 2] } {Head[l.l], FullForm[l.l] } {Head[l + i], FullForm[l+ i]} {Head[x], FullForm[x]} {Head["abc"], FullForm["abc"]} Out[25]= {Integer, 1} Out[26]= {Rational, Rational [1, 2]} Out[27]= {Real, 1.1'} Out[28] = {Complex, Complex[l, 1]} Out[29] = {Symbol, x} Out[30]= {String, "abc"}
Интересный пример. Сравните:
In[31] : = {Head [x + i] , FullForm [x + u] } Out[31]= {Plus, Plus [Complex [0, 1], x] }
Замена заголовка. Осуществляется командой Apply или @@:
In[32]: = Apply[g, f[x,у]] Out[32] = g[x, у] In[33]: = Head[{a,b,с,d}] Out[33] = List In[34]: = Apply[Plus,{a,b,c,d}] Out[34] =a+b+c+d In[35]:=Plus@@{a,b,c,d} Out[35] = a + b + с + d
Команда Apply не действует на атомарных объектах:
In[36]: = х = Apply [List, l] Out[36] = 1 In[37]: = Head[x] Out[37] = Integer In[38]: = х = Apply [List, 1/2] Out[38] = 1/2 In[39]:=Head[x] Out[39]= Rational In[40]: = x = . In[41]:=Head[x] Out[41] = Symbol
Преобразование типов атомарных объектов
Важно уметь переходить от одного типа к другому.
Команда IntegerString[integer] преобразует целое число integer в строку (знак игнорируется):
In[42]:= IntegerString [25 361] // InputForm Out[42] = "25361"
Команда FromDigits[str] преобразует строку цифр в целое число, а также список цифр в целое число. Чтобы преобразовать число в список цифр, можно использовать команду IntegerDigits:
In[43] :=FromDigits ["43476"] FromDigits[{5, 2, 3, 8}] IntegerDigits[374 632] Out[43] = 43476 Out[44] = 52 3 8 Out[45]={3, 7, 4, 6, 3, 2}
Команда ToString[expr] преобразует выражение expr в строку. При этом форму вывода form можно указать в качестве второго аргумента: ToString[expr,form]:
In[46] := ToString [x2] ToString[x2] // InputForm Out[46] = 2 Out[47] = "2\nx" In[48]:=ToString [x2 , InputForm] ToString[x2, InputForm] // InputForm Out[48]=x^2 Out[49] ="х^2"
Команда ToExpression[str] преобразует строку в соответствующее выражение. Модифицированная команда ToExpression[str,form] преобразует строку в выражение, используя при этом правило вывода form:
In[50] := ToExpression [ "Sin [x] "] Out[50]= Sin [x] In[51] := ToExpression [ "sin (x) " , TraditionalForm] Out[51] = Sin [x] In[52] := ToExpression [ "\sin (x) ", TeXForm] Out[52] = Sin [x]
Команда Symbol[str] превращает строку в символ:
In[53]:= Symbol ["х"] Out[53]=x
Строка из 10 символов:
In[54] := Table [Symbol ["x" <> ToStringfi]] , {i, 10}] Out[54]={xl, х2, хЗ, х4, х5, хб, х7, х8, х9, х10} In[55] := Table [ToExpression ["х" <> ToString[i] ] , {i, 10}] Out[55]={xl, x2, хЗ, х4, х5, хб, x7, x8, x9, x10}
Команда SymbolName[symbol] превращает символ symbol в строку - имя этого символа:
In[56] := SymbolName [х] // InputForm Out[56] = "x"
Доступ к фрагментам выражения
Доступ к фрагментам выражения осуществляется как к элементам списка (заголовок Head - нулевой элемент):
Patt::partw: Part 4 of x + y-wz does not exist. >>