/* [wxMaxima batch file version 1] [ DO NOT EDIT BY HAND! ]*/ /* [ Created with wxMaxima version 0.8.6 ] */ /* [wxMaxima: title start ] Proměnné a jejich vyhodnocování [wxMaxima: title end ] */ /* [wxMaxima: section start ] Přiřazování hodnot proměnným [wxMaxima: section end ] */ /* [wxMaxima: comment start ] CAS systémy jsou schopny pracovat s formulemi a řešit úlohy, ve kterých se vyskytují neznamé a parametry. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ solve(a*x^2+b*x+c,x); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Zde a,b a c jsou parametry a x je neznámá. Jsou použity jako symboly. Toto použití "volných proměnných", které neukazují na žádnou hodnotu, kromě jejich vlastního jména, je charakteristické pro symbolické systémy. [wxMaxima: comment end ] */ /* [wxMaxima: comment start ] Promennym prirazujeme hodnoty pomoci operatoru :. jmeno:vyraz [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ pol:9*x^3-37*x^2+47*x-19; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ factor(pol); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ x;pol; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ x:19/9; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ x;pol; /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Narozdíl od Maplu zde nedochází k úplnému vyhodnocení! [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ ev(pol,x:19/9); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Příkaz ev(vyraz,podm1,podm2,....) vyhodnocuje vyraz za předpokladu platnosti zadaných podmínek. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ kill(pol); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ pol; /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Příkaz kill(all) zruší nastavení všech proměnných. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ kill(all); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(solve(a*x+b=0),x,a:3,b:12); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ a; /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Vidíme, že přiřazení hodnot proměnným a, b bylo jen lokální (v rámci příkazu ev). Vně příkazu nemá proměnná a přiřazenu žádnou hodnotu. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ a:9/4; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ exp(a); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(exp(a),float); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Příkaz values vraci jména proměnných, kterým byla přiřazena hodnota. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ values; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ [a]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ kill(a); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Pravidlo pro vyhodnocování [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ [a,b,c]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ c : a+b; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ a : 10; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ b : 6; /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Pokud nyní necháme vyhodnotit c, jaký bude výsledek? [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ c; /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Jakmile je proměnné přiřazena hodnota, nedochází k její změně dodatečným přiřazením (kromě další změny hodnoty této proměnné). V našem případě, pokud byla proměnné c přiřazena hodnota a+b, tak další přiřazení hodnot proměnným a, b nemění hodnotu proměnné c. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ values; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ [c,a,b]; /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Ale pokud teď zadáme znovu c : a+b; dostáváme [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ c : a+b; /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] protože nyní dojde k vyhodnocení proměnných a,b. [wxMaxima: comment end ] */ /* [wxMaxima: comment start ] Úplného vyhodnocení u předchozího příkladu můžeme dosáhnout pomocí příkazu eval. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ kill(a,b,c); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ c : a + b; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ a : 10; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ b : 6; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ c; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(c, eval); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Operator ' zamezuje vyhodnocování. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ i : 2; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ 'i; /* [wxMaxima: input end ] */ /* [wxMaxima: section start ] Jména proměnných [wxMaxima: section end ] */ /* [wxMaxima: comment start ] Rezervovaná slova, která nepoužíváme pro označování proměnných: [wxMaxima: comment end ] */ /* [wxMaxima: comment start ] integrate next from diff in at limit sum for and elseif then else do or if unless product while thru step [wxMaxima: comment end ] */ /* [wxMaxima: comment start ] Ve jménu proměnné se mohou vyskytovat písmena (rozlišuje se mezi velkými a malými), číslice a znaky % a _. Ostatní znaky musíme zadávat se znakem zpětné lomítko (backslash) před speciálním znakem. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ %Obycejne_jmeno; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ Odpoved\:; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ Jmeno\ s\ mezerou; /* [wxMaxima: input end ] */ /* [wxMaxima: section start ] Funkce assume a forget [wxMaxima: section end ] */ /* [wxMaxima: input start ] */ kill(all); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ sqrt(a^2); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ assume(a>0); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Příkazem assume(podm1,podm2,...) definujeme předpoklady. Tyto jsou platné (narozdíl od příkazu ev) až do té doby, než je zrušíme příkazem forget. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ is (a>0); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ sqrt(a^2); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ forget(a>0); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ sqrt(a^2); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Zmenu predpokladu muzeme provest az po jeho zruseni (forget). [wxMaxima: comment end ] */ /* [wxMaxima: comment start ] Pomoci assume a forget muzeme zadat i vice predpokladu zaraz. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ assume(n+1>0,m+1>0); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ integrate(a*x^n+b*x^m, x); /* [wxMaxima: input end ] */ /* [wxMaxima: section start ] Příkaz declare [wxMaxima: section end ] */ /* [wxMaxima: comment start ] Příkaz declare(prom1,podm1,prom2,podm2,...) definuje předpoklad podm1 pro proměnnou prom1, předpoklad podm2 pro proměnnou prom2, atd. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ (-1)^(n+1); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Zavedem předpoklad, že n je liché číslo. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ declare(n,odd); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ (-1)^(n+1); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Stejně jako u assume musíme předpoklad nejdříve zrušit, abychom mohli zavést nový. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ kill(n); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ (-1)^(n+1); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ declare(n,even); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ (-1)^(n+1); /* [wxMaxima: input end ] */ /* Maxima can't load/batch files which end with a comment! */ "Created with wxMaxima"$