Mathematica объединяет в себе самые разные методы программирования, что позволяет Вам всегда применять в данный момент наиболее подходящие из них.
z=a; Do[Print[z*=z+i],{i,3}] a (1+a) a (1+a) (2+a (1+a)) a (1+a) (2+a (1+a)) (3+a (1+a) (2+a (1+a))) Clear[z] |
Многие операции автоматически работают со списками.
1 + {a, b, c}2 {1 + a2, 1 + b2, 1 + c2} |
Table[ij, {i, 4}, {j, i}] {{1},{2,4},{3,9,27},{4,16,64,256}} |
Объединение вложенных списков.
Flatten[%] {1,2,4,3,9,27,4,16,64,256} |
Разбиение предыдущего списка на подмножества длины 2.
Partition[%,2] {{1,2},{4,3},{9,27},{4,16},{64,256}} |
NestList[f,x,4] {x,f[x],f[f[x]],f[f[f[x]]],f[f[f[f[x]]]]} |
Здесь символ # является областью, замещаемой аргументом функции.
NestList[(1 + #)2 &, x, 3] |
p[x_+y_]:=p[x]+p[y] p[a+b+c] p[a]+p[b]+p[c] |
Символ _ замещает одно единственное выражение; символ __ замещает любую последовательность выражений.
s[{x__,a_,y__},a_]:={a,x,x,y,y} s[{1,2,3,4,5,6},4] {4,1,2,3,1,2,3,5,6,5,6} Clear[p, s] |
Задание трех свойств объекта 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 объединяют в себе различные методы программирования.
Position[{1,2,3,4,5}/2,_Integer] {{2},{4}} |
MapIndexed[Power,{a,b,c,d}] {{a}, {b2}, {c3}, {d4}} |
{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}}} |
Дюжина способов определить факториал.
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] |