Datové typy

1 Seznam (list)

(%i1) s:[1,4,25,9,16,25];

Result

Stejné objekty se mohou vyskytovat více než jednou,
zachovává se zadané uspořádání.

Ověření, že s je datového typu seznam:

(%i2) listp(s);

Result

Vytváření seznamu

(%i3) makelist(i^2,i,1,5);

Result

makelist (expr, i, i_0, i_1) vytváří seznam, kde j-tý element je roven
ev (expr, i=j) pro j od i_0 do i_1.

(%i4) makelist(x=y,y,[a,b,c]);

Result

makelist (expr, x, list) vytváří seznam, kde j-tý element je roven
ev (expr, x=list[j]) pro j od 1 do počtu prvků seznamu.

(%i5) create_list(x^i,i,[1,3,7]);

Result

Počet prvků seznamu (délka seznamu):

(%i6) length(s);

Result

Test, zda daný element patří do seznamu:

(%i7) member(2,s);

Result

(%i8) member(4,s);

Result

Výběr jednotlivých prvků seznamu:

(%i9) s[1];

Result

Nahrazení prvku seznamu jiným:

(%i10) s[1]:a;

Result

(%i11) s;

Result

(%i12) first(s);second(s);third(s);fourth(s);fifth(s);

Result

(%i17) last(s);

Result

Odstranění elementu ze seznamu:

(%i18) delete (y, [w, x, y, z, z, y, x, w]);

Result

Odstranění duplicit

(%i19) seznam:[x, x, x*y, x*(x-1)];

Result

(%i20) unique(seznam);

Result

(%i21) cl : [black, red, green, yellow, blue, white, pink];

Result

(%i22) rest(cl,2);

Result

Odstraní první dva prvky seznamu.

(%i23) rest(cl,-2);

Result

Odstraní poslední dva prvky seznamu.

(%i24) rest(cl);

Result

Odstraní první prvek seznamu.

(%i25) reverse(cl);

Result

Obrátí pořadí prvků seznamu.

(%i26) cons(orange,cl);

Result

Vytvoří nový seznam se zadaným prvkem na prvním místě.

(%i27) endcons(orange,cl);

Result

Vytvoří nový seznam se zadaným prvkem na posledním místě.

(%i28) append(cl,[orange,brown]);

Result

append(list_1,...,list_n) vytváří jeden seznam, skládající se postupně z prvků
seznamu list_1,list_2,...,list_n.

(%i29) L1:[1,2,3,4,5];

Result

(%i30) L2:[a,b,c,d,e];

Result

(%i31) join(L1,L2);

Result

join(l,m) vytváří seznam spojením seznamů l a m, přičemž prvky obou seznamů se
pravidelně střídají. Tj. výsledný seznam vypadá takto: [l[1], m[1], l[2], m[2],...].

Pokud mají oba seznamy různou délku, join ignoruje prvky delšího seznamu.

(%i32) f(x):=x^2;

Result

(%i33) map(f,L1);

Result

map(f, list) aplikuje funkční předpis na všechny prvky seznamu.

Sečtení prvků seznamu

(%i34) apply("+",L1);

Result

(%i35) random(11);

Result

random(x) vrací náhodně zvolené celé číslo od 0 do x-1.

(%i36) 3<5, pred;

Result

(%i37) L : makelist(random(11),i,1,10);

Result

(%i38) sublist(L, lambda([x], is(x<5)));

Result

(%i39) f(x) := is(x<5)$

(%i40) f(4);

Result

(%i41) sublist(L,f);

Result

(%i42) sublist(L, evenp);

Result

2 Množina (set)

(%i43) M1:set(b,a,c);

Result

(%i44) M1:{c,b,a};

Result

Pokud množina obsahuje stejné prvky, jsou automaticky odstraněny.

Datový typ množina používá vnitřní systém uspořádání.

(%i45) setp(M1);

Result

Prázdná množina:

(%i46) set();

Result

(%i47) subst(c=a, M1);

Result

(%i48) M2:set(1,2,3);

Result

(%i49) M3:[1,1,2,2,3,3];

Result

Vytvoření množiny ze seznamu:

(%i50) M4:setify(M3);

Result

A zpětné vytvoření seznamu z množiny:

(%i51) listify(M4);

Result

(%i52) full_listify ({a, b, {c, {d, e, f}, g}});

Result

(%i53) listify ({a, b, {c, {d, e, f}, g}});

Result

(%i54) fullsetify ([a, [a]]);

Result

Základní množinové operace

Sjednocení:

(%i55) union(M1,M2);

Result

Průnik:

(%i56) intersect(M1,M2);

Result

Rozdíl:

(%i57) setdifference({0,1,2,3},{0,2,4,6});

Result

Počet prvků konečné množiny:

(%i58) cardinality(M1);

Result

(%i59) s:{1,2,five,3,4};

Result

Přidání prvku:

(%i60) adjoin(x, s);

Result

(%i61) union(s,{x});

Result

Odstranění prvku z množiny:

(%i62) disjoin(x,%);

Result

(%i63) disjointp ({a, b, c}, {1, 2, 3});

Result

disjoint vrací true, pokud jsou zadané množiny disjunktní.

(%i64) disjointp ({a, b, 3}, {1, 2, 3});

Result

Určuje, zda daný prvek patří do množiny:

(%i65) elementp(1,s);

Result

(%i66) elementp(6,s);

Result

Určuje, zad jsou zadané množiny totožné:

(%i67) setequalp ({1, 2, 3}, {1, 2, 3});

Result

(%i68) setequalp ({a, b, c}, {1, 2, 3});

Result

(%i69) subset ({1, 2, 7, 8, 9, 14}, evenp);

Result

Vytvoří podmnožinu dané množiny na základě zadaného kritéria.

(%i70) evenp(1);evenp(1/2);evenp(2);

Result

(%i73) oddp(1);oddp(1/2);oddp(2);

Result

Určuje, zda je první zadaná množina podmnožinou druhé.

(%i76) subsetp ({1, 2, 3}, {a, 1, b, 2, c, 3});

Result

(%i77) subsetp ({a, 1, b, 2, c, 3}, {1, 2, 3});

Result

Vrací množinu všech podmnožin zadané množiny:

(%i78) collection:powerset({1,2,3});

Result

(%i79) cardinality(collection);

Result

(%i80) fourth(collection);

Result

(%i81) numbers:{0,%pi,%pi/3,%pi/2};

Result

(%i82) map(g,numbers);

Result

(%i83) map(sin, numbers);

Result

3 Pole (array)

array (name, dim_1, ..., dim_n) vytváří obecné pole.
n musí být menší nebo rovné pěti.

(%i84) array(A,2,3);

Result

(%i85) A[1,1]:1;A[1,2]:4;A[1,3]:9;

Result

(%i88) A[2,1]:1;A[2,2]:8;A[2,3]:27;

Result

(%i91) arrayinfo(A);

Result

(%i92) listarray (A);

Result

(%i93) translate:[["jedna", 1], ["dve", 2], ["tri",3]];

Result

(%i94) assoc("jedna", translate);

Result

(%i95) cons(["ctyri",4], translate);

Result

4 Matice

K vytvoření matice použijeme příkaz matrix([],[],...), přičemž v hranatých
závorkách vypisujeme jednotlivé řádky matice.

(%i96) D:matrix([1,2,3],[1,4,9],[1,8,27]);

Result

(%i97) D[1,1];

Result

Definování indexační funkce

(%i98) h[i,j]:=1/(i+j-x);

Result

(%i99) hilbert4 : genmatrix(h,4,4);

Result

(%i100) ident(3);

Result

(%i101) diagmatrix(3,0);

Result

(%i102) zeromatrix(3,3);

Result

Operace s maticemi

(%i103) A: matrix([2,a], [-1,-2*b]);

Result

(%i104) B : matrix([3*a,2], [1-b,1]);

Result

Sečítání a odečítání matic

(%i105) A+B;

Result

(%i106) A-B;

Result

(%i107) C:transpose(D);

Result

Násobení matic

(%i108) D.C;

Result

(%i109) expand(A.B);

Result

(%i110) A*B;

Result

Při použití * se pouze vynásobí prvky na odpovídajících pozicích.

(%i111) A/B;

Result

Dělí prvky na odpovídajících pozicích.

Mocniny

(%i112) B^^3;

Result

(%i113) B^3;

Result

Operátor "^" umocní jen prvky na odpovídajícíh pozicích.

Počet řádků

(%i114) length(D);

Result

Počet sloupců

(%i115) length(transpose(D));

Result

Hodnost matice

(%i116) rank(D);

Result

Výpočet determinaru čtvercové matice:

(%i117) determinant(D);

Result

(%i118) invert(D);

Result

(%i119) D.%;

Result

(%i120) kill(all);

Result

Gaussova eliminace

(%i1) A:matrix([1,1,3,-3],[5,5,13,-17],[3,1,7,-11]);

Result

(%i2) triangularize(A);

Result

(%i3) echelon(A);

Result

(%i4) load("/home_zam/plch/vyuka/maxima/rref.mac");

Result

(%i5) rref(A);

Result

Balíček linearalgebra

(%i6) load(linearalgebra);

Result

(%i7) toeplitz([1,2,3]);

Result

(%i8) toeplitz([alpha, beta]);

Result

Pro práci s vektory slouží balíček vect

(%i9) load(vect);

Result

(%i10) v1 : [1,0,1];

Result

(%i11) length(v1);

Result

(%i12) v2 : [0,1,1];

Result

(%i13) v1-v2;

Result

Skalární součin

(%i14) v1 . v2;

Result

Vektorový součin

(%i15) v1 ~ v2;

Result

zde nedochází automaticky k vyhodnocení, to provedeme až pomocí

(%i16) express(%);

Result


Created with wxMaxima.