Ćwiczenia 1

Atomy

1
"abc321"
a1gFG
1.1

Wyrażenia

f[a1,a2,1.1,"abc"]
f[a1,g[a2,h[a3]],a4]
f[]

Wyrażenia 2

Plus[a,b]
Times[a,b]
Sin[a]
Complex[1,2]

Wyrażenia 3, FullForm

1/2
2+3I

FullForm[1/2]

FullForm[2+3I]

TreeForm - sposób reprezentowania wyrażeń w notatniku

TreeForm[f[a1,g[a2,h[a3]],a4]]

Syntactic sugar (Lukier składniowy? Ozdobniki składni?)

a+b
a*b
a b
a^b

FullForm[a+b]

FullForm[a*b]

FullForm[a b]

FullForm[a^b]

Ewaluacja (przetwarzanie) wyrażeń

1+a

Sin[1.1]

a+a+a

a+b

f[1+2,a+a]

Trace[f[1+2,a+a]]

Sin[a+a]

1["a"]

TreeForm[(a+a)[b+b]]

Trace[(a+a)[b+b,c+c]]

Wstrzymanie ewaluacji

Unevaluated[1+2]

Unevaluated[a a]

FullForm[Unevaluated[a a]]

Evaluate[Unevaluated[a a]]

TreeForm[a+a]

TreeForm[2a]

Inny sposób - Hold

FullForm[Hold[a+a]]

Release[Hold[a+a]]

Evaluate[Hold[a+a]]

Release[Unevaluated[a+a]]

Plus[Unevaluated[a+a],a]

Hold[a+a]+a

Unevaluated[a+a]+a

Dostęp do składowych wyrażenia

f[a1,a2,a3]

Part[f[a1,a2,a3],0]

Przypisywanie wyrażeń do symboli

a=f[a1,a2,a3]

FullForm[Hold[a=f[a1,a2,a3]]]

a=f[a1[a3],a2]

b=Part[a,1]

Part[b,1]

Part[a,1,1]

a[[2]]

f[a1[a3],a2][[1,1]]

(a+b)[[2]]

Clear[a,b]

Operacji na wyrazeniach ciąg dalszy

a=f[a1,a2,a3,a4,a5,a6]

Drop[a,3]

Take[a,3]

Take[a,{2,4}]

First[a]

First[Rest[Rest[Rest[a]]]]

RotateLeft[a,2]

RotateRight[a]

Partition[a,2]

Append[a,a10]

Prepend[a,a0]

Oraz wiele innych!

Działanie funkcji na listach

l={1,2,3,4}

FullForm[l]

Sin[l]

Attributes[Sin]

Attributes[Plus]

Plus[Plus[b,a],c]

(l x)^2

l2=(l x)^2+2l-3

l2=x^l+l

Select[Names["*"],MemberQ[Attributes[#],Listable]&]

D[{f[x],g[x],h[x]},x]

l2=l2^2

Expand[l2]

D[l2,x]

Integrate[l2,x]

Generowanie list

Table[2+x,{4}]

Table[(x+i)^i,{i,5}]

Table[i^i,{i,1,2,1/2}]

a=Table[i/j,{i,1,3},{j,1,3}]

Table[i,{i,1,4,1/2}]

Range[1,4,1/2]

Range[3,6]

b=Range[1,10]
c=Reverse[b]

1/a

b c

1/b

a*a

FullForm[Hold[a.a]]

Hold[Dot[a,a]]

MatrixForm[M=Table[A[i,j],{i,1,2},{j,1,2}]]

FullForm[M]

M.M

MatrixForm[M.M]

MatrixForm[M M]

M^3

MatrixForm[MatrixPower[M,3]]

MatrixForm[Outer[Power,{a1,a2},{b1,b2}]]

Inner[f,{a1,a2},{b1,b2},g]

Rest[Range[10]]

Przeplatanie (Thread)

Clear[a,b]

Thread[f[{a,b,c},z,{1,2,3},q]]

{a,b}=={1,2}

FullForm[Hold[Thread[{a,b}=={1,2}]]]

Mapowanie, podmienianie nagłówków

Clear[c]

Map[Sin,f[a,b,c]]

Clear[a]

a=x^3+(1+z)^2

aa=Map[Sin,a,{-1}]

TreeForm[a]

TreeForm[aa]

ff=If[NumberQ[#],Style[#,Directive[Blue,Bold]],#]&

Map[ff,a]

f/@{a1,a2,a3}

Apply

TreeForm[a]

Apply[f,g[a1,a2,a3]]

Apply[Times,a1+a2+a3]

Apply[ZZ,a,{0,-1}]
TreeForm[%]

Apply[Plus,{1,2,3,4}]

Plus@@{1,2,3,4}

Through[{Sin,Cos,Tan}[s]]

Through[{Sin,Cos}[{a1,a2}]]

Podmiany (Replace)

a

a/.Power->z

FullForm[Hold[b->c]]

TreeForm[a]

TreeForm[a/.Plus->ZZ]

TreeForm[a/.Power->ZZ/. 2->GG]

Pułapka!

FullForm[Hold[f/.2->g]]

FullForm[Hold[f/. 2->g]]

Clear[part]

part[l_,n_Integer/;n>1]:=part[Rest[l],n-1]
part[l_,1]:=First[l]
part[l_,n__]:=part[part[l,First[{n}]],Sequence@@Rest[{n}]]

part[{a,b[s[w,h]],c},2,1,2]

Clear[ChaosMap]
ChaosMap[x_,n_]:=N[x/2+Switch[n,1,{0,1},2,{1/2,0},3,{-1/2,0}]]

ListPlot[FoldList[ChaosMap,{0,0},RandomInteger[{1,3},1000]],PlotStyle->PointSize[.001]]