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

Mathematica как язык программирования

Объектно-ориентированное программирование

Задание трех свойств объекта h.

h/:h[x_]+h[y_]:=hplus[x,y]
h/:p[h[x_],x_]:=hp[x]
h/:f_[h[x_]]:=fh[f,x]

Пример использования данного выше определения для объекта h.

h[a]+h[b]+f[h[r]]+h[h[x]]
fh[f,r]+fh[h,x]+hplus[a,b]
Clear[h]

Программирование, ориентированное на работу со строчными переменными

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

Смешанные методы программирования

Наиболее мощные операторы системы Mathematica объединяют в себе различные методы программирования.

Position[{1,2,3,4,5}/2,_Integer]
{{2},{4}}
MapIndexed[Power,{a,b,c,d}]
{{a}, {b2}, {c3}, {d4}}

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

{100000,50000,25000,12500,6250,3125,3125}
ReplaceList[{a,b,c,d,e},{x__,y__}->{{x},{y}}]
{{{a},{b,c,d,e}},{{a,b},{c,d,e}},{{a,b,c},{d,e}}, {{a,b,c,d},{e}}}

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

Дюжина способов определить факториал.

f=Factorial
f[n_] := n!
f[n_] := Gamma[n-1]
f[n_] := n f[n-1] ; f[1] = 1
f[n_] := Product[i, {i, n}]
f[n_] := Module[{t = 1}, Do[t = t*i, {i, n}]; t]
f[n_] := Module[{t = 1, i}, For[i =1, i <=n, i++, t *= i]; t]
f[n_] := Apply[Times, Range[n]]
f[n_] := Fold[Times, 1, Range[n]]
f[n_] := If[n == 1, 1, n f[n-1]]
f = If[#1 == 1, 1, #1 #0[#1 - 1]]&
f[n_] := Fold[#2[#1]&, 1, Array[Function[t, #t]&, n]]

Эта команда сбрасывает значения, приписанные f.

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