Mathematica/Osnovni ukazi v Mathematici/Seznami in matrike

Iz MaFiRaWiki

Vsebina

ZGRADIMO SEZNAM

Seznam lahko zgradimo z naštevanjem elementov ali pa uporabimo katero izmed že vgrajenih funkcij, ki skonstruira seznam.


Naštevanje

Seznam zgradimo tako, da željene elemente naštejemo med zavitimi oklepaji.

Npr:

seznam={aa,1,c,{f,g},{},x+1,11,4,Pi}

vrne

{aa,1,c,{f,g},{},x+1,11,4,Pi}

Lahko pa uporabimo tudi funkcijo List. Tedaj seznam sestavimo tako, da elemente naštejemo med oglatimi oklepaji funkcije List.

Npr:

seznam1=List[a,b,c]

vrne

{a,b,c}


Table

Table[expr, {imax}] je vgrajeni ukaz, ki naredi seznam, sestavljen iz imax kopij izraza expr

Npr:

Table[2x + 1, {3}]

vrne

{2x+1, 2x+1, 2x+1}


Table[expr, {i, imax}] je vgrajeni ukaz, ki naredi seznam vrednosti izraza expr, ko i teče od 1 do imax

Npr:

Table[x^2 + 2x + 1, {x, 5}]

vrne

{4, 9, 16, 25, 36}


Table[expr, {i, imin, imax}] je vgrajeni ukaz, ki naredi seznam vrednosti izraza expr, ko i teče od najmanjše svoje vrednosti imin do največje imax


Npr:

Table[2x + 3, {x, 3, 10}]

vrne

{9, 11, 13, 15, 17, 19, 21, 23}


Table[expr, {i, imin, imax, k}] je vgrajeni ukaz, ki naredi seznam vrednosti izraza expr, ko i teče od imin do imax, in sicer po korakih za k.

Npr:

Table[2x + 3, {x, 3, 10, 2}]

vrne

{9, 13, 17, 21}

Seznam je torej sestavljen iz vsakega drugega elementa seznama iz prejšnjega primera, ko namreč x preteče vsa števila med 3 in 10.


Range

Range[n] je vgrajeni ukaz, ki vrne seznam števil od 1 do n

Npr:

Range[4]

vrne

{1,2,3,4}


Range[n1,n2] je vgrajeni ukaz, ki vrne seznam števil med n1 in n2

Npr:

Range[-4,5]

vrne

{-4,-3,-2,-1,0,1,2,3,4,5}


Array

Array[a,n] je ukaz, ki vrne seznam dolžine n oblike {a[1],a[2],...}, kjer je a neka funkcija, ki jo uporabimo na elementih 1,2,...,n

Npr:

Array[f, 3]

vrne

{f[1], f[2], f[3]}


DELI SEZNAMA


First

First[list] je vgrajeni ukaz, ki vrne prvi element seznama list

Npr:

First[{Pi,{2,f},9,aa}]

vrne

π

Poleg ukaza First pa lahko uporabimo tudi ukaz list[[1]], ki ima ekvivalenten pomen kot ukaz First

Npr:

{Pi,{2,f},9,aa}[[1]]

nam prav tako vrne element

π


Last

Last[list] je vgrajeni ukaz, ki vrne zadnji element seznama list

Npr:

Last[{Pi,{2,f},9,aa}]

vrne

aa


Enak pomen ima tudi ukaz list[[-1]]

Npr:

{a,5h,22,{0,5}}[[-1]]

vrne

{0,5}


Part

Part[list,n] ali list[[n]] sta ukaza, ki vrneta n-ti element seznama list

Npr:

Part[{aa, 1, c, {f, g}, {}, x + 1, 11, 4, Pi},3]

vrne

3


Part[list,-n] ali list[[-n]] vrneta n-ti element seznama od konca

Npr:

Part[{aa, 1, c, {f, g}, {}, x + 1, 11, 4, Pi},-3]

vrne

11


Part[list,{n1,n2,...}] ali list[[{n1,n2,...}]] sta ukaza, ki vrneta seznam elementov, ki so na pozicjah n1,n2,...

Npr1:

Part[{Pi,2,6,9,15,4,d,2x,aa,0},{2,4,1,7}]

vrne

{2,9,Pi,d}

Npr2:

{5, 8, 6, 9}[[ {3, 1, 3, 2, 4} ]]

vrne

{6, 5, 6, 8, 9}


Take

Take[list,n] je ukaz, ki vrne prvih n elementov seznama list

Npr:

Take[{aa, 1, c, {f, g}, {}, x + 1, 11, 4, Pi},4]

vrne

{aa, 1, c, {f, g}}


Take[list,-n] je ukaz, ki vrne zadnjih n elementov seznama list

Npr:

Take[{aa, 1, c, {f, g}, {}, x + 1, 11, 4, Pi},-2]

vrne

{4, Pi}


Take[list, {m,n}] je ukaz, ki vrne seznam elementov, ki so v seznamu list med elementoma na pozicijah m in n (vključno z njima)

Npr:

Take[{aa, 1, c, {f, g}, {}, x + 1, 11, 4, Pi},{2,5}]

vrne

{1, c, {f, g}, {}}


Take[list, {m,n,s}] je ukaz, ki vrne vsak s-ti element seznama elementov, ki so v seznamu list med elementoma, ki sta na pozicijah m in n

Npr: Naj bo

list = {a,b,c,d,e,f,g}

Ukaz

Take[list, {3,7,2}]

vrne seznam

{c, e, g} 

Rest

Rest[list] vrne seznam list brez prvega elementa

Npr:

Rest[{2,34,2t,b,da,4}]

vrne

{34, 2t, b, da, 4}


Most

Most[list] je ukaz, ki vrne seznam list brez zadnjega elementa. Ukaz Most je ekvivalenten ukazu Drop[list, -1].

Npr:

Most[{1,2,3,4}]

vrne

{1,2,3}


Drop

Drop[list,n] je ukaz, ki vrne seznam list brez prvih n elementov

Npr:

Drop[{a,b,c,d,e},2]

vrne

{c,d,e}


Drop[list,-n] je ukaz, ki vrne seznam list brez zadnjih n elementov

Npr:

Drop[{1,2,3,4,5}, 3]

vrne

{1,2}


Drop[list, {n}] je ukaz, ki vrne seznam list brez n-tega elementa

Npr:

Drop[{1,2,3,4,5,6,7,8}, 5]

vrne

{1,2,3,4,6,7,8}


Drop[list,{m,n}] je ukaz, ki vrne seznam brez elementov med m in n

Npr:

Drop[{a,b,c,d,e},{2,4}]

vrne

{a,e}


Drop[list, {m,n,s}] je ukaz, ki vrne seznam elementov brez vsakega s-tega elementa elementov med pozicijama m in n

Npr:

Drop[{1, 2, 3, 4, 5, 6, 7, 8}, {2, 6, 2}]

vrne

{1, 3, 5, 7, 8}


Select

Select[list,test] je vgrajeni ukaz, ki vrne elemente, za katere je pogoj test[element] resničen (True). Pogoj test je zapisan v obliki anonimne funkcije.

Npr:

Select[{1,3,6,8,10},# > 5&] 

nam vrne elemnte, ki so vecji od 5, tj.

{6,8,10}


Select[list,test,n] je ukaz, ki vrne prvih n elementov, za katere je pogoj test[element] resničen (True)

Npr:

Select[{2, 15, 1, a, 16, 17}, # > 4 &, 2]

vrne

{15, 16}


Pick

Pick[list,sel,form] je ukaz, ki vrne elemente seznama list, katerih skladni elementi iz seznama sel, se ujemajo z vzorcem form

Npr:

Pick[{a,b,c,d}, {1,0,1,1}, 1] 

vrne

{a,c,d}


Cases

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

Npr:

Cases[{2, x, 4}, _Integer] 

vrne

{2,4}


Cases[expr,lhs->rhs] je ukaz, ki najde elemente izraza oz. seznama expr, ki se ujemajo z vzorcem lhs, ter vrne rezultat, ki se nanaša na vzorec rhs

Npr:

Cases[{3, 4, x, x^2, x^3}, x^n_ -> n]

vrne

{2,3}


Cases[expr, pattern, levspec] je ukaz, ki vrne seznam, sestavljen iz vseh delov izraza oz. seznama expr, ki se ujemajo z vzorcem pattern na vseh nivojih, ki jih določa levspec.

Npr:

Cases[ {3, 4, x, x^2, x^3}, _Integer, Infinity]

vrne

{3, 4, 2, 3}


PREVERJANJE SEZNAMA IN MATRIK


Length

Length[list] je ukaz, ki vrne dolžino seznama list

Npr:

Length[{3, 4, x, x^2, x^3}]

vrne

5


VectorQ

VectorQ[expr] je ukaz, ki preveri, ali je izraz expr seznam, kar pomeni, da je vektor. V tem primeru vrne True, v nasprotnem primeru pa False

Npr:

VectorQ[{1,5,c,54}]

vrne

True

medtem ko

VectorQ[x^2+1]

vrne

False


MatrixQ

MatrixQ[expr] je ukaz, ki vrne True, če izraz expr predstavlja matriko, torej je expr seznam seznamov. V nasprotnem primeru vrne False

Npr:

MatrixQ[{{a, b}, {c, d}}]

vrne

True


Count

Count[list,form] je ukaz, ki vrne število pojavitev elementa form v seznamu list

Npr1:

Count[{1,d,4.5,aa,1,jz},1]

vrne

2

Npr2:

Count[{1,12.21,z,7.45,{},4},x_/;NumberQ[x]&&x<10] 

vrne

3


MemberQ

MemberQ[list,form] je ukaz, ki pove ali je vzorec form element seznama list ali ne. Če je torej vzorec v seznamu vrne True, sicer pa vrne False.

Npr1:

MemberQ[{a, b, c}, d]

vrne

False

Npr2:

MemberQ[{x^2, y^2}, x^_]

vrne

True


FreeQ

FreeQ[list,form] je ukaz, ki vrne False, če v seznamu obstaja kakšen element, ki se ujema z vzorecem form, sicer vrne True

Npr:

FreeQ[{x^2, x, 3}, x^_]

vrne

False

Npr1:

FreeQ[{1, 2, 3, 4, 5}, 6]

pa vrne

True


Position

Position[list,form] je ukaz, ki vrne mesta, na katerih se nahaja element form v seznamu list

Npr1:

Position[{a,a,4,5.7,xy},a]

vrne

{{1}, {2}} 

Npr2:

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

vrne

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


Select

Select[list,test] je vgrajeni ukaz, ki vrne elemente, za katere je pogoj test[element] resničen (True). Pogoj test je zapisan v obliki anonimne funkcije.

Npr:

Select[{1,3,6,8,10},# > 5&] 

nam vrne elemnte, ki so vecji od 5, tj.

{6,8,10}


Select[list,test,n] je ukaz, ki vrne prvih n elementov, za katere je pogoj test[element] resničen (True)

Npr:

Select[{2, 15, 1, a, 16, 17}, # > 4 &, 2]

vrne

{15, 16}


Cases

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

Npr:

Cases[2, x, 4, _Integer] 

vrne

{2,4}


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

Npr:

Cases[{3, 4, x, x^2, x^3}, x^n_ -> n]

vrne

{2,3}


OPERACIJE SEZNAMA


Prepend

Prepend[list,element] je vgrajeni ukaz, ki doda element na začetek seznama list

Npr:

Prepend[{a,b,c,d,e},1]

vrne

{1, a, b, c, d, e}


Append

Append[list,element] je vgrajeni ukaz, ki doda element na konec seznama list

Npr:

Append[{1,12.21,z,7.45,{},4},a]

vrne

{1, 12.21, z, 7.45, {}, 4, a}


Insert

Insert[list,element,i] je ukaz, ki vstavi element na i-to mesto seznama list

Npr:

Insert[{a, b, c}, x, 2]

vrne

{a,x,b,c}


Delete

Delete[list,i] je ukaz, ki izbriše element na i-tem mestu seznama list

Npr:

 Delete[{a, b, c, d}, 3]

vrne

{a,b,d}


ReplacePart

ReplacePart[list,new,i] je vgrajeni ukaz, ki zamenja element na i-tem mestu seznama list z new

Npr:

ReplacePart[{a, b, c, d}, x, 3]

vrne

{a,b,x,d}


ReplacePart[list,new,{i,j}] je ukaz, ki zamenja seznam list[[i,j]] z novim new

Npr:

ReplacePart[{{a, b}, {c, d}}, x, {1, 2}]

vrne

{{a, x}, {c, d}}


Join

Join[list1,list2,...] je ukaz, ki združi sezname list1, list2, ...

Npr:

Join[{a, b, c}, {x, y}, {t, u}]

vrne

{a, b, c, x, y, t, u}


Union

Union[list1,list2,...] je vgrajeni ukaz, ki združi sezname, odstrani ponavljajoče elemente in uredi rezultat

Npr:

Union[{a, b, c}, {x, y, a}, {t, u}]

vrne

{a, b, c, t, u, x, y}


Sort

Sort[list] je ukaz, ki uredi elemente seznama list v standardno postavitev

Npr:

Sort[{b, c, a}]

vrne

{a, b, c}


Reverse

Reverse[list] je vgrajeni ukaz, ki obrne vrstni red elementov v seznamu list

Npr:

Reverse[{a, b, c, x, y, t, u}]

vrne

{u, t, y, x, c, b, a}


RotateLeft

RotateLeft[list,n] je ukaz, ki prestavi vse elemente seznama za n mest levo

Npr:

RotateLeft[{1, 12.21, z, 7.45, {}, 4, a},2]

vrne

{z, 7.45, {}, 4, a, 1, 12.21}


RotateRight

RotateRight[list,n] je ukaz, ki prestavi elemente seznama za n mest desno


Npr:

RotateRight[{1, 12.21, z, 7.45, {}, 4, a},2]

vrne

{4, a, 1, 12.21, z, 7.45, {}}


SESTAVNO UREJANJE


Partition

Partition[list,n] je vgrajeni ukaz, ki razdeli seznam list na dele z n elementi

Npr:

Partition[{a,b,c,d,e,f}, 2]

vrne

{{a, b}, {c, d}, {e, f}}


Partition[list,n,d] je vgrajeni ukaz, ki razdeli seznam list na dele z n elementi, pri katerem ima vsak del d naslednjih elementov

Npr:

Partition[{a,b,c,d,e,f}, 3, 1] 

vrne

{{a,b,c},{b,c,d},{c,d,e},{d,e,f}}


Flatten

Flatten[list] je ukaz, ki 'splošči' vse podsezname v seznamu list

Npr:

Flatten[{aa, 1, c, {f, g}, {}, x + 1, 11, 4, Pi}]

vrne

{aa, 1, c, f, g, 1 + x, 11, 4, π}


Flatten[list,n] je vgrajeni ukaz, ki 'splošči' n nivojev podseznamov seznama list

Npr:

Flatten[{aa, 1, c, {f, {-3 + g}}, {}, x + 1, 11, 4, Pi},1]

vrne {aa, 1, c, f, {-3 + g}, 1 + x, 11, 4, π}


Split

Split[list] je ukaz, ki združi seznam na dele z enakimi elementi

Npr:

Split[{a, a, b, b, a, a, b}]

vrne

{{a, a}, {b, b}, {a, a}, {b}}


Permutation

Permutations[list] je ukaz, ki vrne vse možne permutacije seznama list

Npr:

Permutations[{a,b,c}]

vrne

{{a, b, c}, {a, c, b}, {b, a, c}, {b, c, a}, {c, a, b}, {c, b, a}}


MATRIKE

To so seznami seznamov oz. vektorjev enake dolžine.


Sestavljanje matrike

Npr: Seznam

{a,b,c}

predstavlja vektor

(a,b,c)

Seznam več enako dolgih vektorjev npr.

m ={{1,4,2},{-2,5,9},{1,0,-3}}

pa predstavlja matriko.


Matrična oblika

MatrixForm[m] je vgrajeni ukaz, ki pretvori seznam m, ki prestavlja matriko, v matrično obliko

Npr:

m={{1,4,2},{-2,5,9},{1,0,-3}}

je seznam na katerem uporabimo ukaz MatrixForm na enega izmed sledečih načinov:

MatrixForm[m]

ali pa

m//MatrixForm

Oba ukaza vrneta matriko \begin{bmatrix}   1 & 4 & 2 \\   -2 & 5 & 9 \\    1 & 0 & -3 \end{bmatrix}


Enotska matrika

IdentityMatrix[n] je ukaz, ki vrne enotsko matriko velikosti n*n.

Npr:

IdentityMatrix[3]

vrne seznam

{{1, 0, 0}, {0, 1, 0}, {0, 0, 1}},

ki predstavlja 3*3 enotsko matriko.


Diagonalna matrika

DiagonalMatrix[list] je ukaz, ki vrne matriko, v kateri na diagonali ležijo elementi seznama list, na ostalih mestih pa so ničle.

Npr:

DiagonalMatrix[{1,2,3}]

vrne matriko

{{1, 0, 0}, {0, 2, 0}, {0, 0, 3}} 

V matrični obliki to izgleda takole: \begin{bmatrix}   1 & 0 & 0 \\   0 & 2 & 0 \\    0 & 0 & 3 \end{bmatrix}


First

First[m] ali m[[1]] je ukaz, ki vrne prvo vrstico matrike m

Npr:

First[{{1,4,2},{-2,5,9},{1,0,-3}}]

vrne

{1,4,2}

i,j-ti element matrike

m[[i,j]] je ukaz, ki vrne j-ti element v i-ti vrstici matrike m

Npr:

m={{1,4,2},{-2,5,9},{1,0,-3}}

m[[2,3]] vrne

9


Transpose

Transpose[m] je ukaz, ki transponira matriko m

Npr:

Transpose[{{1, 2, 3}, {4, 5, 6}}]

vrne

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

V matrični obliki je prvotna matrika oblike \begin{bmatrix}   1 & 2 & 3     \\   4 & 5 & 6     \end{bmatrix}, njena transponirana matrika pa je \begin{bmatrix}   1& 4  \\   2 & 5 \\    3& 6  \end{bmatrix}

Inverse

Inverse[m] je ukaz, ki vrne inverzno matriko matrike m

Npr:

Inverse[{{-5, 3}, {-2, 1}}]

vrne

{{1, -3}, {2, -5}}

V matrični obliki: inverz matrike \begin{bmatrix}   -5& 3  \\   -2 & 1   \end{bmatrix} je \begin{bmatrix}   1& -3  \\   2 & -5   \end{bmatrix} .

Glej tudi

Osebna orodja