Mathematica/Osnovni ukazi v Mathematici/Vzorci

Iz MaFiRaWiki

Mathematica pri svojem delu uporablja prepisovalna pravila in vzorce. Mathematica izraz izračuna tako, da uporablja prepisovalna pravila, dokler se izraz spreminja.


Vsebina

VZORCI


Vzorci


a - ustreza mu konstanta a

_ - ustreza mu poljuben izraz (natanko en izraz)

__ - ustreza mu poljubno neprazno zaporedje izrazov (več izrazov)

___ - ustreza mu poljubno (lahko tudi prazno) zaporedje izrazov

x_ - ustreza mu poljuben izraz, ki ga poimenujemo x

_h - ustreza mu izraz z glavo h (npr. x_Integer poljubno celo število)

x : v - x je izraz, ki ga predstavlja vzorec v (navadno je vzorec sestavljen, če je vzorec glava, lahko : izpustimo)

v | v1 - ustreza mu vzorec v ali vzorec v1

v : p - če argument v klicu funkcije, ki ustreza vzorcu v , izpustimo, ima privzeto vrednost p

v ? f - izraz, ki ustreza vzorcu v in na katerem ima funkcija f vrednost True (npr. x_?PrimeQ poljubno praštevilo)

v /; p - izraz, ki ga predstavlja vzorec v in pri katerem je izpolnjen pogoj p (/; ni isto kot /.)

Vse zgoraj naštete vzorce lahko tudi poljubno kombiniramo.


Primeri

Npr1:

f[x_]:= 2x
f[2]

vrne

4

toda

f[2,3]

vrne kar vhodni podatek

f[2,3]


Npr2:

f1[x_, y__] := x + y
f1[a,b,c]

vrne

a + b + c

toda

f1[x]

vrne kar vhodni podatek

f1[x]

saj y__ zahteva poljubno neprazno zaporedje izrazov


Npr3:

f2[x_, y___] := x + y
f2[a,b,c]

vrne

a + b + c

in

f2[a]

vrne

a


Npr4:

f3[x_Integer] := x + 1
f3[12]

vrne

13


Npr5:

f4[x_, y__:5] := x + y
f4[a,b,c]

vrne

a + b + c

toda

f4[a]

vrne

5 + a


Tipi izrazov v vzorcih


splošno: x_h - izraz z glavo h


x_Integer - celo število oz. izraz z glavo Integer

x_Real - realno število oz. izraz z glavo Real

x_Complex - kompleksno število oz. izraz z glavno Complex

x_List - seznam oz. izraz z glavo List

x_Symbol - simbol oz. izraz z glavo Symbol


Ukazi in funkcije


MatchQ

MatchQ[i,v] je vgrajeni ukaz, ki vrne True, če izraz i ustreza vzorcu v

Npr:

MatchQ[1.222,_Real] 

vrne

True

oz.

MatchQ[2, _Real]

vrne

False


Count

Count[list,form] je ukaz, ki vrne število elementov v seznamu list, ki se ujemajo z vzorcem form

Npr:

Count[{1, 12.21, 7.45, {}, 4}, _Integer]

vrne

2


Position

Position[list,form] je ukaz, ki vrne mesto elementov v seznamu list, ki se ujemajo z vzorcem form

Npr:

Position[{1, 12.21, 7.45, {1.1, 2}, 4}, _Integer]

vrne

{{1}, {4, 2}, {5}}


Select

Select[s,f] je ukaz, ki vrne seznam elementov iz seznama s, za katere je vrednost funkcije f enaka True

Npr:

Select[{1, 12.21, 7.45, {}, 4}, Positive]

vrne

{1, 12.21, 7.45, 4}


Cases

Cases[list,form] je ukaz, ki vrne elemente seznama list, ki se ujemajo z vzorcem form

Npr:

Cases[ {3, 4, x, x^2, x^3}, x^_ ] 

vrne

{x2,x3}


Cases[expr,v->i] je ukaz, ki najde elemente izraza expr, ki se ujemajo z vzorcem v, ter vrne rezultat, ki se nanasa na i

Npr:

Cases[{1, x^2, E^3, 2^t^3, 4}, _^n_ -> n]

vrne

{7,7,7}

PREPISOVALNA PRAVILA


Pravila (Rules) so v Mathematici zapisana v obliki v -> i , kjer je v vzorec in i izraz. Pravila pri uporabi lahko naštejemo v seznamu pravil. Mathematica uporabi prvo pravilo, katerega vzorec se prilagaja nekemu izrazu.

Mathematica pozna takojšnja pravila v -> i in zakasnjena pravila v :-> i .


expr/.v -> i je ukaz, ki izraze v expr, ki ustrezajo vzorcu v, nadomesti z izrazom i

Npr:

x+y/.x->3  

vrne

3+y


expr/.{l1->d1,l2->d2,...} je ukaz, ki uporabi zaporedje prepisovalnih pravil na vsakem delu izraza expr, ki se ujema z vzorci

Npr:

x+y/.{x->a,y->b} 

vrne

a+b

oz.

{3, 6, 7, j, 1, 3, 7} /. {3 -> 4, 6 -> a}

vrne

{4, a, 7, j, 1, 4, 7}


expr /. v :-> i je ukaz, ki izraze v expr, ki ustrezajo vzorcu v, zakasnjeno nadomesti z izrazom i

Npr:

seznam = {a, {b, a}, a, b, {b, {b, b}, c}, b}
n = 1; seznam /. b :-> n++   

vrne

{a, {1, a}, a, 2, {3, {4, 5}, c}, 6}


expr //. v -> i je ukaz, ki izraze v expr, ki ustrezajo vzorcu v, nadomesti z izrazom i. To ponavlja toliko časa, dokler se izraz expr spreminja.


Glej tudi

Osebna orodja