/* [wxMaxima batch file version 1] [ DO NOT EDIT BY HAND! ]*/ /* [ Created with wxMaxima version 0.8.6 ] */ /* [wxMaxima: title start ] Funkce, řešení rovnic [wxMaxima: title end ] */ /* [wxMaxima: section start ] Funkce [wxMaxima: section end ] */ /* [wxMaxima: comment start ] Pro definování funkcí používáme operátor :=. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ f(x):=x^2; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ f(2);f(y); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Vypsání seznamu uživatelem definovaných funkcí [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ functions; /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Vypsání definice uživatelem definované funkce [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ fundef(f); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Ekvivalentní způsob zápisu pomocí define [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ define(g(x), x^3); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ g(3); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ functions; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ solve(f(x)=9,x); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Rozdíl mezi operatorem := a funkcí define [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ f1(x):=print(x)$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(f2(x), print(x))$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] V případě ":=" zůstávají obě strany nevyhodnoceny. V případě použití define je pravá strana vyhodnocena. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ fundef(f1); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ fundef(f2); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ f1(5); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ f2(5); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ f(x):=x^3; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ fp(x):=diff(f(x),x); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ fp(1); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Chybové hlášení je vyvoláno operací diff(f(1),1), nejdříve se provede substituce hodnoty za proměnnou a teprve poté výpočet derivace. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ define(fd(x), diff(f(x), x)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ fd(1); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Funkce více proměnných [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ f(x,y):=x^3-3*x*y^2; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ f(3,2); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Definování funkce jako posloupnosti výrazů [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ f(x):= (a: x^2+4, b: x^3+3*x, 2/a+b/a+b^2); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ f(t); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ f(2); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ f(x):= (a: x^2+4, b: x^3+3*x, ratsimp(2/a+b/a+b^2)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ f(t); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ unit_step(1);unit_step(0);unit_step(-1); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ wxplot2d(unit_step(x),[x,-2,2],[y,-1,2]); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Definování po částech spojité funkce [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ f1(x):=(if x<1 then -1 elseif x=1 then 0 else 1); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ wxplot2d(f1(x),[x,-1,2],[y,-2,2]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ f1(%pi); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ sgn(n):=(if integerp(n)=true then (-1)^n else print(n, "neni integer")); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ sgn(%pi); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ sgn(4); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Rekurzivní definice [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ L(n):=(if n=1 then 1 elseif n=2 then 3 else L(n-1)+L(n-2))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ L(20); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ trace(L); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ L(4); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ untrace(L); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ L[n]:=(if n=1 then 1 elseif n=2 then 3 else L[n-1]+L[n-2])$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ L[20]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ arrays; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ arrayinfo(L); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ showtime:true$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ L(21); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ L[21]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ showtime:false$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Spočtené hodnoty jsou ukládány do pole a v případě potřeby nejsou opětně počítány. Pro výpočet L[21] je tedy potřeba jen jeden krok. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ kill(all); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Vytvoření funkce z výrazu [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ vzorec:(b^2*x^2*sin(b*x)-2*sin(b*x)+2*b*x*cos(b*x)*a*t)/b^3; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(F(x,t), vzorec); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ F(0,1);F(%pi/b,5); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Operace s funkcemi [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ f(x):=log(x)+1;g(y):=exp(y)-1; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ f(z)+g(z); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ f(z)*g(z); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ f(g(z)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ g(f(z)); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Použití anonymní funkce [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ kill(all); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ functions; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ f : lambda([x], x^2); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ f(a); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ f(2); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ functions; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ map(f, a+b+c); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ map(lambda([x], x^2), a+b+c); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ map(lambda([x], x^2), [1,2,3]); /* [wxMaxima: input end ] */ /* [wxMaxima: section start ] Rovnice [wxMaxima: section end ] */ /* [wxMaxima: input start ] */ eqn:(x-1)*(x^2+x+1); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ sol:solve(eqn,x); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Pokud rovnice obsahuje pouze jednu proměnnou, nemusíme druhý parametr zadávat. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ sol: solve(eqn); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ sol[1];sol[2]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(expand(eqn), sol[1]);ev(expand(eqn), sol[2]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ rov: x^3 - 4*x^2 + 6*x - 4 = 0; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ solve(rov); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Pouze reálná řešení [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ algsys([rov],[x]), realonly:true; /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Rovnice s parametrem [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ eqn:x^3+2*a*x^2+a*x=1; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ solve(eqn,x); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Řešení nerovnic [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ load(solve_rat_ineq); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ solve_rat_ineq(x^3+4*x^2+2*x-1>0); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Soustavy rovnic [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ s:solve([x+2*y=3, y+1/x=1], [x,y]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev([x+2*y=3, y+1/x=1],s[1]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ solve([y^2+1=x,x+2=y], [x,y]); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Příkaz linsolve slouží k řešení lineárních rovnic a jejich soustav [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ linsolve([y+x=1,x-2=3],[y,x]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ solve(sin(x)=1/2,x); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ eqn :product(x-k,k,1,110); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ solve(eqn,x); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ eqn:x+x^(1/3)=-2; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ solve(eqn, x); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Příliš mnoho řešení [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ eqn :sin(x)^3 -13/2*sin(x)^2 + 11*sin(x) = 4; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ solve(eqn,x); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ solve(eqn,sin(x)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ solve(sin(x)=1/2,x); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ r1:(x-1)^2/(x^2-1)=0; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ solve(r1,x); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(r1,x=1); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Numerické řešení [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ r:x^7-2*x^6-4*x^5-x^3+x^2+6*x+4; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ solve(r); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ if numer#false then numer:false else numer:true; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ solve(r); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Příkaz find_root slouží pro numerické řešení rovnic. První dva parametry jsou stejné jako u příkazu solve, druhé dva určují krajní body intervalu, na kterém rovnici řešíme. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ find_root(r,x,-2,0); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ find_root(r,x,0,2); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ find_root(r,x,2,4); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ allroots(r); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ realroots(r); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ load(mnewton); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ mnewton(r,x,2); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ mnewton(sin(x),x,0); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ mnewton(sin(x),x,3); /* [wxMaxima: input end ] */ /* Maxima can't load/batch files which end with a comment! */ "Created with wxMaxima"$