NĚKOLIK RAD pro práci v Maple 8

Aleš Němeček  &  Mirko Navara

Tento program byl vytvořen s podporou grantů FR ČVUT č. 3296017 a č.3297007

Počítačové algebraické systémy (PAS) a jejich využití ve výuce matematických a fyzikálních oborů na ČVUT .

Autorská práva:

Uživatel, tj. čtenář, může tento text použít pro svoje potřeby bez omezení. Distribuce a převod do tištěné podoby pouze se svolením autorů. Text může mít více verzí, které vznikají tím, že autoři text v průběhu času mění a doplňují.

Kontaktní adresy: nemecek@math.feld.cvut.cz    navara@math.feld.cvut.cz

Napřed uklidíme (vymažeme z paměti předchozí výpočty a proměnné):

>    restart;

Funkce (odlišnost od výrazu)

se zadávají jako procedury , výsledek se ničemu nepřiřazuje, jen se napíše jako výraz:

>    fce := proc(x,y) x^2+y^2 end;

fce := proc (x, y) x^2+y^2 end proc

(end  je zavírací závorka od proc, když ji zapomenete, Maple vám nápadně dlouho nedá žádný výstup)

>    fce(t,u+1);

t^2+(u+1)^2

Jednopříkazové funkce lze ekvivalentně zadat v šipkové notaci:

>    f := (x,y) -> x^2+y^2;

f := proc (x, y) options operator, arrow; x^2+y^2 end proc

Rozšíření  lze při prvním čtení vynechat.

Rozšíření                

Lze dodatečně předefinovat jednotlivé hodnoty:

>                g := x -> sin(x)/x;

>                g(0) := 1;

g := proc (x) options operator, arrow; sin(x)/x end proc

g(0) := 1

Pokud je v těle procedury více příkazů, oddělují se středníkem nebo dvojtečkou.

>    delsiproc:=proc(x,y) pom1:=x+y: pom2:=x-y; pom1^2+pom2^2 end;

Warning, `pom1` is implicitly declared local to procedure `delsiproc`

Warning, `pom2` is implicitly declared local to procedure `delsiproc`

delsiproc := proc (x, y) local pom1, pom2; pom1 := x+y; pom2 := x-y; pom1^2+pom2^2 end proc

Všimněte si varování o deklaraci lokálních proměnných (nejsou dostupné vně procedury ani po jejím zavolání).

Na výstupu se objeví výsledek pouze posledního příkazu.

>    delsiproc(t,u+1);

(t+u+1)^2+(t-u-1)^2

Jestliže za end  procedury napíšete dvojtečku, není na výstupu po vyhodnocení (definování) procedury výpis příkazů (vyzkoušejte). Záměna středníků za dvojtečky na konci příkazů v těle procedury nemá žádný vliv.

>   

Je nutno rozlišovat výraz, např.

>    sin(x);

sin(x)

... a funkci, např.

>    x -> sin(x);

>    x -> sin(x^2);

sin

proc (x) options operator, arrow; sin(x^2) end proc

Tedy

>    vyraz := sin(x^2);

vyraz := sin(x^2)

je výraz,

zatímco

>    funkce := x -> sin(x^2);

funkce := proc (x) options operator, arrow; sin(x^2) end proc

je funkce.

>    vyraz; funkce;

sin(x^2)

funkce

Z funkce se při výstupu vypíše jen jméno, její definici dostaneme pomocí eval . (Totéž platí o polích.)

>    eval(funkce);

proc (x) options operator, arrow; sin(x^2) end proc

Za funkci můžeme napsat argument:

>    funkce(a), funkce(3);

sin(a^2), sin(9)

za výraz sice také, ale s (obvykle) nežádoucím výsledkem:

>    vyraz(a), vyraz(3);

sin(x^2)(a), sin(x^2)(3)

Některé procedury pracují s výrazy i s funkcemi, přesto je nutné je rozlišovat, správné jsou např. zápisy

>    plot(vyraz, x=0..4);        # první argument je výraz

[Maple Plot]

>    plot(funkce, 0..4);         # první argument je funkce

>    plot(funkce(x), x=0..4);    # první argument je výraz

>    plot(funkce(t), t=0..4);    # první argument je výraz

... nesprávné je

>    plot(vyraz(x), x=0..4);     # (`vyraz` je výraz v proměnné   x ,   x   je "argument")

[Maple Plot]

>    plot(vyraz, t=0..4);        # ("vyraz" je výraz v proměnné   x , nikoli   t )

Plotting error, empty plot

>    plot(funkce(x), 0..4);      # (`funkce(x)`  je výraz, nikoli funkce)

Plotting error, empty plot

>    plot(funkce, x=0..4);       # (`funkce`  je funkce, nikoli výraz)

Error, (in plot) invalid plotting of procedures, perhaps you mean plot(funkce,0 .. 4)

>    plot(funkce(x), t=0..4);    # (`funkce(x)`  je výraz v proměnné   x , nikoli  t )

Plotting error, empty plot

Případně si připomeňte, jak jsou vyraz a funkce definovány.

                

Rozšíření

Je možný i tento zápis:

>    f3(x) := sin(x^2);

f3(x) := sin(x^2)

ale nepoužívejte jej, neboť tím definujete funkci  `f3`  pouze pro jediný argument  `x`:

>    f3(x), f3(y), f3(3);

sin(x^2), f3(y), f3(3)

Z funkce vytvoříme výraz uvedením parametrů:

>    f(a, b+c);

a^2+(b+c)^2

Z výrazu vytvoříme funkci pomocí funkce   unapply :

>    vyraz := x^2 * sin(x);

vyraz := x^2*sin(x)

>    h := unapply(vyraz, x);

h := proc (x) options operator, arrow; x^2*sin(x) end proc

>    h(2), h(3), h(4);

4*sin(2), 9*sin(3), 16*sin(4)

>   

Zpět na začátek sekce.

Podmíněný příkaz

if   .... fi

(`fi`  je zavírací závorka k  `if`)

>    x:=1;

x := 1

>    if x<=2 then beru else neberu fi;

beru

>    if x=1 then hura elif x=2 then beru elif x=3 then neberu else beda fi;

hura

Vyzkoušejte za x  dosadit i jiné hodnoty, případně i jinou proměnnou.

V jiném kontextu se podmínka nevyhodnocuje, zůstává výrazem:

>    nebe = dudy;

nebe = dudy

... který lze vyhodnotit např. pomocí funkce evalb

>    evalb(%);

false

Maple není příliš zdatný v dokazování exaktních nerovností:

>    evalb(1 < Pi);

-Pi < -1

a neporadí si ani s případem, kdy jeden vstup je numerický, druhý symbolický:

>    evalb(1.0 < Pi);

-Pi < -1.0

takže je NUTNO ZAJISTIT, ABY OBĚ HODNOTY BYLY NUMERICKÉ:

>    1.0 < evalf(Pi); evalb(%);

1.0 < 3.141592654

true

S funkcemi, v jejichž definici je použit podmíněný příkaz, nelze provádět některé operace (např. derivovat).

Proto se doporučuje vyjadřovat podmínky pomocí Heavisidovy funkce  (jednotkový skok), např.

>    F := x -> x - Heaviside(x-2)*((x-2)^2);

F := proc (x) options operator, arrow; x-Heaviside(x-2)*(x-2)^2 end proc

>    plot(F, -2..5);

[Maple Plot]

Takto definovanou funkci můžeme derivovat

>    D(F);

proc (x) options operator, arrow; 1-Dirac(x-2)*(x-2)^2-2*Heaviside(x-2)*(x-2) end proc

a provádět s ní i další operace a úpravy.

>    plot(D(F), 0..4);

[Maple Plot]

>   

Rozšíření

Nebo ještě lépe pomocí funkce piecewise , která umožňuje další symbolické úpravy a výpočty.

>    x:='x':
p:=piecewise(x<0, -1, x>1, 2*x, x^2);

p := PIECEWISE([-1, x < 0],[2*x, 1 < x],[x^2, otherwise])

Je možné ji integrovat,

>    int(p, x);

PIECEWISE([-x, x <= 0],[1/3*x^3, x <= 1],[x^2-2/3, 1 < x])

derivovat (označí i body, kde není derivace definovaná),

>    diff(p, x);

PIECEWISE([0, x < 0],[undefined, x = 0],[2*x, x < 1],[undefined, x = 1],[2, 1 < x])

řešit diferenciální rovnice

>    dsolve( diff(y(x), x) + p*y(x), y(x));

y(x) = PIECEWISE([_C1*exp(x), x < 0],[_C1*exp(-1/3*x^3), x < 1],[_C1*exp(-x^2+2/3), 1 <= x])

zjednodušovat výsledek

.

>    simplify(p*x*exp(x-1));

PIECEWISE([-x*exp(x-1), x < 0],[x^3*exp(x-1), x <= 1],[2*x^2*exp(x-1), 1 < x])

>   

Zpět na začátek sekce.

Cyklus

for  

(`od`  je zavíraci závorka k  `do`)

>    for i from 1 by 2 to 20 while i^2<100 do 11*i od;

11

33

55

77

99

>   

Apostrofy, řetězce, zpožděné vyhodnocování

Maple používá 3 DRUHY APOSTROFŮ:

>    "zarizeni",   ":",   "adresar\\nazev.souboru";

>   

Rozšíření

Všimněte si zvláštní role znaku  \  v řetězcích:

  •  je-li uveden jednou, ignoruje se;
  •  následuje-li za ním odřádkování, ignoruje se i to;
  •  má-li být  \  součástí řetězce, musí se uvést dvakrát.

>    "Toto je velmi \dlouhy retezec, a proto jej rozdelime \

>     do dvou radku.";

Spojování řetězců provádí operace  || :

>    "zarizeni"  ||  ":"  ||  "adresar\\nazev.souboru";

Podobně dva apostrofy se uvnitř řetěze interpretují jako jednoduchý.

>    "Řekl: ""Nazdárek""!";

>    printf(%);

Řekl: "Nazdárek"!

Z výsledku je vidět, že můžeme použít i ekvivalentní zápis dvou apostrofů  \"

>    "Řekl: \"Nazdárek\"!";

>    printf(%);

Řekl: "Nazdárek"!

>    x:=(a+b)^2;

>    vyraz1:=(x+1)^3;

>    vyraz2:=('x'+1)^3;

>    eval(vyraz2);

x := (a+b)^2

vyraz1 := ((a+b)^2+1)^3

vyraz2 := (x+1)^3

((a+b)^2+1)^3

>    x:=3;

>    vyraz1:=(x+1)^3;

>    vyraz2:=('x'+1)^3;

>    eval(vyraz2);

x := 3

vyraz1 := 64

vyraz2 := (x+1)^3

64

>    `co je`:=5;
`co je`, `coje`;

`co je` := 5

5, coje

Jinak bychom do jména nemohli napsat např. mezeru.

>    co je;

Error, missing operator or `;`

Podobně jako u řetězců můžeme do jména dostat i ` pouhým zdvojením `` nebo ekvivalntně pomocí \`:

>    `abc``d`:=1; `abc\`de`:=2;

`abc\`d` := 1

`abc\`de` := 2

>   

Zpět na začátek sekce.

Odebrání hodnoty proměnné

Nepoužitá proměnná nemá hodnotu , což je reprezentováno tím, že má za hodnotu svůj identifikátor

(platí i pro pole):

>    k;

>    a[2];

k

a[2]

Přiřadíme-li proměnné hodnotu, nelze ji použít jako lokální proměnnou v některých funkcích:

>    k:=2;

k := 2

>    sum(k^2, k=1..5);

Error, (in sum) summation variable previously assigned, second argument evaluates to 2 = 1 .. 5

Inertní forma sumy ( Sum  s velkým S) nám odhalí důvod:

>    Sum(k^2, k=1..5);

Sum(4,2 = 1 .. 5)

Nápravu přinese zpožděné vyhodnocení (musíme zpozdit i vyhodnocení prvního argumentu, který by jinak byl 2^2 ):

>    Sum('k^2', 'k'=1..5) = sum('k^2', 'k'=1..5);

Sum(k^2,k = 1 .. 5) = 55

(Zde máte zároveň ukázku, jak zapsat přehledně vzorec i jeho výsledek ve tvaru rovnosti.)

Jiné řešení přináší ODEBRÁNÍ HODNOTY:

>    k:='k';

k := 'k'

Po tomto příkazu  proměnná   k   "nemá hodnotu", stejně jako na začátku práce.

>    Sum(k^2, k=1..5)=sum(k^2, k=1..5);

Sum(k^2,k = 1 .. 5) = 55

K odebrání hodnoty slouží i funkce   unassign , ale i zde je potřeba použít zpožděné vyhodnocení.

>    a:=3;

a := 3

>    unassign('a', 'p', 'q');
a;

a

>   

Ve skutečnosti by se měly apostrofy používat téměř všude, kde chceme lokálně použít identifikátor,

ale zápis by tím ztratil na přehlednosti. Proto mnohde používáme pouze proměnnou bez hodnoty

a očekáváme, že její identifikátor dostaneme coby její hodnotu.

Zpět na začátek sekce.

Posloupnosti

Posloupnost je datová struktura, s níž se setkáváme všude tam, kde jsou výrazy odděleny čárkami (např. v argumentech funkcí):

>    argumenty:= p,q; FCE(argumenty)=f(argumenty);

argumenty := p, q

FCE(p,q) = p^2+q^2

>    recka_pismena:= alpha, beta, gamma, delta, epsilon, zeta, eta, theta, iota, kappa,lambda, mu, nu, xi, omicron, pi, rho, sigma, tau, upsilon, phi, chi, psi, omega;

recka_pismena := alpha, beta, gamma, delta, epsilon, zeta, eta, theta, iota, kappa, lambda, mu, nu, xi, omicron, pi, rho, sigma, tau, upsilon, phi, chi, psi, omega

(Pro tyto identifikátory platí výjimka - při výstupu se zobrazují jako řecká písmena.)

Pozor!  Ludolfovo cislo je konstanta   Pi , nikoli  pi, i když se stejně zobrazuje :

>    pi=evalf(pi);

>    Pi=evalf(Pi);   # pouze Pi je známá konstanta!

>    pI=evalf(pI);

>    PI=evalf(PI);

pi = pi

Pi = 3.141592654

pI = pI

PI = PI

Posloupnosti lze zadat předpisem pomocí funkce  ` seq `:

>    seq(2^j, j=1..8);

2, 4, 8, 16, 32, 64, 128, 256

... nebo pomocí operace   $   - ta je přehlednější, ale méně efektivní a navíc vyžaduje, aby parametr cyklu neměl hodnotu

>    j:='j';

j := 'j'

>    2^j $j=1..8;

2, 4, 8, 16, 32, 64, 128, 256

>    aj  $j=1..8;

aj, aj, aj, aj, aj, aj, aj, aj

Rozšíření

... jinak bychom museli použít zpožděné vyhodnocování:

>    j:=2;

j := 2

>    '2^j' $'j'=1..8;

2, 4, 8, 16, 32, 64, 128, 256

Pomocí  $  bez levého argumentu lze snadno zapsat posloupnost čísel apod.:

>    $-10..10; `cislo `||($1..5);

-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

`cislo 1`, `cislo 2`, `cislo 3`, `cislo 4`, `cislo 5`

>   

Zpět na začátek sekce.

Použití závorek

>    cisla:={1,2,2,5,5,5,5,5,3,3,3,4,4,4,4};

cisla := {1, 2, 3, 4, 5}

>    konstanty:={E, Pi, I, infinity, true, false, FAIL, gamma, Catalan};

konstanty := {Pi, FAIL, Catalan, true, gamma, false, infinity, I, E}

(všimněte se použití velkých písmen)

Rozšíření

Na rozdíl od Maple V Release 3  není konstanta velké E definována.

>    evalf(E);

E

Můžeme ji ovšem dodefinovat pomocí příkazu alias .

>    alias(E=exp(1));
evalf(E);

E

2.718281828

>   

Rozšíření

Lze provádět i množinové operace

>    {recka_pismena};

{alpha, beta, delta, epsilon, zeta, theta, iota, kappa, lambda, omicron, sigma, upsilon, omega, eta, nu, pi, rho, tau, phi, chi, psi, gamma, xi, mu}

průnik

>    konstanty intersect {recka_pismena};

{gamma}

sjednocení a další.

>    konstanty union cisla;

{1, 2, 3, 4, 5, Pi, FAIL, Catalan, true, gamma, false, infinity, I, E}

>   

>    jmena:=[Adamek, Benes, Cerny, Dvorak, Dvorak, Eben];

jmena := [Adamek, Benes, Cerny, Dvorak, Dvorak, Eben]

Některé funkce dovolují místo jednoho argumentu i seznam nebo množinu argumentů:

>    plot([sin,cos], 0..10, legend=["sinus","kosinus"]);

[Maple Plot]

Pro množinu ovšem nefunguje z pochopitelných důvodů argument legend (rozmyslete). Lze ho ovšem vypustit (vyzkoušejte).

>    plot({sin,cos}, 0..10, legend=["sinus","kosinus"]);

Error, (in plot) the legend option cannot be used when ploting a set of objects

[  ]  se používají také při indexování polí:

>    a:=array(1..4,1..4,identity); a[1,1], a[1,2], a[1,3], a[1,4];

a := array(identity,1 .. 4,1 .. 4,[])

1, 0, 0, 0

... rovněž v odkazech na knihovní funkce:

>    combinat[binomial](5,2);

10

Rozšíření

... a tabulek neboli vlastností:

>    barva[nebe]:=modra;

barva[nebe] := modra

sloupcový

>    veks:=<1, 2, 3>;

veks := Vector(%id = 4983712)

řádkový

>    vekr:=<1 | 2 | 3>;

vekr := Vector(%id = 4956144)

nebo matic

>    <veks | <4, 5, 6> | <7, 8, 9>>, <vekr , <4 | 5 | 6> , <7 | 8 | 9>>;

Matrix(%id = 5156128), Matrix(%id = 5239540)

>    vyraz := (sin^2)(t)+(cos^2)(t);

vyraz := sin(t)^2+cos(t)^2

>    simplify(vyraz);

1

>   

Rozšíření

 Z datové struktury lze vytvořit posloupnost jejích složek pomocí funkce   op :

>    op(jmena);

Adamek, Benes, Cerny, Dvorak, Dvorak, Eben

Všimněte si, jak proběhne sřetězení posloupnosti:

>    `Prof. `||(%)||`, DrSc.`;

`Prof. Adamek, DrSc.`, `Prof. Benes, DrSc.`, `Prof. Cerny, DrSc.`, `Prof. Dvorak, DrSc.`, `Prof. Dvorak, DrSc.`, `Prof. Eben, DrSc.`
`Prof. Adamek, DrSc.`, `Prof. Benes, DrSc.`, `Prof. Cerny, DrSc.`, `Prof. Dvorak, DrSc.`, `Prof. Dvorak, DrSc.`, `Prof. Eben, DrSc.`

>   

Zpět na začátek sekce.

Knihovní funkce

Po spuštění programu se do paměti přenesou pouze nejčastěji používané funkce.

Většina dalších funkcí je v knihovnách. Odtamtud se načtou jedním z následujících způsobů (v nápovědě o neznámých funkcích vždy hledejte informace o tom, který ze způsobů je pro ni použitelný):

>    expand((u+v)^6);

u^6+6*u^5*v+15*u^4*v^2+20*u^3*v^3+15*u^2*v^4+6*u*v^5+v^6

>    readlib(isolate);         # zastaralé

proc (expr, x, n) local expr1, expr2, ito, t1, xx, linop, new_args, subs_args, funcs; option `Copyright (c) 1992 by the University of Waterloo. All rights reserved.`; if nargs < 2 or 3 < nargs or nargs...

>    isolate(x^2*y - x/y + y, y);

y = 1/(x^2+1)*((x^2+1)*x)^(1/2)

Funkci completesquare  zatím nezná (přesněji není v paměti, ale pouze v knihovně balíčků, ze které se automaticky nenačte).

>    completesquare(12*x^2+816*x+13816);

completesquare(12*x^2+816*x+13816)

Nejprve ji načteme z knihovny student ...

>    with(student, completesquare);

[completesquare]

... a potom použijeme:

>    completesquare(12*x^2+816*x+13816);

12*(x+34)^2-56

>    student[showtangent](exp(t/10), t=3);

[Maple Plot]

>   

Zpět na začátek sekce.

Zbytek souboru je již určen pouze pro mírně pokročilé.

Není-li to váš případ, můžete s tímto souborem prozatím skončit.

Problémy s vyhodnocováním

Nechť proměnné   a , b   nemají hodnotu:

>    a:='a'; b:='b';

a := 'a'

b := 'b'

Pak přiřazení

>    interval:=a..b;  delka:=b-a;

interval := a .. b

delka := b-a

... bude automaticky respektovat hodnoty, kterých proměnné   a , b   později nabydou:

>    a:=1; b:=10;

a := 1

b := 10

>    interval; delka;

1 .. 10

9

Některé složitější datové stuktury, např. funkce a pole, se automaticky plně nevyhodnocují.

>    h:= x -> arctan(x^2);

>    a:=array(identity, 1..2,1..2);

h := proc (x) options operator, arrow; arctan(x^2) end proc

a := array(identity,1 .. 2,1 .. 2,[])

Při výstupu se zobrazí pouze jejich jméno, nikoli obsah:

>    h, a;

h, a

Víc se o nich dozvíme po vyhodnocení funkcí eval :

>    eval(h); eval(a);

proc (x) options operator, arrow; arctan(x^2) end proc

matrix([[1, 0], [0, 1]])

Funkci   eval  potřebujeme také tehdy, chceme-li vytvořit kopie těchto struktur:

>    totez:=h;

>    kopie:=eval(h);  

totez := h

kopie := proc (x) options operator, arrow; arctan(x^2) end proc

Na první pohled se zdají být funkce  ` totez `, ` kopie `  stejné:

>    eval(totez);

>    eval(kopie);

proc (x) options operator, arrow; arctan(x^2) end proc

proc (x) options operator, arrow; arctan(x^2) end proc

... ale  ` kopie `  je (nezávislá) kopie, zatímco  ` totez `  je identická s funkcí   h .

To se projeví, předefinujeme-li   h   -  ` totez `  se změní,  ` kopie ` nikoli:

>    h:=sin;

h := sin

>    eval(totez);

proc (x::algebraic) local n, t, pull_out, keep_in; option `Copyright (c) 1992 by the University of Waterloo. All rights reserved.`; if nargs <> 1 then error

>    eval(kopie);

proc (x) options operator, arrow; arctan(x^2) end proc

>    totez(2);

sin(2)

>    kopie(2);

arctan(4)

>   

Zpět na začátek sekce.

Novinky posledních verzí

Palety

V položce View -> Palettes najdete prostředek (s možností zvětšení pomocí File -> Preferences... -> General -> Palette Size -> Large ) pro definování příkazů Maple bez podrobné znalosti syntaxe, zadávání základních matematických symbolů a funkcí (v Maple příkazů), řeckých písmen a zadávání matic. Stačí si otevřít příslušnou paletu  a pomocí ťuknutí na odpovídající tlačítko přenést příkaz do aktivního worksheetu na předem zvolené místo (vyzkoušejte).

Následující příkazy byly kompletně vytvořeny pomocí palet. Během jejich tvorby můžete mít neustále zobrazenou i běžnou syntaxi Maple. Zde jsou vstupy uvedeny ve standardní matematicé notaci (graficky). Pro přesun kurzoru na další položku v příkazu, kterou je třeba zadat z klávesnice (v textovém vstupním režimu označena %?, v grafickém ?), použijte klávesu Tab .

>    v := sqrt(int(x^2*abs(sin(x)),x = alpha .. beta))

v := sqrt(-signum(sin(beta))*beta^2*cos(beta)+2*signum(sin(beta))*cos(beta)+2*signum(sin(beta))*beta*sin(beta)+signum(sin(alpha))*alpha^2*cos(alpha)-2*signum(sin(alpha))*cos(alpha)-2*signum(sin(alpha))...
v := sqrt(-signum(sin(beta))*beta^2*cos(beta)+2*signum(sin(beta))*cos(beta)+2*signum(sin(beta))*beta*sin(beta)+signum(sin(alpha))*alpha^2*cos(alpha)-2*signum(sin(alpha))*cos(alpha)-2*signum(sin(alpha))...

>    matice := <<1 | 2 | 3> , <4 | 5 | 6>>;

matice := Matrix(%id = 4885284)

>    limit(cos(x)/((x-1)^2),x = infinity)

0

Zde si můžete vyzkoušet postupné vytváření příkazu vkláním jeho částí z palet (které ovšem musíte nejprve otevřít).

>   

>   

Expression Editor

Pro základní příkazy můžeme použit nabídku výrazového editoru i bez znalosti syntaxe. Nejprve si připravíme výraz.

>    v:=x^2+2*x+1;

v := x^2+2*x+1

Nyní výstup zpracujeme pomocí menu (objeví se po kliknutí na pravou klávesu myši, pokud je šipka v ploše výstupu). Následující příklady vznikly v opačném pořadí, jak je patrné z číslovaní jmen přiřazených výrazům (R3, R2, R1, R0). Volba z menu je naznačena u každého samostatně.

Differentiate -> x   

>    R3 := diff(x^2+2*x+1,x);

R3 := 2*x+2

Constructions -> Definite Integral -> x      a následném vypsání mezí.

>    R2 := Int(x^2+2*x+1,x = 2 .. 5);

R2 := Int(x^2+2*x+1,x = 2 .. 5)

Factor  

>    R1 := factor(x^2+2*x+1);

R1 := (x+1)^2

Conversions -> Horner Form -> x   

>    R0 := convert(x^2+2*x+1,horner,x);

R0 := 1+(2+x)*x

>   

Podobně lze upravovat i ostatní typy maplovských objektů (texty, vstupy, grafiku, ...).

Spreadsheet

Příkazy můžeme též umístit do tabulky a nechat je vyhodnocovat po řádcích, sloupcích ap., provádíme symbolické (samozřejmě i numerické) výpočty v tabulkovém procesoru.

Pouze malá ukázka (podívejte se i na další sloupce D, E, ...), více se případně dozvíte v Helpu . Všimněte si, jak se změní Contex Bar   pokud ťuknete v ploše tabulky na levou klávesu myši. Podobně pravá klávesa myši vám nabídne další možnosti práce s tabulkou (viz. předchozí sekce)

n (a-b)^n `výraz` simplify combine factor expand collect

1 a-b 2*sin(x)*cos(x) 2*sin(x)*cos(x) sin(2*x) 2*sin(x)*cos(x) 2*sin(x)*cos(x) 2*sin(x)*cos(x)

2 a^2-2*a*b+b^2 x^2+2*x*y+y^2 x^2+2*x*y+y^2 x^2+2*x*y+y^2 (x+y)^2 x^2+2*x*y+y^2 x^2+2*x*y+y^2 NULL NULL
3 a^3-3*a^2*b+3*a*b^2-b^3 (x-y)*(x+y) (x-y)*(x+y) (x-y)*(x+y) (x-y)*(x+y) x^2-y^2 x^2-y^2 NULL NULL
4 a^4-4*a^3*b+6*a^2*b^2-4*a*b^3+b^4 exp(x)*exp(y)+exp(x) exp(x+y)+exp(x) exp(x+y)+exp(x) exp(x)*(exp(y)+1) exp(x)*exp(y)+exp(x) (exp(y)+1)*exp(x) NULL NULL

Smart Plot

Velmi příjemný je i "živý plot" (nezaměňujte s keříčky kolem zahrady!), který umožňuje přenést výstupy přímo do obrázku a naopak z grafu pomocí Copy  a Paste  můžeme dostat původní zadání (výraz popisující funkci). Téměř všechny neuvedené parametry lze interaktivně měnit a výsledek konvertovat a uložit do jiných grafických formátů.

Nejprve rychle vykreslíme následující funkci.

>    x^2*sin(y);

x^2*sin(y)

Nyní stačí označit myší výstyp a v příkazovém editoru (dostupný po stisnutí pravé klávesy myši) vybrat položku  Plot -> 3D -> xy   a máme základní obrázek, který lze snadno modifikovat, doplnit o další plochy ap.

Později do obrázku přidáme další graf, který přebarvíme a necháme zobrazit vrstevnice.

>    x^2-3;

x^2-3

Takhle vypadá výsledek, který lze dále pomocí výrazového editoru,   Contex Bar   i File Bar  snadno "opracovávat", přidržením lévé klávesy v ploše otáčet ap.

>    smartplot3d[x,y](x^2*sin(y))

[Maple Plot]

>   

Opět se můžete  inspirovat v Helpu .

Zpět na začátek sekce.