Polynomy a racionální funkce
1 Polynomy
| (%i16) | p1:-3*x+7*x^2-3*x^3+7*x^4; |
| (%i17) | polynomialp(p1,[x]); |
| (%i18) | coeff(p1,x,4); |
| (%i19) | coeff(p1,x); |
| (%i20) | load(powers)$ |
| (%i21) | powers(p1,x); |
1.1 Sčítání a násobení polynomů
| (%i22) | p2:5*x^5+3*x^3+x^2-2*x+1; |
| (%i23) | 2*p1-3*p2+3; |
| (%i24) | expand(%); |
| (%i25) | 2*p1-3*p2+3, expand; |
| (%i26) | p1*p2; |
| (%i27) | expand(%); |
Maxima neprovádí roznásobení automaticky.
| (%i28) | (3*x+5)^10; |
| (%i29) | expand(%); |
| (%i30) | expr:(x+1)^2*(y+1)^3; |
| (%i31) | expand(expr); |
| (%i32) | expand(expr,2); |
| (%i33) | expr:(x+1)^-2*(y+1)^3; |
expand(expr,p,n) provede roznásobení jen u členů, jejichž mocniny jsou od -n do p.
| (%i34) | expand(expr,2,2); |
Členy polynomu jsou automaticky setříděny sestupně vzhledem ke stupni.
1.2 Dělení se zbytkem, největší společný dělitel
| (%i35) | q : quotient(p2,p1); |
| (%i36) | r : remainder(p2,p1); |
| (%i37) | is (p2=expand(q*p1+r)); |
| (%i38) | divide(p2,p1); |
| (%i39) | gcd(p2,p1); |
| (%i40) | pol:expand(p2*p1); |
| (%i41) | factor(pol); |
gfactor pracuje s oborem komplexních čísel
| (%i42) | gfactor(pol); |
| (%i43) | p:x^2+1; |
| (%i44) | factor(p); |
| (%i45) | gfactor(p); |
| (%i46) | pol:8*x^3-12*x; |
| (%i47) | factor(pol); |
| (%i48) | grind; |
1.3 Polynomy více proměnných
| (%i49) |
pol:6*x*y^5+12*y^4+14*y^3*x^3 -15*x^2*y^3 + 9*x^3*y^2 - 30*x*y^2 - 35*x^4*y + 18*y*x^2 +21*x^5; |
| (%i50) | ordergreat(x,y); |
| (%i51) |
6*x*y^5+12*y^4+14*y^3*x^3 -15*x^2*y^3 + 9*x^3*y^2 - 30*x*y^2 - 35*x^4*y + 18*y*x^2 +21*x^5; |
| (%i52) | unorder(); |
| (%i53) | factor(pol); |
| (%i54) | collectterms(pol, x); |
| (%i55) | collectterms(pol,y); |
2 Racionální funkce
| (%i56) | r:(x^2+3*x+2)/ (x^2+5*x+6); |
Maxima neprovádí zjednodušení automaticky.
| (%i57) | num(r);denom(r); |
| (%i59) | rat(r); |
| (%i60) | (x^(100)-1)/(x-1); |
| (%i61) | rat(%); |
| (%i62) | f:161*y^3+333*x*y^2+184*y^2+162*x^2*y+144*x*y+77*y+99*x+88$ |
| (%i63) | g:49*y^2+28*x^2*y+63*x*y+147*y+36*x^3+32*x^2+117*x+104$ |
| (%i64) | racfce:f/g; |
| (%i65) | rat(racfce); |
Rozklad na parciální zlomky.
| (%i66) | q:(x^3+x^2-x+1)/p1; |
| (%i67) | partfrac(q, x); |
| (%i68) | 1/(x^4-5*x^2+6); |
| (%i69) | partfrac(%, x); |
2.1 Příklady na manipulaci s racionálními funkcemi
| (%i70) | power:(x+1)^(-2); |
| (%i71) | expand(power); |
Narozdíl od Maplu se expandují í záporné mocniny.
| (%i72) | r1:(x+1)^2/((x^2+x)*x); |
| (%i73) | expand(r1); |
| (%i74) | r2:expand(num(r1))/expand(denom(r1)); |
| (%i75) | factor(r2); |
| (%i76) | (x-1)*(x+2)/((x+1)*x)+(x-1)/(1+x)^2; |
| (%i77) | rat(%); |
Expand použité na racionální funkci ji převede na součet zlomků.
| (%i78) | expand((x^2+2*x+2)/(x^2-2*x+2)); |
| (%i79) | ratsimp(%); |
3 Zjednodušování výrazů
Příkazy rat, ratsimp a radcan slouží ke zjednodušování výrazů.
| (%i80) | x+y/(x+2)+ z/(x^2+4); |
Příkaz ratsimp aplikovaný na součet zlomků provede převod na společného
jmenovatele.
| (%i81) | ratsimp(%); |
Při aplikaci na polynom upraví polynom do tzv. "collected form".
| (%i82) | ratsimp(x*(x+2)+(x-3)*(x+4)); |
Pro úpravy výrazů s obecnými exponenty, logaritmy a odmocninami používámé příkaz radcan.
| (%i83) | expr : (exp(x)-1)/(exp(x/2)+1); |
| (%i84) | %, ratsimp; |
| (%i85) | %, radcan; |
| (%i86) | logexpr : log((x+2)*(x-2)) + log(x); |
| (%i87) | logexpr, ratsimp; |
| (%i88) | logexpr, radcan; |
| (%i89) | %, logcontract; |
| (%i90) | logexpr, logcontract; |
| (%i91) | (log(x+x^2)-log(x))^n/(log(1+x)^(n/2)); |
| (%i92) | radcan(%); |
Úpravy výrazů s odmocninami
| (%i93) | sqrt(2)*sqrt(3), expand; |
| (%i94) | sqrt(2)*sqrt(3), radcan; |
| (%i95) | sqrt(2)*sqrt(3), rootscontract; |
| (%i96) | sqrt(6)*sqrt(3); |
| (%i97) | sqrt(6)*sqrt(3), radcan; |
| (%i98) | sqrt(6)/sqrt(3); |
| (%i99) | sqrt(6)/sqrt(3), radcan; |
Systémová proměnná radexpand může být nastavena na hodnotu true (implicitní nastavení),
all nebo false. Nastavení určuje způsob automatického zjednodušování výrazů s odmocninami.
V implictním případě se sqrt(x^2) zjednoduší na abs(x). Maxima implicitně pracuje
se všemi symboly jako s reálnými čísly. To můžeme změnit nastavením proměnné domain
na hodnotu complex.
| (%i100) | sqrt(x^2); |
| (%i101) | domain : complex$ |
| (%i102) | sqrt(x^2); |
| (%i103) | domain : real$ |
| (%i104) | radexpand; |
| (%i105) | sqrt(16*x^2); |
| (%i106) | radexpand: all$ |
| (%i107) | sqrt(16*x^2); |
| (%i108) | radexpand : false; |
| (%i109) | sqrt(16*x^2); |
| (%i110) | (x+2*sqrt(x)+1)/(1+sqrt(x)); |
| (%i111) | radcan(%); |
3.1 Úpravy výrazů s goniometrickými funkcemi
| (%i112) | trigsimp(tan(x)); |
| (%i113) | sin(x+y), trigexpand; |
| (%i114) | x + 3*cos(x)^2 - sin(x)^2, trigreduce; |
| (%i115) | trigrat(sin(3*a)/sin(a+%pi/3)); |
| (%i116) | rtt(e):= radcan (trigrat (trigsimp (e))); |
Manuál programu Maxima doporučuje při zjednodušování výrazů s goniometrickými
funkcemi postupně aplikovat příkazy trigreduce, ratsimp a radcan.
| (%i117) | e : sin(x+y), trigexpand; |
| (%i118) | rtt(e); |
| (%i119) | e : tan(x+y), trigexpand; |
| (%i120) | rtt(e); |
| (%i121) | tan(%pi/8); |
| (%i122) | load(spangl); |
| (%i123) | tan(%pi/8); |